Code:
##############################################################################
# AnthChecker v1.37 #
# by )°DoE°(-AnthraX #
##############################################################################
1) What is it?
--------------
AnthChecker is an advanced unrealscript-based cross-platform packagechecker.
|| Please take a few minutes to read this document, it will spare you and me a lot
|| of trouble.
2) What does it do?
-------------------
AnthChecker will validate every client (including clients that run Linux/MacOS)
after they enter the server. Depending on the server's settings AnthChecker will:
* Perform selfchecks to prevent clients from redirecting/bypassing the checking routines
* Perform CRC (Type 1) checks on files that should be identical on the server and on the client (files like UTPure.u)
* Perform CRC (Type 2) checks to identify the client's skintextures and kick if they're hacked
* Perform MD5 checks to identify the client's renderdevice and kick if it's hacked
* Perform MD5 checks to identify the client's libraries and kick if they're hacked
* Scan for disallowed files
3) Installation
---------------
To install AnthChecker on your server:
1. Unzip the contents of this zip package in your server's system folder.
2. Open your server's unrealtournament.ini file and find the line that reads "[Engine.GameEngine]".
3. Add these lines under it:
ServerActors=AnthCheckerS_v137.ACActor
ServerPackages=AnthCheckerC_v137
4. Move to the end of your UT.ini file and add these lines
(you can find the explanation of the settings under 4) Settings):
[AnthCheckerS_v137.ACActor]
bKickUnknownRenderer=true
bKickUnknownLibrary=true
bKickUnknownSound=true
bKickUnknownSkin=true
bBroadCastJoin=true
bBroadCastIPs=false
bExternalNotify=false
bSelfCheck=true
bPureCheck=true
bEUTCheck=false
bSkinCheck=true
bSoundCheck=true
bShowConsoleMessages=true
TimeOut=30
CheckDelay=3.0
bReportCheats=True
bReceiveUpdates=True
Packages[0]=
Packages[1]=
Packages[2]=
Packages[3]=
Packages[4]=
Packages[5]=
Packages[6]=
Packages[7]=
Packages[8]=
Packages[9]=
bExternalLogs=true
LogPrefix=
LogPath=
ACLinkMode=2
ACDelay=5
5. Restart your server
4) Settings
-----------
You can easily change the AnthChecker settings by opening your server's ini file and changing
the lines you added at the end.
bKickUnknownRenderer : set to false if you don't want to kick clients with an unknown renderdevice
bKickUnknownLibrary : set to false if you don't want to kick clients with unknown libraries
bKickUnknownSound : set to false if you don't want to kick clients with unknown soundpackages
bKickUnknownSkin : set to false if you don't want to kick clients with unknown skinpackages
bBroadCastJoin : set to false if you don't want to broadcast every client's nickname/renderdevice/operating system after the validation
bBroadCastIPs : set to true if you want to add the client's IP's to the bBroadCastJoin messages
bExternalNotify : set to true if you want AnthChecker to send playerjoin reports to other mods (requires compatible mod)
bSelfCheck : set to false if you don't want to perform a crc check on the anthchecker client package
bPureCheck : set to false if you don't want to perform a crc check on the utpure package
bEUTCheck : set to true if you want to perform a crc check on the EUT package
bSkinCheck : set to false if you don't want to perform crc checks on the skintextures
bSoundCheck : set to false if you don't want to perform a crc check on the female2voice package
bShowConsoleMessages : set to false if you don't want to display what's going on in the client's console
bReceiveUpdates : set to false if you don't want to receive info about new renderdevices from the AnthChecker masterserver
bReportCheats : set to false if you don't want AnthChecker to report cheating attempts to the AnthChecker masterserver
TimeOut : ammount of time the client gets to finish the checks (in seconds)
CheckDelay : ammount of time between the playerjoin and the start of the checks (in seconds)
Packages[x] : you can manually add files to crc (type 1) check here
syntax: <file extension>,<filename>,<packagepercent (1-255)> (*)
bExternalLogs : set to false if you don't want to log AnthChecker's kicks to external files
LogPrefix : Prefix of the external logfiles (default: [AC])
LogPath : The path in which the external logfiles are stored (default: ../Logs/)
ACLinkMode : set to 1 if you want to delay the updatescheck
ACDelay : ammount of time before the updatescheck begins (in seconds, only needed if ACLinkMode=1)
!! Important !!: Due to the limitations of the unreal engine, you're not advised to manually add files.
If you do decide to do so, use a small packagepercent, UT will usually crash after crc checking
10Mb of data.
(*) if for example you want to perform a crc type 1 check on the 10 first bytes of every 255-byte block of CTF-Gauntlet.unr,
you'd have to add "unr,CTF-Gauntlet,10" (without the quotes)
5) History
----------
v1.37 (Public):
* [Changed] Removed an instruction in the HTTP Client that might have caused crashes on some linux servers
* [Added] Options ACLinkMode and ACDelay. These options can be used by those who experience problems with the auto-updates.
v1.36 (Internal):
* [Fixed] Bug that prevented the manual package adding option from working.
v1.35 (Internal):
* [Changed] Disabled the cachecleaner for MacOS. This will resolve type 3 kicks on MacOS 9.x.
v1.34 (Public):
* [Fixed] Security flaw in the clientcode. Could have been used to redirect CRC Checks.
* [Fixed] Timeout issues caused by a typo in the serverside code.
* [Added] Option bKickUnknownSound
* [Added] Option bKickUnknownSkin
v1.33 (Public):
* [Changed] Minor security update in the clientcode
v1.32 (Internal):
* [Changed] Improved the active renderdevice detection (should resolve some type 1 kicks)
* [Changed] Some improvements in the actor code
* [Added] Hashes for a lot of libraries (UTCacheCleaner, UTWinAmp, UTDCv17b, OldUnreal MediaPatches, UT v436 Linux, Editor binaries)
* [Added] Posibility to broadcast playerjoins to other mods (bExternalNotify option)
* [Added] bEUTCheck option
* [Added] bExternalLogs option
* [Fixed] Bug in the HTTP updating code
* [Fixed] Bug that caused timeouts if bGUIDCheck was still in the ini file
v1.31 (Public):
* [Fixed] Critical bug in the packet handler that caused random timeouts for some players
v1.30 (Public):
* [Added] Packet handler that allows the client to send long strings to the server without making it crash
* [Added] Extra selfchecks to prevent CRC redirection
* [Added] New hashes
* [Added] Option CheckDelay to specify the number of seconds between the playerjoin and the start of the checks
* [Added] Checks to detect illegal libraries loaded by the client, some cheatcoders use this exploit to bypass UTDC
* [Added] Option bKickUnknownLibrary
* [Added] Server receives updated library whitelists from the masterserver (only if bReceiveUpdates is set to true)
* [Changed] Option bKickUnknown renamed to bKickUnknownRenderer
* [Changed] AC no longer uses a mutator for client-server communication
* [Changed] Removed Type 8 (GUID) kick
* [Changed] Clients can see which files are being checked by AnthChecker
* [Changed] Rewrote some routines for better performance
* [Changed] Forced the client to regenerate GUID if it's not valid
* [Changed] New cache cleaner code for mac/linux -> no more reconnect window
* [Fixed] Type 1 kicks caused by a bug in the pathsparser
* [Fixed] Some false type 7 (disallowed files) kicks
* [Fixed] MacOS issues
v1.29 (Public):
* [Fixed] Some false GUID kicks
* [Added] New renderhashes
v1.28 (Internal):
* [Changed] Rewrote some laggy core routines
* [Changed] bSkinCheck now picks 2 random skins to check instead of 7
v1.27 (Public):
* [Fixed] Players getting kicktype 8 because of the slow connection between the UT server and the masterserver
* [Fixed] Illegal GUID's for linux clients with v451
* [Changed] Linux/Mac Cachecleaner can move multiple files at one time
v1.26 (Internal):
* [Added] Routine to find cached files even when the cache.ini file is corrupted
* [Added] Option bBroadCastIPs
* [Added] AnthChecker version gets logged to the external logs
* [Changed] Players get to see the URL of my forum + AnthChecker version/build when they get kicked
v1.25 (Internal) :
* [Added] Extra GUID check
v1.24 (Internal) :
* [Fixed] bug in masterserver encryption
* [Fixed] bug in the skinidentification (players with unknown skins were allowed to enter the server)
* [Fixed] Linux/Mac timeouts
* [Fixed] Critical bug that broke every mutator loaded after AnthChecker (this also affected SmartCTF/BDBMapVote/3dfxmapvote/...)
* [Fixed] bug that caused a lot of type 1 kicks (failed to generate checksum) for cached files (only happened for clients with corrupted cache.ini files)
* [Added] options LogPath and LogPrefix for the external logs
* [Added] Support for clients that have multiple system/textures/... folders
* [Added] Blocked "EnhancedSkins"
* [Added] New hashes for several renderers
* [Added] GUID verification (so far, this is only used for the masterserver)
* [Added] AnthChecker automaticly adds itself to the serverpackages list if needed
* [Changed] names of the Ref1 skins to Ref 1/Warez
v1.23 (Public) :
* First public release
6) Thanks to
------------
- Azazel & UnrealAdmin : for hosting the UTGL masterserver and my forum
- Nuffy & Magma : for providing gamearena.co.uk betatest servers
- Cratos : for providing renderdevices and a betatest server
- TNSe : for advice/ideas/help
- Just_Me : for advice/ideas/help
- Sardukar : for advice/ideas/help
- Obsidian & Rush & Neopythe : for linux betatesting
- ZorroTheFox & The_Dave : for MacOS betatesting
- Petr Jelinek : for the original MD5 code
7) Feedback & Support
---------------------
http://www.unrealadmin.org/forums/forumdisplay.php?f=176
I've just uploaded a new build of the serverfile. Changes Build 3:
Code:
* [Fixed] Server crashes due to the auto-updater
* [Added] New library definitions
* [Added] Optional debug messages from the auto-updater
Changes Build 4:
Code:
* [Fixed] HTTP Updates not working correctly
* [Added] New hashes (UTGLR d3d 1.3, UTDC20b, ...)
* [Added] Extra routine to kick players with a hacked AC (was already present in v1.38 build 7)
* [Changed] HTTP Updater class replaced by the v1.39 build