View Single Post
Author Message
Inami
New Member
Join Date: Jun 2010
Old 03-29-2012 , 10:36   [CS:S] Macrodox - Bhop cheat detection
Reply With Quote #1

Macrodox was first written in 2009 for Aoki's Bhop server in response to the increasing amount of cheaters trying to get speedrun records. Main goal was to have automatic banning without any false positives. Until now it's been in private use for years, and has done a good job.

This was developed for and tested only on bhop servers!
Even so, Fibbs and me tried to trigger bans on Trikz maps with no success(yet). So use with caution.
Seems as low fps abusers trigger bans too, but I'm planning to add detection for that anyway.

DO NOT COMBINE THIS WITH AUTOJUMP PLUGINS LIKE EZHOP
That will both break detection and cause false positives.

Features:
  • Punishes +left/+right strafe binds with slay.
  • Detects common bhop cheats, such as hacks, macros and some hyper/autoscroll mouse features.
  • Bans are delayed to confuse detected cheaters whether or not they've been caught.
  • Option to call a console command to delete records on ban.
  • Log file with ban details.
  • Admin command to check player stats and detection state.
  • Admin command to enable a STEAM_ID to use the stats command for debugging.


Commands:
mdx_stats <#userid|name|@all> -- requires ban rights, prints stats of specified targets to your console. First number (0/1) indicates if a person was caught. Advanced explanation will follow.
mdx_test <#userid|name|@all> -- same as above, only usable for the id set with the command below (needs no ban rights tho)
mdx_debug STEAM_ID -- requires ban rights, sets the ID that can use mdx_test


Configuration:
Edit the #defines if needed.
Code:
//If you have a timer that can delete records you might want to edit this
//for auto deletion. Console command gets called with steamid as parameter.
//#define DELETE_CMD "sm_timer_delete"

//Command used to delayed ban.
//Default is "banid 0 %s kick"
#define BAN_CMD "banid 0 %s kick"

//if banid is used, write to banned_user.cfg manually.
#define BAN_WRITE

//Delayed bans every 3 maps
#define BAN_DELAY 3

//UNCOMMENT IF YOU WANT TO SUPPORT TESTING
//Enables aspi/Inami to use stats command
//#define DEFAULT_DEBUGID "STEAM_0:0:6183127"
Notes:
banid is used because the players most likely wont be on the server anymore when the delayed ban happens.
If your server doesn't change the map very often, you should lower the BAN_DELAY (1 = every mapchange)

Understanding the log entries:
sourcemod\logs\mnacrodox.log
Code:
L 05/22/2011 - 03:23:11: [macrodox.smx] captain obvious<3><STEAM_0:3:444444><>

Avg: 1.090113/541.507934 Perf: 0.940858 
average +jumps/speed     perfect jump ratio

bhop_awake 4639.354492 61.438056 1.037995
mapname             coords (useful for checking map based ban triggers)

Last: 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 hax1
                          +jump pattern                           type of ban (pattern/hack)
Changelog:
Code:
2012-03-31 - 1.9:
--fixed banning being half broken since release cleanup (thanks to h!gh voltage for noticing)

2012-03-30 - 1.8 akkord gee:
--added bantype to log
--added macro to easily change ban interval
--changed default ban interval to 3

2012-03-29 - 1.7 akkord:
--Release
Attached Files
File Type: sp Get Plugin or Get Source (macrodox.sp - 6084 views - 12.8 KB)

Last edited by Inami; 04-02-2012 at 16:30. Reason: update
Inami is offline