#=====================================================#
#	        NoBullShitPlus v1.01!                 #
#	      <az@thesurfersdream.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 restricting packages

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 running.
      -Small client side download.
      -Low CPU impact.
      -Low Bandwidth usage.
      -Demo supporting.
      -Reasonable explanation why someone was caught.
      -Mac/Lin 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, unless the whole 
    project gets crippled on it's foundation. NBSP has a solid base that is easy for us to
    update and we will keep limiting the possibilities of any Hacker, which 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_Server101.NBSPServerActor
    ServerPackages=NBSP_Forced101

    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 NBSP.ini which came with
    the package:

    The contents of NBSP.ini:

      [NBSP_Server101.NBSPSettings] //NBSP main settings.

      EncryptionKey= //DO NOT TOUCH THIS LINE!!!!!!!!!

      Enabled=True //if you wish to disable NBSP, change this to false

      SecurityLevel=1 //0=nothing,1=kick

      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=az@thesurfersdream.com //what email to display to clients, when they are kicked.

      CheckSpectators=False //check spectators?

      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

      LogPackages=True //log client packages?

      LogMods=True //log client mods?

      AnnounceHacks=False //announce a hack to all players?

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

      [NBSP_Server101.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_Server101.NBSPPackages] //NBSP package settings.

      xCRC[0]=System/NBSP_Forced101.u,NBSP_Forced101,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 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 in only using this option if you want to make sure your server is 100% secure.

---------
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.

    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.01
       NBSP: Enabled: True
       NBSP: SecurityLevel: 1
       NBSP: SecurityFrequency: 2.000000
       NBSP: MaxTimeout: 15.000000
       NBSP: Advertise: True/[CSHP]
       NBSP: AdminEmail: az@thesurfersdream.com
       NBSP: CheckSpectators: True
       NBSP: AllowedConsole: UTMenu.UTConsole,XConsole.XConsole
       NBSP: CheckPackages: True
       NBSP: RestrictPackages: True
       NBSP: LogPackages: True
       NBSP: LogMods: True
       NBSP: 
       NBSP: Default Server Packages: 18
       NBSP: Allowed Client Packages: 35
       NBSP: 
       NBSP: Checksum Generated. (0:NBSP_Forced100: -1467047986)
       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
	 -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:
      -Occasional NBSP caused server crashes.
      -Clients failing to initialize.
      -Clients being kicked for valid packages.
      -Accessed none errors.

4.2 Credits

    Special thanks for making NBSP possible:

    Suck (Creater/Coder)
    Bonehed (Ideas/Input)
    Kevin[FU2]SpawnKiller (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)
 
4.3 Revisions

    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.
