#=====================================================#
#	        NoBullShitPlus v1.03!                 #
#	      <az@thesurfersdream.com>                #
#	  ================================	      #
#	 URL: http://www.nobullshitplus.com           #
#=====================================================#
------
INDEX
------

Preface

1. About NBSP
   
    1.1 Purpose
    1.2 Approach
    1.3 Future

2. Installation

   2.1. Setting up a server
   2.2. INI Settings
   2.3. Supporting clientside mod/mutators
   2.4. Information about certain settings

3. Usage

   3.1. Mutate commands
   3.2. Log information format

4. Other

   4.1. Bugs
   4.2. Credits
   4.3. Revisions

--------
PREFACE
--------
    
    NBSP, while trying to compete with the already growing base of cheat protection
    utilities for Unreal Tournament, will stop the majority of the bots out on the market
    today. NBSP is not 100% secure because we cannot stop non uscript type of aimbots. 
    However for a fact, external aimbots are not as accurate as internal uscript aimbots.
    We are not claiming that it is impossible for an aimbot to get passed NBSP,
    but it would not be an easy task. If you find any bugs or any exploits/hacks/aimbots 
    please report them to us so we can adjust and update NBSP to stop them.

--------------
1. About NBSP
--------------

1.1. What is the purpose of NBSP?

    NBSP was built as a new secure Anti-Cheat device for Unreal Tournament. It attempts 
    to stop all the latest and future developed aimbots, hacks and radars. Our main goal 
    is to keep UT a fair game.

    When building NBSP, we took these ideas into account:

      -Stop hacks, aimbots and radars.
      -Supply information on possible other cheats in progress.
      -Support any mod and mutator built for UT.
      -Provide security for all mods/mutators available for UT.
      -Small client side download.
      -Low CPU impact.
      -Low Bandwidth usage.
      -Demo supporting.
      -Reasonable explanation why someone was caught.
      -Mac/Linux support.

1.2. Approach

    NBSP was developed using different monitoring techniques to any other anti-cheat
    protection developed for the UT community. NBSP uses a combination of active and 
    passive scanning routines to stop hacks, aswell as limiting and monitoring those 
    things hackers use to cheat. NBSP, while remaining 100% mod and mutator friendly 
    will sit back, and wait for a player to flaw, before taking action. NBSP gives the 
    admin the option to log all avaliable information of a client, for examination to help 
    them in this ever-lasting battle against the cheating scum.

1.3. Future

    Looking at the future, we will adapt to any new hack coming our way. NBSP has a solid base 
    that is easy for us to update and we will keep limiting the possibilities of any Hacker. 
    This should increase the complexity to bypass or hack NBSP, and therefore making it not worth while. 
    With the release of the MD5 patch, coming soon, we hope to see NBSP as an unbreakable force.

----------------
2. Installation
----------------

2.1 Setting up a server

    First of all we advise any person setting up a NBSP server to make it a
    dedicated server. The reason is that listen servers have some minor issues
    and therefore the player setting up the listen server will not be checked
    for cheating.

    ### Step 1 ###

    Copy all .u and .ini files to your System directory.
    
    ### Step 2 ###

    To set up a dedicated server add the following to your UnrealTournament.ini
    in the tab [Engine.GameEngine]

    ServerActors=NBSP_Server103.NBSPServerActor
    ServerPackages=NBSP_Forced103

    IMPORTANT: NBSP has 2 parts, a Server side package, and a Client side package.  
               Do NOT include the Server side portion in your ServerPackages.  

    To run the server all you have to do is:

	ucc server <mapname.unr>?game=<game type>?mutator=<mutator name>

    Since NBSP is a server actor it will automatically initiate.

