UT2004 Interim Security Mutator
Release 1.11 (c) 2002-2004, Epic Games
UTSecure is a simple mutator that designed to perform a more detailed check of
various packages.  Its goal is to provide additional protection in between
normal patch cycles by allowing server admins to perform more rigorous checking
of given files. 
This interim release targets the following cheats:
    * Skin hacks and external Aimbots that use them
    * Generic checking of any UT file
    * Defeats the current public hacks
    * Closes all known holes in the GUI and Extended Console
    * Default checking of the player skins and UPL files
    * Fixed MAC Support
 The .zip that you downloaded contains 4 files.
    * UTSecure2K4-111.u the main package file.
    * UTSecure2K4-111.int is a needed system file
    * UTSecure2K4-111.ucl is a needed system file
    * UTSecure2K4.ini is the default ini file
    * UTSecure2K4Help.htmis this file
Step 1: You should unzip the archive directly in to your root UT2004 directory
with "expand folders" turned on.  This will place the first 4 files in your
\System subdirectory and the last in \Help.
Step 2: Open your UT2004.ini (or whatever configuration INI you are using).
Step 3: Find the section [Engine.GameEngine] and add the following two lines
anywhere in that section.
You should remove any references to older versions of UTSecure at this time.  
Step 4:Adjust any settings in the UTSecure2K4.ini file
The following options need to go under the enter [UTSecure2K4-111.UTChecker] in
your UTSecure2K4.ini file.
The first configuration option is the Checks data set.  I have combined all of
the important data for each file in to 1 entry in the ini.  The format for the
entry is seen here:
Checks=(FName="",MD5="",MD5Type=x,GUID="",MaxGenerations=x, Optional=True|False)
Notice that each sub-field is separated by a comma and mixes string and numeric
data. Additionally, the GUID and MaxGenerations sub-fields are only relevant
when MD5Type is 2 and can be excluded in all other cases.  You can refer to the
defaults for actual examples.  The available sub-fields are:
|                             |The FName sub-field defines which files |
|                             |you wish to check.  How this field is   |
|                             |handled is dependant on the MD5Type sub-|
|                             |field below.  If you are doing a        |
|                             |QuickMD5, then you only need to include |
|     FName=     |the package name (ex: PlayerSkins, not  |
|      FName=       |PlayerSkins.utx).  If you are doing a   |
|                             |Full MD5, then you need to include the  |
|                             |full filename and path (if needed).     |
|                             |Paths are relative to your \System      |
|                             |directory and can be relative or        |
|                             |This is the md5 that UTSecure will      |
|                             |expect to see for this file.  There is a|
|                             |considerable difference between a Quick |
|                             |MD5 and a Full MD5 so make sure you add |
|     MD5=<16digit hash>      |the appropriate one depending on the    |
|                             |MD5Type sub-field.  UTSecure1.11        |
|                             |supports multiple MD5 hashes per GUID.  |
|                             |This is needed for MAC support.  See the|
|                             |This sub-field determines what type of  |
|                             |MD5 check to perform.                   |
|                             |    * 0 - Quick MD5.                    |
|                             |    * 2 - Full MD5                      |
|                             |What's the difference?  QuickMD5 checks |
|        MD5Type=<0|2>        |are much faster as it utilizes the fact |
|                             |that the package is already preloaded by|
|                             |the game.  The drawbacks are (A) it only|
|                             |works on UT2004 packages and (B) the    |
|                             |package must be loaded by the game.     |
|                             |Full MD5's can be performed on any file |
|                             |This is a new sub-field that in the case|
|                             |of full MD5's will be used to perform an|
|            GUID             |alternate check of a file in case that  |
|                             |file is not found.  UTSecure will use   |
|                             |the GUID to browse the \Cache directory |
|                             |This is the maximum number of           |
|                             |generations of the file to check for.   |
|                             |It works in conjunction with GUID when a|
|       MaxGenerations        |file is not found.  UTSecure will begin |
|                             |looking for the GUID-MaxGeneration.uxx  |
|                             |and count backwards to 0 to maintain    |
|                             |compatibility.  Most times this number  |
|                             |If this value is set to true and the    |
|                             |file is either not loaded (in the case  |
|          Optional           |of types 0s) or not found (in the case  |
|                             |of type 2s) then it will not be         |
The following options are considered global.
|                            |The what to do option determines what your  |
|                            |server will do if it detects an modified    |
|                            |file.  The available options are:           |
|                            |    * 0 - Nothing, just log the             |
|                            |      transgression                         |
|       WhatToDo=<0-3>       |    * 1 - Log the transgression and kick the|
|                            |      user                                  |
|                            |    * 2 - Log and kick ban the user for just|
|                            |      this session                          |
|                            |    * 3 - Log and kick ban the user for     |
|                            |      good.                                 |
|                            |This option determins now how the mutator   |
|       TimeoutSeconds       |will wait before it considers the whole     |
|                            |system to have timed out. (ie: not          |
|                            |If this option is true, when a player       |
|       bKickOnTimeout       |timesout, he will be kicked from your       |
|                            |If set to true, UTSecure will watch for any |
|       bTrackPackages       |additional packages to be loaded on the     |
|                            |client.  This will detect and "load after   |
|                            |When set to true, UTSecure will attempt to  |
|       bUseCustomLog        |send most of it's log output to the log file|
|                            |Holds the name of the log file to output    |
|        LogFileName         |to.  This file gets stored in the \UserLogs |
Obtaining an MD5 of a file
There are two different types of MD5's that can be generated.  QuickMD5 rely on
the fact that the package is already loaded.  This is a very fast MD5 that's
great for large files (like PlayerSkins.utx).  The downside is it's only
available for actual UT2K4 pacakges.  Full MD5's generation a full fledge MD5
hash of any file. You can obtain a Full MD5 of any file by using the following
ucc commandlet:
UCC mastermd5 -f 
This will give you the 16 digit MD5 you need for the MD5 field above.  Please
keep in mind that only files that will not change can be checked using
UTSecure.  Do not attempt to check core .U files (they are already well
You can obtain a quick MD5 of any package by using the ucc commandlet:
UCC mastermd5 -q 
Rember that you do not need to include the path or file extension for quick
md5's as UT2K4 will uses it's internal package loading code to open it.

[download file as is] (last changed: Thu, 31 Mar 2005 01:57:07 -0600)