#=====================================================#
#	        NoBullShitPlus v1.09!                 #
#	      <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
   2.5. Compatibility with certain mods

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

    This step is 'OPTIONAL'. Serious vunerabilities have been found in the Unreal Engine.
    NBSP108 offers a fix to these vunerabilities.

    To do this, change the code below found in your UnrealTournament.ini:

    [Engine.GameEngine]

    ServerActors=IpDrv.UdpBeacon
    ServerActors=IpServer.UdpServerQuery
    ServerActors=IpServer.UdpServerUplink MasterServerAddress=unreal.epicgames.com MasterServerPort=27900
    ServerActors=IpServer.UdpServerUplink MasterServerAddress=master0.gamespy.com MasterServerPort=27900
    ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.mplayer.com MasterServerPort=27900

    To these new lines:

    [Engine.GameEngine]

    ServerActors=IpDrv.UdpBeacon
    ServerActors=NBSP_Server109.NBSPServerQuery
    ServerActors=NBSP_Server109.NBSPServerUplink MasterServerAddress=unreal.epicgames.com MasterServerPort=27900
    ServerActors=NBSP_Server109.NBSPServerUplink MasterServerAddress=master0.gamespy.com MasterServerPort=27900
    ServerActors=NBSP_Server109.NBSPServerUplink MasterServerAddress=master1.multiplay.co.uk MasterServerPort=27900 
   
    ### Step 3 ###

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

    ServerActors=NBSP_Server109.NBSPServerActor
    ServerPackages=NBSP_Forced109

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

    The contents of NBSP108.ini:

      [NBSP_Server109.NBSPSettings]

      Enabled=True

        This enables/disables NBSP on your server.

      SecurityLevel=1

        NBSP Security Level/s: 

	0=Does nothing
        1=Destroys the player (kills weapons, etc)
        2=Kicks the player from the server

      SecurityFrequency=2.000000

	How often to scan the client and run checks. 2 = recommended frequency.

      DisplayLevel=2

        NBSP Display Level/s:

        0=Display nothing
        1=Display actions (kicks, etc)
        2=Display badge, verification messages and actions (kicks, etc)

      BroadcastLevel=0

	NBSP Broadcast Level/s:

        0=Broadcast nothing
        1=Broadcast hacks to other players on the server

      LogLevel=3

	NBSP Log Level/s:

        0=Display NBSP Logo & Actions (Joins/Kicks)
        1=Display NBSP Logo & Actions (Joins/Kicks) & Client packages.
        2=Display NBSP Logo & Actions (Joins/Kicks) & Client mods.
        3=Display NBSP Logo & Actions (Joins/Kicks) & Client packages & Client mods.

      MaxTimeout=15.000000

	How long to allow a client to take to initialize to NBSP. 15 = Recommended max timeout.

      Advertise=True

        Advertise the AdvertiseText to the beggining of the server name.

      AdvertiseText=[NBSP]

        What text to advertise to the beggining of the server name. (if enabled).

      AdminEmail=user@user.com

        Server admin email, to announce to clients console on detection.

      CheckSpectators=False

        Check Spectators? Recommended you keep it as false.

      AllowedConsole=UTMenu.UTConsole,XConsole.XConsole

        What consoles to allow clients to be using?

      CheckPackages=True

        Check default packages to see if they have been modified or tampered with.

      RestrictPackages=False

        Only allow clients to be running packages found on the server. (SECURE MODE).

      CheckMods=True

        Scan clients for invalid or bad mods.

      CheckSkins=True

        Scan clients for invalid skins/skin hacks/glow hacks. If there are problems, set this to false.

      ValidateActors=False

        Validate that the actors packages haven't been tampered with. (SECURE MODE).

      ValidateResponseClass=False

        Validate that the CRC check hasn't been tampered with. (SECURE MODE).

      KillClientActors=True

	Leave this True, to remove alot of false kicks. Only turn to false if it causes some problems (client crash on join).

      CheckPaths=False

        Check the clients system paths. Recommended you leave it as false.

      DisableMods=False

        Disable the clients ModMenu when they join the server.

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

      [NBSP_Server109.NBSP]
	
      AllowedClientVersions=451,436

	Select which Unreal Tournament client versions to be allowed to join.

      H=UnrealShare.StingerFire

	Select your own custom HitSounds for the server.

      ExtendedHud=True

	Use the NBSP Extended HUD (Shows time, etc).

      UseNBSPLog=False

	Log to an external file aswell as the server ucc log.

      LogDirectory=../Logs/

        Set the directory it will externally log to.

      LogSettings=True

	Show & log the NBSP settings on startup.

      LogIdentd=True

	Log the personal IDENTDITY of the player for future references.

      LogToExternal=False

	Log to webadmin console & IRC bots that may be setup.

      UTPureMode=False <------------------------------------------------------------------ UTPURE

	Enable this to true if you are running NBSP with UTPURE!!!! <--------------------- UTPURE

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

      [NBSP_Server109.NBSPPackages] //NBSP package settings.

      xCRC[0]=System/NBSP_Forced108b.u,NBSP_Forced108b,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 128.

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

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

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

    **UTPure Mode**

      Make sure you turn this option ON, if you are running UTPure with NBSP.
      This will fix up compatibility issues between the two anticheat mutators.
      Otherwise wierd and strange things may present themselves...