2.2 INI Settings

    All ini/server settings for NBSP are found in the NBSP103.ini which came with
    the package:

    The contents of NBSP103.ini:

      [NBSP_Server103.NBSPSettings] //NBSP main settings.

      Enabled=True //if you wish to disable NBSP, change this to false
      SecurityLevel=1 //0=nothing,1=kick,2=ban (still isn't fully implemented)
      SecurityFrequency=2.000000 //how often to run checks. default: 2.000000
      MaxTimeout=15 //how many seconds to allow a client to initialise for.
      Advertise=True //decorate server name.
      AdvertiseText=[CSHP] //decoration text.
      AdminEmail=user@user.com //what email to display to clients, when they are kicked.
      CheckSpectators=False //check spectators?
      UseNBSPLog=False //use external log aswell as logging to the server UCC?
      LogDirectory=../Logs/ //what directory to save logs to?
      AllowedConsole=UTMenu.UTConsole,XConsole.XConsole //what consoles to allow. divide multiple consoles by ","
      CheckPackages=True //check default UT packages
      RestrictPackages=False //restrict packages to what server is running and what packages are added as valid.
      CheckMods=True //check client mods
      ScanConsole=True //scan console text for hacks. (will pick up the helios HOOKS).
      ValidateActors=False //validate that the clients actors, are valid packages.
      ValidateResponseClass=False //validate that the CRC class is not redirected.
      LogPackages=True //log client packages?
      LogMods=True //log client mods?
      AnnounceHacks=False //announce a hack to all players?
      HiddenMode=False //this will not display the NBSP badge, or display verficiation messages to the client if enabled.

      =====================

      [NBSP_Server103.NBSP]

      AllowedClientVersions=451,436 //This will enable you to specify which client versions to allow. divide multiple versions by ","      
      H=UnrealShare.StingerFire //Allows you to change the server HitSound.

      =====================

      [NBSP_Server103.NBSPPackages] //NBSP package settings.

      xCRC[0]=System/NBSP_Forced103.u,NBSP_Forced103,255 //server filename,package filename,x/255th to scan
      xCRC[1]=System/BotPack.u,Botpack,1

        This lines are for the CRC checks. This will checksum a percentage of the file (x/255: so 1 would be 1/255th and 255 would be 255/255ths).
        The more packages you add, the more connection time will increase.
        This may not work cross-platform/cross-version. Max amount of files to CRC is 8.
        
      DefaultPackages[0]=(Package Core),Names=327,Imports=16,Exports=669,Gen=10

        This is the OBJ LINKERS for allowed default packages.
        Only add compilation variations to these packages like for mac/lin/win.
        Core,Engine,IpDrv,IpServer,UTServerAdmin,UWeb,UTMenu,UTBrowser,UBrowser,UWindow,UMenu,UnrealI,Botpack,Fire,UnrealShare.
        Multiple of each is allowed. Max amount of default packages is 64.

      ClientPackages[0]=(Package XConsole),Names=645,Imports=171,Exports=841

        This is the OBJ LINKERS for allowed client packages, used to RestrictPackages and for the NBSP actor scan.
        Add any package you wish here, that may be valid that isn't running on the server.
        Multiple of each is allowed. Max amount of default packages is 64.   

      BadMods[0]=.AFXConfig

	This is where you can add bad mods of a client. All mods must start with a . followed by the end text of the mod.
        You would turn [NBSP][Suck]- AFXTriggerBot.AFXMenu : AFX Trigger Bot ON/OFF into '.AFXMenu'
        Max amount of bad mods is 128.

2.3. Supporting clientside mod/mutators

    Some packages in UT are so called clientside mods. This includes bots etc.
    
    Because there are some legitimate clientside only packages out there
    we have added support for them. If these clientside packages are omitted
    they will be seen as invalid and thus illegal.

    For NBSP we have added some of them and we will continue to add more as standard.

    You can open up NBSP.ini and find the ClientPackages[x]= section.

    Type 'OBJ LINKERS'

    Now you will see a list of information. Browse it to find the package you just installed.
    If it is not listed the package is NOT a clientside mod/mutator and should not be added.

    Be aware the data is case sensitive!!.

2.4. Information about certain settings

    **Restricting Packages**
      
      Restricting packages, is really an enhanced way of making sure all clients are clean.
      This will pick up any packages, such as a skin that is not on the server, and if the package
      is not located on the server database of valid packages, they will be kicked.  
      I suggest only turning this option to TRUE if you want to make sure your server is 100% secure.

    **Validating Actors**

      This validates everyone of the clients actors, packages to the server database.
      This will therefore prevent actor bypass, but may create more lag, serverside.
      I suggest only turning this option to TRUE if you want to make sure your server is 100% secure.

    **Validating Class Response**

      This option is there, to stop NBSP, clientside hacks. It will prevent hackers from overwriting/redirecting the CRC check.
      This will extend connection time from 2-5seconds and may create some extra server lag.
      I suggest only turning this to TRUE if NBSP has been hacked...
    
---------
3. Usage
---------

