Description
Anti TCC is a mutator designed to perform a more detailed check of various
packages and clientside settings. Its main goal in UT2003 was to detect SET
command cheats, the so-called temporary console commands or "TCCs".
This type of check is not implemented in Anti TCC for UT2004 though, since Epic
promissed to turn on the masterserver feature which keeps out SET command users.
Targets
This release targets the following cheats and potentially unwanted actions:
- Skin hacks and external aimbots and triggerbots that use them
- Generic checking of any UT file
- Fast Weapon Switch using the ThrowWeapon command
- Clientsidely modified interface classes
Installation
The ZIP archive you downloaded contains 8 files:
- AntiTCC112Lite.u – The main package file for Anti TCC.
- AntiTCC112Lite.ucl – Tells UT2004 about the Anti TCC mutator.
- AntiTCCGUIDs.u – This file contains the Anti TCC's package GUID
in case the server admin forgets to add the default INI entries.
- AntiTCC112LiteDefINI.txt – Contains the default INI values.
You should add these values to your UT2004.ini file.
- AntiTCC112LiteDefINI_League.txt – Contains recommended INI values for leagues.
Simple Log is disabled, all checks are run and transgressions result in a kick.
- AntiTCC112LiteDefINI_Lite.txt – Contains a lightweight configuration of
Anti TCC for public servers that want to allow non-critical SET command tweaks.
- AntiTCC112LiteDefINI_Silent.txt – Contains an example silent mode configuration.
Again this is meant for public servers. All tests are run, but transgressions are only
logged without a message or kick.
- AntiTCC112Lite.htm – This file.
- Step 1
- You should unzip the archive directly in to your root UT2004
directory with "expand folders" turned on.
This will place all files in your UT2004\System subdirectory except for
the last two, which will be placed in UT2004\Help.
- Step 2
- Open the UT2004\System\UT2004.ini, UT2004\System\Server.ini
or whatever main configuration file your server uses.
- Step 3
- Find the section [Engine.GameEngine] and add the
following two lines anywhere in that section:
ServerPackages=AntiTCC112Lite
ServerActors=AntiTCC112Lite.AntiTCCServerActor
The ServerActors entry automatically loads Anti TCC. If you don't want that,
don't add it and manually start the Anti TCC mutator (AntiTCC112Lite.MutAntiTCC).
IMPORTANT: You have to remove the UTSecureServerActor and also any
references to older versions of UTSecure or AntiTCC. Anti TCC and UTSecure will
not work together and the Anti TCC server actor will try to get rid of
the UTSecure server actor.
- Step 4
- Add the changes found in AntiTCC112LiteDefINI.txt (or one of the other
default configurations included in the Anti TCC ZIP archive) to the end of your
INI file.
Note: You shouldn't add UPL or UCL files to Anti TCC's list of file checks.
The contents of those files is checked seperately through Anti TCC's skin checks.
Make sure Anti TCC works properly by connecting to your server. The client
console should display something similar to the following example.
==================================================
Anti TCC v1.12Lite build 2004-03-26 21:56
Copyright (c) 2003-2004 by Wormbo
==================================================
* Your unique ID is [ 01234567-89ABCDEF-01234567-89ABCDEF ]
* Player ID logging is enabled
Use 'Whois' to view other players' alias names.
* Check Timeout: 60 seconds
* Reactions to insecurities: Kick
* Integrity check passed
* Verified map DM-Antalus
* Verified package HumanMaleA
* Verified package HumanFemaleA
* Verified package Jugg
* Verified package Aliens
* Verified package Bot
* Verified package SkaarjAnims
* Verified package XanRobots
* Verified package ThunderCrash
* Verified package Hellions
* Verified package NewNightmare
* Verified package PlayerSkins
* Verified package UT2004PlayerSkins
* Verified package DemoPlayerSkins
* Verified package BrightPlayerSkins
* Verified file AntiTCC112Lite.u
* Verifying skins...
* Verified skins
You have been validated successfully.
Everything Anti TCC displays in the client's console is also written to the
file AntiTCC_ClientConsoleLog.log in the client's UT2004\UserLogs directory.
You should check the server's log file (usually ucc.log or server.log) for
Anti TCC warnings. Anti TCC will tell you if something went wrong or whether
your configuration might cause problems.
Console Commands
Anti TCC offers some new console commands. They only work ingame and not
from the webadmin interface.
- Mutate AntiTCC Version
- This command displays the Anti TCC version on the client. If you run Anti TCC
without mods that replace the PlayerController this command can be shortened to
Ver instead of Mutate AntiTCC Version.
- Mutate AntiTCC ShowIDs
- This command lists the ID hashes of all players connected to the server.
If you run Anti TCC without mods that replace the PlayerController this command
can be shortened to ShowIDs.
You can disable this command for normal (non-admin) players by setting the
bClientsMayGetIDs config property to False. (see Options below)
Admins will get the player IDs and their IP addresses.
- Mutate AntiTCC Whois player name
- This command lists a connected player's ID and other names that player
has used on this server since ID logging started. Anti TCC will complete
partial names, so you don't have to specify the player's full name.
If you run Anti TCC without mods that replace the PlayerController this command
can be shortened to Whois.
You can prevent this command from displaying alias names for (non-admin) players
by setting the bClientsMayGetNames config property to False. You can disable
displaying player IDs through this command by setting the bClientsMayGetIDs
config property to False. (see Options below)
Admins will always see ID and alias names, as well as the player's IP address.
The Whois command requires player ID logging to be enabled.
- Mutate AntiTCC Whowas player name or ID
- This command lists the player IDs who used a specific name and their alias
names. When an ID is specified instead of a player name, that ID's alias names
are displayed.
If you run Anti TCC without mods that replace the PlayerController this command
can be shortened to Whowas.
You can disable this command for (non-admin) players by setting the
bClientsMayGetNames or the bClientsMayGetIDs config property to
False. (see Options below)
The Whowas command requires player ID logging to be enabled.
- Mutate AntiTCC SaveLog
- This admin-only command is mainly meant for debugging purposes. It forces
all custom log data to be written to disk.
You can and should use the LogFileSaveInterval config property to
automatically do this. (see Options below)
- Mutate AntiTCC SimpleLog
- This admin-only command enables the Simple Log Mode. (see Options below)
- Mutate AntiTCC NoSimpleLog
- This admin-only command disables the Simple Log Mode. (see Options below)
Options
The following options need to go under the enter [AntiTCC112Lite.AntiTCCSecurity]
in your UT2004.ini file (or whichever ini file configures your server).
Checks |
The first configuration option is the
Checks data set. All of the important data is combined into one entry for
each file to check.
The format for the entry is seen here:
Checks=(FName="",MD5="",MD5Type=0|2,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 in AntiTCC112LiteDefINI.txt for actual
examples.
IMPORTANT: Make sure there are no whitespaces in the Checks
entries.
The available sub-fields are:
- FName
- 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 the package name (e.g. PlayerSkins, not PlayerSkins.utx).
If you are doing a Full MD5, then you need to include the full
filename and also the path to the file if it's not in the UT2004\System
directory. If you specify a path it should be relative to UT2004's
System directory, e.g. ..\Textures\BrightPlayerSkins.utx.
Please keep in mind that not everyone installed the game on their
first harddrive and neither Linux nor Mac systems use drive letters,
so using absolute paths or paths outside the UT2004 directory generally
is a bad idea.
You are free to use slashes or backslashes for paths. Both will work
equally on all clients.
- MD5
- This is the MD5 that Anti TCC 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 the
appropriate one depending on the MD5Type sub-field.
MD5 hashes are always 32-digit hexadecimal numbers with a-f in
lowercase with the exception of the value "not
allowed", which means the file or package is not allowed.
In this case the Optional parameter must be set to True.
- MD5Type
- This sub-field determines what type of MD5 check to
perform.
Possible values are:
- 0
- QuickMD5 checks are much faster as it utilizes the fact that the
package is already preloaded by the game. The drawbacks are it only
works on UT2004 packages and the package must be loaded by the game.
- 2
- FullMD5 checks can be performed on any file but tend to be slower.
IMPORTANT: Don't perform checks on UT2004's own .U or .DLL
files or on xPlayersL1.upl or Packages.md5. These files are likely
to change when patches, custom models or mods are installed.
- GUID
- This sub-field will be used in the case of a FullMD5 to perform an
alternate check of a file in case that file is not found. Anti TCC will
use the GUID and MaxGenerations to browse the player's
cache directory looking for matches.
GUIDs are always 32-digit hexadecimal numbers with A-F in UPPERCASE.
- MaxGenerations
- This is the maximum number of generations of the file
to check for. It works in conjunction with GUID when a file
is not found. Anti TCC will begin looking for the
GUID-MaxGeneration.uxx and count backwards to 0 to maintain
compatibility. Most times this number will be set to 1. Always set this
higher than 0 if you also specified a GUID.
- Optional
- If this value is set to True and the file is either not loaded
(in the case of MD5Type 0) or not found (in the case of MD5Type 2) then
it will not be considered a bad file.
Important: Always set this to True when using "not
allowed" as the MD5.
|
AllowedConsoleClasses
AllowedGUIControllerClasses |
The AllowedConsoleClasses specifies the console
classes clients are allowed to use and the AllowedGUIControllerClasses does the
same for the client's GUIController class. If you want to specify more than one allowed
class, just add multiple AllowedConsoleClasses=... or AllowedGUIControllerClasses=...
lines, each with exactly one class name.
Usually you will want to use only AllowedConsoleClasses=xInterface.ExtendedConsole
and AllowedGUIControllerClasses=GUI2K4.UT2K4GUIController since those are the only
console and GUIController classes UT2004 uses with.
|
The following options need to go under the enter [AntiTCC112Lite.Settings]
in your UT2004.ini file (or whichever ini file configures your server).
They can also be changed from the web admin interface.
WhatToDo |
The WhatToDo option determines what your server will
do if it detects an insecurity.
The available options are:
- LogOnly
- Nothing, just log the transgression
- Message
- Log the transgression and display a
message (if allowed)
- Kick
- Log the transgression and kick the user
- TempBan
- Log and kick ban the user for ten minutes or until
the next map change (whichever happens first)
- SessionBan
- Log and kick ban the user until the next map change
- PermanentBan
- Log and kick ban the user for good.
|
TimeoutSeconds
bKickOnTimeout |
TimeoutSeconds determins how long the
mutator will wait before it considers the whole system to have
timed out, i.e. not functioning properly. Values lower than 10
seconds are not allowed. The recommended minimum value is 30 seconds.
If bKickOnTimeout is true, when a player times out, he or
she will be kicked from the server.
NOTE: A timeout doesn't imply cheating. It is usually
caused by lag.
|
bCheckMapMD5 |
If set to True, Anti TCC will automatically
do a quick MD5 check of the map played before performing other file checks.
|
bSelfIntegrityChecks |
If set to True, Anti TCC will perform checks to ensure
its various lists for clientside checks aren't modified.
(This check was always enabled in earlier versions.)
|
bCheckSkins |
If set to True, Anti TCC will perform checks to ensure
the player skins listed in XPlayersL1.upl are not modified.
(This check was always enabled in earlier versions.)
|
bShowInServerDetails |
Tells Anti TCC whether it should show up in the server details.
|
bLogClientPackages |
Whether a list of all packages loaded on the client should
be logged in the server's log file.
This option probably is more useful in league matches than on public servers.
|
bClientsMayGetIDs
bClientsMayGetNames |
Enable or disable Anti TCC's ShowIDs
and Whois console commands respectively.
Note: This console command is only available when the PlayerControllers have
been secured. Some mods like TTM or certain custom gametypes prevent this and
clients have to use the Mutate AntiTCC ShowIDs command instead.
|
bMessageBeep |
Enables or disables the beep sound played when Anti TCC
detects illegal files, settings or activities on a client.
|
bAllowClientConsoleMessages |
Anti TCC displays messages in the
client's console and log file about security checks. This option can
disable the console messages.
|
bBroadcastConsoleErrorMessages |
Enables or disables Anti TCC's red console warning
messages stating the reason for a kick. This will not display a
client console warning when bAllowClientConsoleMessages is
disabled, but the warning will still be logged in the client's log
file.
|
bBroadcastClientScreenMessages |
Enables or disables Anti TCC's a red
warning message in the center of all clients screens when a client
is kicked by Anti TCC.
|
bUseCustomLog |
When set to true, Anti TCC will send
most of it's log output to the log file specified in the next variable.
|
LogFileName |
Holds the name of the log file to
output to. This file gets stored in the \UserLogs directory and the
file extension ".log" is automatically appended.
You can use one or more of the following placeholders in the filename:
- %y
- Year (four digits)
- %m
- Month (two digits)
- %d
- Day (two digits)
- %h
- Hour (two digits)
- %n
- Minute (two digits)
- %s
- Second (two digits)
- %i
- Server IP
- %p
- Server port
|
LogFileTimestampFormat |
The timestamp format to be used in the custom
log file. This option has no effect when the custom log file is disabled.
You can use the following placeholders in the timestamp:
- yyyy
- Year (four digits)
- yy
- Year (two digits)
- mm
- Month (two digits)
- dd
- Day (two digits)
- hh
- Hour (24 hours format, two digits)
- nn
- Minute (two digits)
- ss
- Second (two digits)
|
LogFileSaveInterval |
Values greater than 0 will cause Anti TCC to close and re-open
the custom log file once in a while to force all log data to be written to disk.
This option is useful when dealing with server crashes possibly related to
cheats and other exploits because without it the custom log would only be saved
when switching maps.
|
bSimpleLogMode |
When set to true, Anti TCC will only
create the custom log file when an insecurity or important other
problem is detected. The time placeholders of the log file name will
use the map startup time, but the first logged line will show the
time when the log file was actually opened.
NOTE: Enabling this option will turn off the bLogClientPackages
option.
|
SavePlayerIDsTo |
Set this to PlayerIDsINI or PlayerIDsxINI
(where x is any number between including 1 and 9) to log all players'
IDs to PlayerIDsx.ini. All other values will disable player ID logging
and also Anti TCC's Whois command, which requires this feature.
|
Potentially Asked Questions
- Do I still need to install UTSecure?
- No. Anti TCC completely replaces UTSecure since version 1.08. Versions
prior to 1.08 only required the UTSecure211.u file to be placed in the server's
System directory and in the ServerPackages, but UTSecure had to be disabled in
those versions as well for Anti TCC to run without any problems.
When you try to run both mutators Anti TCC will try to disable UTSecure's
ServerActor and the UTSecure mutator.
- I installed Anti TCC but it doesn't seem to start. What's wrong?
- Anti TCC will only run on dedicated servers. You can't use it in Instant Action
or on a listen server.
- Why is this only an Anti TCC Lite?
- Anti TCC v1.12 Lite is a stripped down UT2004 version of the (upcoming)
Anti TCC v1.12 for UT2003. Later there will probably be a completely new
Anti TCC v2.x for UT2004.
- There are many players with the same ID, is that a bug?
- UT2004 assigns a special player ID to players who used a SET command to change
certain things. This ID can indicate the use so-called TCCs (temporary console
commands) and can be used to block players who used SET commands to modify the
appearance of ingame objects.
- How do I find out the MD5 and GUID values for the Checks=... list?
- 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 UT2004 packages. Full MD5s generate a full fledge MD5 hash of any file.
You can obtain a Full MD5 (and the GUID for Unreal packages) of any file by using
the following UCC commandlet:
UCC mastermd5 -f <filename>
This will give you the 32 digit MD5 you need for the MD5 field above. Please keep
in mind that only files that will not change can be checked using Anti TCC. Do not
attempt to check core .U files (they are already protected and have a different
MD5 in every version).
You can obtain a quick MD5 of any package by using the UCC commandlet:
UCC mastermd5 -q <packagename>
Rember that you do not need to include the path or file extension for quick MD5's
as UT2004 will use its internal package loading code to open it.
IMPORTANT NOTE: You can only obtain the MD5 using a UT2004 patch released
after 10/27/02.
- How can I prevent a client from having a certain file?
- Due to the nature of AntiTCC's MD5 checks you can prevent clients from connecting
when they have with certain files. To do this, just create a new Checks entry like this:
Checks=(FName="OpenGL32.dll",MD5="file not allowed",MD5Type=2,Optional=True)
This will disallow the file OpenGL32.dll in the \System directory. Of course
you can also specify absolute or relative paths in FName. It is important that
you use MD5Type=2 and Optional=True.
Note: A lot of cheat files do not need to have a specific name to work or
can be put in other directories, making a check like this useless.
- Can I put Anti TCC in some kind of "silent mode"?
- Anti TCC can be hidden almost completely from players. Have a look at the
file AntiTCC112LiteDefINI_Silent.txt that came with Anti TCC for an example.
In this kind of "silent mode" the mutator will not show up in the
server details or send messages about insecurities to clients if WhatToDo is
set to LogOnly. Anti TCC's client status messages and console commands are
disabled by setting the bAllowClientConsoleMessages to false. The console
commands are still available to players logged in as admins.
- What does the "Security ID" in the log file mean?
- The Security ID is a unique number associated with the Anti TCC security
actors. This number is increased by one every time an AntiTCCSecurity actor is
spawned and will be reset when the map changes.
A player keeps the same Security ID until he or she disconnects. When the player
reconnects a new security actor is spawned and a new Security ID is assigned.
- What does a specific Anti TCC message mean?
- Descriptions of Anti TCC's kick messages and information on what causes them
and how to avoid them can be found in the
Anti TCC FAQ.
Anti TCC Commandlets
Anti TCC comes with a commandlet for working with the player ID logs. I suggest
installing Anti TCC on your client and copying your server's PlayerIDs.ini to your
own UT2004\System directory to make things easier.
To run one of Anti TCC's commandlets, just type the corresponding command at the
commandline, in a DOS box, in Windows' Run dislog box, etc.
Log File Basics
Anti TCC's player ID log files are simple ini files with a list of IDs and the
names used by them. Multiple versions of Anti TCC can store IDs in the same ini
file, but they will only be able to read their own logs from them unless you merge
logs.
Generally an Anti TCC player ID log looks like this:
[AntiTCC112Lite.PlayerIDsINI]
Player=(Id="0123456789abcdef0123456789abcdef",Names=("foo","bar"),LastSeen="disconnecting at 2004-02-01 13:37")
Player=(Id="abcdef0123456789abcdef0123456789",Names=("Player","The_Real_Llama"),LastSeen="getting kicked at 2004-01-23 08:15)
Version 1.11 doesn't have the LastSeen=... part and says [AntiTCC111.PlayerIDsINI]
at the top, but otherwise the log file format is identical.
The PlayerIDsINI part in [AntiTCC112Lite.PlayerIDsINI] corresponds to the file name,
in this case PlayerIDs.ini. IDs logged in e.g. PlayerIDs3.ini would start with
[AntiTCC112Lite.PlayerIDs3INI].
To convert an older version's ID logs, simply change the AntiTCCxyz part to
AntiTCC112Lite and run the CleanUp command described further down. If you want to
combine multiple logs you don't need to clean them up before merging them.
Please note that UT2003 player IDs are useless in UT2004 and vice versa.
MergeLogs Command
The Anti TCC MergeLogs command combines all player ID logs (i.e. PlayerIDs.ini,
PlayerIDs1.ini, PlayerIDs2.ini, etc.) into a single log file.
- Syntax
- UCC AntiTCC MergeLogs [LogName=logfile]
- Parameters
- LogName=logfile
- Specifies the file the merged log should be saved to.
You can specify a number between 0 and 9 which corresponds to the files
PlayerIDs.ini, PlayerIDs1.ini, etc.
If left out, Anti TCC's SavePlayerIDsTo setting is used.
CleanUp Command
The Anti TCC CleanUp command merges duplicate IDs and removes empty or duplicate
names from log files. This commandlet is mainly intended for log files that have
been converted from Anti TCC v1.11, where a bug in the player ID logging feature
sometimes caused empty names to be logged.
- Syntax
- UCC AntiTCC CleanUp [LogName=logfile]
- Parameters
- LogName=logfile
- Specifies the log file to be cleaned up.
You can specify a number between 0 and 9 which corresponds to the files
PlayerIDs.ini, PlayerIDs1.ini, etc.
If left out, Anti TCC's default player IDs log file is cleaned up.
DuplicateLog Command
The Anti TCC DuplicateLog command copies a set of logged player IDs into one
or more other log files.
Important: The previous content of the log files specified will be lost!
- Syntax
- UCC AntiTCC DuplicateLog [All|number number...] [LogName=logfile]
- Parameters
- All
- Use the All parameter to copy the specified log to all other log files.
- number
- The number parameters can be used to copy the specified log to only to
the log files specified.
You can specify a number between 0 and 9 which corresponds to the files
PlayerIDs.ini, PlayerIDs1.ini, etc.
- LogName=logfile
- Specifies the log file to duplicate.
You can specify a number between 0 and 9 which corresponds to the files
PlayerIDs.ini, PlayerIDs1.ini, etc.
If left out, Anti TCC's default player IDs log file is used.
FindPlayer Command
The Anti TCC FindPlayer command lets you search for IDs and nicks in a player
ID log.
- Syntax
- UCC AntiTCC FindPlayer ID|name [LogName=logfile]
- Parameters
- ID
- A player ID written as 32-digit hexadecimal number. The commandlet will
display all alias names for this ID.
- name
- A player name. The commandlet will list all IDs with the alias names used by
them.
You can use the wildcards * (matches any number of characters) and ? (matches
exactly one character) anywhere in the player name. The string "d*hunter"
would match the nicks D-Hunter, duck_hunter and dOgHuNtEr, but not ID_hunter or deadhunt.
- LogName=logfile
- Specifies the log file you want to search in.
You can specify a number between 0 and 9 which corresponds to the files
PlayerIDs.ini, PlayerIDs1.ini, etc.
If left out, Anti TCC's SavePlayerIDsTo setting is used.