2.6. Compatibility with certain mods

    **Running NBSP With UTPURE**

      If you wish to run UTPure with NBSP make sure you set 'UTPureMode=True'
      This will make NBSP compatible with this mod.

    **Running NBSP With VALAVATAR**

      If you wish to run ValAvatar with NBSP make sure you set 'KillClientActors=False'
      This will make NBSP compatible with this mod.

    All other mods should run fine with NBSP. Any problems? Please let us know at 'http://www.nobullshitplus.com'
    
---------
3. Usage
---------

3.1. Mutate Commands

    Following user commands:

       mutate nbspteam //will change the players team.
       mutate nextteam //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 displaylevel x //will change the current displaylevel to x.
       mutate nbsp set displaylevel x //will change the displaylevel to x.
       mutate nbsp set broadcastlevel x //will change the broadcastlevel to x.
       mutate nbsp set loglevel x //will change the NBSP loglevel 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 checkskins //will enable/disable the skin check.
       mutate nbsp set validateactors //will enable/disbale actor validation.
       mutate nbsp set validateresponseclass //will enable/disbale class response validation.
       mutate nbsp set killclientactors //will enable/disable the NBSP killclientactors function.
       mutate nbsp set checkpaths //will enable/disable the path check.
       mutate nbsp set disablemods //will enable/disable the disabling of client mods.
       mutate nbsp set serverurl x //will change the server url to x.

       mutate nbsp extendhud //turn on/off the NSBP extended hud
       mutate nbsp logidentd //turn on/off identd logging
       mutate nbsp usenbsplog //turn on/off nbsplog
       mutate nbsp logsettings //turn on/off logging of nbsp settings
       mutate nbsp logtoexternal //turn on/off logging to external devices
       mutate nbsp utpuremode //turn on/off utpuremode


    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).
       mutate nbsp showidentds //will list all players IDENTDs.

3.2. Log information format

   Server startup:

       NBSP: __________________________________________
       NBSP: 
       NBSP:             **NoBullShitPlus**            
       NBSP:       Suck <az@thesurfersdream.com>       
       NBSP: __________________________________________
       NBSP: 
       NBSP: Version: v1.09
       NBSP: SecurityLevel: 1
       NBSP: SecurityFrequency: 2.000000
       NBSP: DisplayLevel: 2
       NBSP: BroadcastLevel: 0
       NBSP: Advertise: True/[CSHP]
       NBSP: AdminEmail: user@user.com
       NBSP: CheckSpectators: False
       NBSP: AllowedConsole: UTMenu.UTConsole,XConsole.XConsole
       NBSP: CheckMods/CheckPaths: False/False
       NBSP: Packages(Check/Restrict): True/False
       NBSP: Validate(Actors/Class): False/False
       NBSP: CheckSkins/KillClientActors: True/True
       NBSP: MaxTimeout: 15.000000
       NBSP: 
       NBSP: Default Server Packages: 40
       NBSP: Allowed Client Packages: 44
       NBSP: 
       NBSP: Checksum Generated. (0:NBSP_Forced107: 140926820)
       NBSP: Checksum Generated. (1:BotPack: -2109659378)
       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 identd:

       NBSP: [NBSP]- Identd of Suck: 1Z126A9

    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: #### - 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 or is attempting to inject.
         -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 mod
         -External hook detected	      //Client is running an external hook.
	 -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.

    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)
    Cam0 (Bug Fixing/Testing)
    Kevin[FU2]SpawnKiller (Server/Testing)
    ProfessorQ (Utilities)
    Just**Me (Input)
    Mekko (Artwork)

    And not to forget for all the support:

    Sucks Fuckage Community. (www.thesurfersdream.com/ut/)
    UnrealAdmin Co. (www.www.unrealadmin.org)
    NBSP Forums. (www.nobullshitplus.com)
 
4.3 Revisions

    v1.09
      -Increased pacakage limits from 64 to 128
      -Added a scan to check console version/package. No more exploits bitches =P
      -Added more settings to reduce clients timeout.
      -Fixed code to stop SIGMENTATION faults.
      -Fixed numerous bugs.

    v1.08
      -Increased protection.
      -Redid Check Schedule to fix timeouts.
      -Added Extended HUD and other little goodies.
      -Removed NBSP AutoPause.
      -Removed numerous bugs.

    v1.07
      -Added NBSP AutoPause (for clan matches).
      -Fixed timeout issue in NBSP106.
      -Removed numerous bugs.

    v1.06
      -Increased protection.
      -Increased Max BadMods Support to 256.
      -Added new SecurityLevel option.
      -Added new ServerURL option.
      -Removed numerous bugs (more than you think).

    v1.05
      -Added SecurityLevel option to not kick clients on detection.
      -Added 'UTPureMode'. Will auto setup NBSP to work with UTPURE (any version).
      -Added option to log to external applications (webadmin/IRC reporters).
      -Fixed linux client compatibility. No more false-positives.
      -Optimized 80% of the package code.
      -Minimised client timeouts.
      -Minimised server crashes.
      -Removed numerous bugs.

     v1.04
      -Console scan will now scan up to 64 lines of text.
      -Bug removed with the CRC function, that was setting the wrong player, invalid. *gasp*
      -NBSP will now detect all current versions of the HelioS-Hook!!
      -Increased client security and removed various bugs.
      -Added option to turn off client path checks.
      -Reduced the load on the main tick loop.
      -Added option to log settings on/off.
      -Better obfuscation =).

    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.