3.1. Mutate Commands

    Following user commands:

       mutate nbspteam //will change the players team.
       mutate changeteam //will change the players team.

    Following admin NBSP setting commands:

       mutate nbsp enable //will enable NBSP.
       mutate nbsp disable //will disable NBSP.
       mutate nbsp set securitylevel x //will change the security level, 0 or 1.
       mutate nbsp set securityfrequency x //will change the security frequency to x.
       mutate nbsp set maxtimeout x //will change the maximum timeout to x.
       mutate nbsp set advertise //will enable/disable server name decoration.
       mutate nbsp set advertisetext x //set the decoration text to x.
       mutate nbsp set adminemail x //will change the admin email to x.
       mutate nbsp set checkspectators //will enable/disbale spectator checks.
       mutate nbsp set allowedconsole x //will change the allowed console/s to x.
       mutate nbsp set checkpackages //will enable/disbale package checking.
       mutate nbsp set restrictpackages //will enable/disbale package restriction.
       mutate nbsp set checkmods //will enable/disbale mod checking.
       mutate nbsp set logpackages //will enable/disbale client package logging.
       mutate nbsp set logmods //will enable/disbale client mod logging.
       mutate nbsp set announcehacks //will enable/disbale hack announcement.
       mutate nbsp set validateactors //will enable/disbale actor validation.
       mutate nbsp set validateresponseclass //will enable/disbale class response validation.
       mutate nbsp set hiddenmode //will activate/deactivate hidden mode.
       mutate nbsp set scanconsole //will enable/disable console scanning.

    Following admin NBSP player commands:

       mutate nbsp showips //will list all players IPs.
       mutate nbsp showids //will list all players IDs.
       mutate nbsp kickid x //will kick a player with that ID (x).

3.2. Log information format

   Server startup:

       NBSP: __________________________________________
       NBSP: 
       NBSP:             **NoBullShitPlus**            
       NBSP:       Suck <az@thesurfersdream.com>       
       NBSP: __________________________________________
       NBSP: 
       NBSP: Version: v1.03
       NBSP: SecurityLevel: 1
       NBSP: SecurityFrequency: 2.000000
       NBSP: MaxTimeout: 15.000000
       NBSP: Advertise: True/[CSHP]
       NBSP: AdminEmail: user@user.com
       NBSP: CheckSpectators: False
       NBSP: UseNBSPLog: False
       NBSP: AllowedConsole: UTMenu.UTConsole,XConsole.XConsole
       NBSP: CheckPackages: True
       NBSP: RestrictPackages: False
       NBSP: CheckMods: True
       NBSP: ScanConsole: True
       NBSP: Validate Actors: False
       NBSP: ValidateResponseClass: False
       NBSP: LogPackages: True
       NBSP: LogMods: True
       NBSP: AnnounceHacks: False
       NBSP: HiddenMode: False
       NBSP: 
       NBSP: Default Server Packages: 40
       NBSP: Allowed Client Packages: 42
       NBSP: 
       NBSP: Checksum Generated. (0:NBSP_Forced103: 1151770168)
       NBSP: Checksum Generated. (1:Botpack: -55517570)
       NBSP: 
       NBSP: Loaded HitSound: 'UnrealShare.StingerFire'
       NBSP: __________________________________________

    Player join:

       NBSP: [NBSP]- Player has joined: Suck (192.168.1.107) | UKN/UKN | ID: 0 
       
          Player has joined: Name (IP) | OPERATING SYSTEM/RENDER DEVICE | ID: ID

    Player logs:

       NBSP: [NBSP]- Parsing Packages for Suck...
       NBSP: [NBSP][Suck]- Engine, Core, Entry, Logo, Fire, credits
       NBSP: [NBSP][Suck]- Botpack, UnrealShare, UnrealI, Female2Voice, Male2Voice, Female1Voice
       NBSP: [NBSP][Suck]- BossVoice, Male1Voice, UMenu, UWindow, UBrowser, IpDrv
       NBSP: [NBSP][Suck]- Announcer, UTMenu, LadderSounds, UWeb, UTServerAdmin, IpServer
       NBSP:
       NBSP: [NBSP]- Parsing Mods for Suck...
       NBSP: [NBSP][Suck]- AssaultBonusPack.AssaultMenuItem : AssaultBonuspack418,EavyAssaultPlus
       NBSP: [NBSP][Suck]- MultiMesh.MultiMeshMenu
       NBSP:
       NBSP: [NBSP]- Parsing Checksums for Suck...
       NBSP: [NBSP][Suck]- CRC: (0:NBSP_Forced100:-1922974898)
       NBSP: [NBSP][Suck]- CRC: (1:Botpack:2087871710)

     Player hack:

       NBSP: #### ---------------------------------------------- 
       NBSP: #### NBSP - CLIENT HACK DETECTED - OBJECT
       NBSP: #### ---------------------------------------------- 
       NBSP: #### - Player Name: Suck
       NBSP: #### - Player IP: 192.168.1.107
       NBSP: #### - Details: Active illegal package encountered.
       NBSP: #### - Method: AFXTriggerBot
       NBSP: #### - Panic degree: High.
       NBSP: #### - Security Code: 290628064
       NBSP: #### - Date/Time: 3-5-2004 / 22:51:17
       NBSP: #### ----------------------------------------------

         -Illegal system paths detected       //Client has modified there default system paths
         -Illegal classes encounted           //Client has possibly intercepted a class/console
         -Client failed to initialise         //Client didn't initialise for checking
         -Active illegal package encountered  //Client is running an unspecified package
         -Invalid default package encountered //Client has an illegal default package
         -Invalid checksum recieved           //Client has modified a package
         -Illegal tampered data encountered   //Client has tampered with/attempted to hack, NBSP
         -Console data not recieved           //Client has tampered with/attempted to hack, NBSP
         -Illegal canvas limit exceeded       //Client is trying to use an illegal canvas/radar
         -Illegal skin hack detected          //Client was involved with an illegal skin
         -Illegal package encountered         //Client has an illegal package
	 -Illegal mod encountered	      //Client has an illegal/bad mod
         -External hook detected	      //Client is running an external hook. (Aimbot/Radar)
	 -Unsupported version encountered     //Client has an invalid Unreal Tournament version.
         -Unknown fault detected              //NBSP, detected an unknown fault on the client.

    Player part/kick:

       NBSP: [NBSP]- Player has been kicked: Suck (192.168.1.107) | PC/D3D | ID: 0

