CSHP
Client Side Hack Protection

Release 4q - Version 01.04.24

(c) 2000, 2001, Creative Carnage, LLC


What have you just installed?

CSHP is a mod that will monitor clients that connect to your server and keep a look out for illegal hacks such as aimbots, radars and the works.  CSHP represents the best line of defense against people looking to have fun by ruining yours.  This package is designed for server-admins.  Clients should not be installing it on their system, instead you should allow CSHP to auto-replicate to you when you connect to your first CSHP server.

CSHP4q marks a change in direction for the project.  We have split the CSHP off in to 2 separate mods.  This portion will remain named CSHP and is designed to be run on Public Servers.  UTPure will be released shortly and is designed for leagues, clans and tournament play.  Unlike previous versions of CSHP, 4q is very forgiving and should work out of the box with 99.9% of all mods out there.  UTPure will be very restrictive and support very few mods.

CSHP4q offers good protection and can stop any known public bot.  This is why we suggest it for public servers.  It does not have the in-depth scanning and tracking code as UTPure.  

About Previous Versions?

People, it's a whole new world.  Disregard any previous version of CSHP.  Your best bet is to completely uninstall any previous versions and upgrade to 4q. You can do this by following these steps:

Step 1: Delete CSHP*.* in your UnrealTournament directory.


Step 2: Edit any .INI files associated with your server(s) and remove all ServerPackages and ServerActor Entries pertaining to CSHP.


Step 3: Remove and [Section] entries from these INI files pertaining to CSHP.

You have now removed CSHP!

Installing from a .ZIP

Man, this was gonna be a big huge section.  Then it turns out there is a problem with the Linux server-side stuff on some linux platforms.  So while Mongo is off fixing that, I guess I'll just post the old standby instructions.  But take heart, CSHP4q was created to work hand in hand with CSHPServer.  

Anyway, to make a rather long story short.. here is the install instructions:

To install CSHP, you will want to unzip the contents of the distribution zip in to your UnrealTournament directory.  The zip file contains additional directories so make sure you expand with pathnames.  Once installed, you will need to load up UNREALTOURAMENT.INI in to a text editor.  Multiple Servers Note: You will have to do this step for each .ini file you use to run your servers.

Find the section labeled [Engine.GameEngine].  This section contains all of the server actors and packages for UT.  You will need to make 2 changes and they can be anywhere within this section.  Add these 2 lines:

ServerPackages=CSHP4q
ServerActors=CSHP4q.CSHPServerActor

Once you have made these 2 changes, CSHP is ready to go.  If you need to force additional packages to be approved, see "ADDITIONAL PACKAGES" below.

Running CSHP?

Once the above is installed, start your server as you always would.  Simple as that.  When it first starts, CSHP will make the following entry in to your log file:

ScriptLog: ###############################
ScriptLog: # Client Side Hack Protection #
ScriptLog: # Revision 4q #
ScriptLog: # version 01.04.24 #
ScriptLog: ###############################
ScriptLog: Security Level is.............. 1
ScriptLog: Clean up Rogue Objects......... True
ScriptLog: Tracking FOV................... False
ScriptLog: Only Admin Kick................ True
ScriptLog: Kick on TimeOut ............... True
ScriptLog: Use Numeric IP ................ False
ScriptLog: NGStat Players Only ........... False

Players will be able to tell they are connected to a CSHP server by a graphic that displays when they first connect.

 

Setting up CSHP

We have completely revamped the options available to server admins.  If you are upgrading from a previous version of CSHP, please read the next section.  If this is the your first install, you can skip it.

Unlike previous versions, CSHP now only has 1 operating mode.  Currently there are 8 different options you can add to your INT setup file.  They are explained here:

SecurityLevel=<0-2>

The SecuirtyLevel tells CSHP how to react when someone is caught cheating.  Here is how the different security levels work.  Each level includes all the protection of the previous levels.

ecurity Level Description
0 At level 0, no direct action is taken against the cheater.  Their name and information is outputted to the log for the server admin to act upon later.  At any time, the users can perform a mutate cheatshow command to see if there are cheaters online.
1 At level 1, any cheaters are also kicked from the system
2 At level 2, after the cheater is kicked, a ban is added to your IP Policies in your servers ini file.

*No matter what security level you are running, CSHP will send cheat reports to the CSHP cheat server as well as make cheat log notations in your NGStats logs.  Currently, no direct action is being taken with this information but that will change soon.  For more information on what we have planned here, head to our web site!

We suggest server admins use security level 1 for public servers.  Level 0 is really for password protected servers where cheating is almost non-existant (such as SwineOnline, or some of the MyUnreal servers).  Level 2 should be used very sparingly, however I do understand the need to keep the cheaters out.

When a cheater is caught, CSHP will display a message to the user via their console.

Advertise=<0-2>

This option will cause CSHP to add the [CSHP] tag to your server name.  This was a requested feature from you guys so you have it.   The different settings are:

Settings Description
0 Do no append [CSHP] to the server name
1 Place the [CSHP] at the start of the server name (ie: "[CSHP] House of SIN"
2 Place the [CSHP] at the end of the server name (ie: "House of SiN [CSHP]")

*Remember that changing your server name does effect your NGStats so please keep that in mind when using this option.

Starting with version 4q, the [CSHP] tag will be added only if it cannot be found in your server name. If there are any additional advertise setting you would like me to consider, please feel free to email.

bOnlyAdminKick=<True|False>

This variable allows you to limit the use of the "Mutate CheatKick" command to just people with Admin Access.

bNGStatsOnly=<True|False>

This option is another user request option.  When set to TRUE, your server will politely reject any player not participating in the NGWorldStats Ranking system.  I'm probably going to regret this option, so please if you use, make it known in your Server name!

bUseNumericIP=<True|False>

This option is for the some people in Linux crowd.  Seems the DNS work needed to resolve the ip for the cheat server was creating some ghost processes.  Setting this to True will cause CSHP to just use the current numeric IP.

bTrackFOV=<True|False>

This variable tells CSHP to watch for people using the FOV zoom cheat.  See the section on FOV cheating below for more information.

bAllowNoSmoke=<True|False>

CSHP4q has the ability to detect the client side mod No Smoke.  Some people consider this a legal mod as it can be used to increase their framerate.  However, do not be confused.  NoSmoke alters the play mechanics of the rocket launcher by removing the smoke.  This allows the player to see clearly, even when launching 6 rockets.

Any Client-Side hack should be considered a cheat as it removes the ability for a server admin to decide what the rules of his server are.  CSHP4q gives that choice back to the admin.

ADDITIONAL PACKAGES

CSHP4q no longer requires any type of Allowable Packs.  

CONSOLE COMMANDS!

CSHP has 4 mutate commands available.  To perform one of these commands open your console while connected to the server and type the command.  Some of them may require Admin access.

Command Description
MUTATE CHEATINFO This command will display information about the version of CSHP currently running.
MUTATE CHEATSHOW If CSHP is running with security level 0, it's possible that cheaters will be online and playing.  Any user can execute the CheatShow command and receive a list of cheaters currently playing.
MUTATE CHEATKICK This command can be used to kick players who are cheating (with security level 0).  Admins can limit this command by requiring the user have admin access by setting bOnlyAdminKick to true in your int.
MUTATE CHEATTEST This command ABSOLUTELY requires Admin access.  When enabled, it will cause CSHP to stop making reports to our server and NGSTATS for the remainder of the map, FOR THE IP THAT SENT IT.  This is to allow Server Admins to test out cheats on their servers without sending in Cheat info to us.  Cheats are still sent to the local logs and acted upon accordingly.  Only 1 admin may have this ability at one time.  

*Using the CheatTest command sends additional data to the log about who activated it.

What does a Cheat Report Look Like

Anytime CSHP logs a cheater, it will create a cheat report.  This report has information about the person how has cheat, when it occurred and what type of cheat it was.  The following is a sample Cheat Report:

#### -------------------------------- ####
#### HACKED CLIENT DETECTED ####
#### -------------------------------- ####
#### - Player Name : Mr. Cheater 
#### - Player IP : 24.1.1.2
#### - Method : Illegal (AA) Aiming Device Found
#### - Action : Kicked
#### - Auth. Code : 1093565
#### - Date/Time: 03-16-00@10:42am
#### -------------------------------- ####

The following is a list of "Methods"

Method Description
Illegal (**) Access to the Canvas If you receive this in your logs someone was trying to play on your server using an unauthorized device that was displaying additional information (such as radars).  
Illegal (**) Aiming Device Found This is an aimbot, pure and simple.
Illegal Console: Doesn't Exist This is more of an error code than a cheat.  At all times the player's console should exist.  However it might be possible for a player to hide or remove his console in an attempt to avoid detection

*The portion of the method that is ** is a device code that we can use to identify the hack.  You can ignore it.

As you can see, the number of things CSHP checks for has decreased.  UTPure will be release shortly to take up the slack.

Rogue Actors

With some exception, CSHP will no longer check rogue actors.  We will update it from time to time as new bots become available.  

Skins

The choice of skins will now be limited to what's available on the ServerPackages list.  This should solve the situations where one has black skins and such.  If you find any combination where this is still faulty, just tell us and we will gladly improve the code.

Dying as a spectator

Spectators were able to die when reaching killing zones of certain maps. This should not be the case anymore. Administrators logging out should be fixed too.

Using CSHP on multiple servers

Multiple servers are a bitch.  You admins love them, we coders have to deal with them :)

CSHP should be fairly multiple server friendly.  Each server will have a separate log created by CSHP.  It uses the following naming convention: CSHP-<server name>.log.  It will be located in your \System directory.  At the current time, the CSHP logs are written in Unicode.  

The only restriction right now is that all servers share the same CSHP4q.int file.  This is annoying, but with the latest version of CSHP using the server packages, it's not nearly as annoying as before.

Reporting Bugs | Suggestions

I'm no longer answering CSHP questions at my normal email address and I'm also only answering questions/bugs from server ops and admins.  If you fit in to this group, join the CSHP mailing list.  Details can be found at http://www.creativecarnage.com/CSHP!  I can also sometimes be found on #unrealscript on GamesLink.