---------
4. Other
---------

4.1 Bugs

    We are currently aware of these bugs and we are working to fix them:
      -Clients failing to initialize.
      -Clients being kicked for valid packages.
      -Server lag.

    Please visit our website if you find a bug:
      www.nobullshitplus.com

4.2 Credits

    Special thanks for making NBSP possible:

    Suck (Creater/Coder)
    Bonehed (Ideas/Input)
    Kevin[FU2]SpawnKiller (Server/Testing)
    Cam0 (Domain/Hosting/Server/Testing)
    ProfessorQ (Utilities)
    Mekko (Artwork)
    
    And not to forget for all the support:

    Sucks Fuckage Community. (www.thesurfersdream.com/ut/)
    UTPURE Forums. (www.utpure.com)
    NBSP Forums. (www.nobullshitplus.com)
 
4.3 Revisions

    v1.03
      -Fixed actor validation check. Clients will no longer get kicked for valid actors in cache.
      -Removed a serious bug which was running the package and actor checks constantly, causing lag.
      -Added optional hiddenmode - won't display badge, or verification messages to the client.
      -Added a check to stop the Helios-Hook & possibly other private external hooks.
      -Optimized some server/client code.
      -Added serverside encryption.
      -Decreased NBSP clock timer.

    v1.02
      -Added optional actor validation check to stop bad valid actor bypasses.
      -Added optional CRC class validation check to stop CRC redirection.
      -Server lag & pings lowered (i hope) via revised check techniques.
      -Revised code to help minimize clients failing to initialize.
      -Fixed a serious bug to do with actors within maps.
      -Added default support for the new UTPG patch, v451b.
      -Added support for external logs.
      -Removed various bugs.

    v1.01
      -Serverside skin check fixed.
      -Enable/Disable NBSP commands fixed.
      -Added more mutate commands for admins.
      -Added lots of packages into the default ini, supporting v451 and Creative 436. 
      -Added a modmenu check, for bad client mods.
      -Added client version check.
      -Fixed enhanced teamsay.

    v1.00
      -Increased protection.
      -Hack announcement option added.
      -Added cause message to package/object client hack messages.
      -Better obfuscation =).

    v1.00 Beta++
      -Removed some bugs that were causing the server to crash (we hope).
      -Reduced CPU usage/bandwidth.
      -Fixed Mac/Lin compatibility.
