Меняет SteamID, обходит бан |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
Меняет SteamID, обходит бан |
zippel |
13.4.2017, 13:47
Сообщение
|
|
Есть челик, постоянно заходит с разными ИДами.
Я посмотрел по конфигу Dproto, Цитата # For players having revEmu ( >= 9.74) on client-side: # default is real STEAM_xx:xx:xx [1] cid_RevEmu = 1 # For players having RevEmu 2013 on client-side: # default is real STEAM_xx:xx:xx [1] cid_RevEmu2013 = 1 # For players having SteamClient 2009 / revEmu > 9.82 on client-side: # default is real STEAM_xx:xx:xx [1] cid_SC2009 = 1 # For players having old revEmu on client-side: # default is real STEAM_xx:xx:xx [1] cid_OldRevEmu = 1 ... # RevEmu_Prefix1 (int) # STEAM_a:b:c # first prefix (a) for authids generated by RevEmu RevEmu_Prefix1 = 2; Т.е. как я понимаю dproto накидывает ему каждый раз новый стимИД при каждом его новом коннекте, что ле так получается? Как бороть, есть идеи? Влепил правило через брандмауэр, вроде отвалился. Но всё таки.. меняет иды. Это ваще как?) Такое возможно? Перезаходит сразу же..
Отредактировал: zippel, - 13.4.2017, 14:16
|
|
|
adva |
13.4.2017, 14:21
Сообщение
|
|
|
|
|
zippel |
13.4.2017, 14:22
Сообщение
|
|
zippel, а алиас чекер введи наказание за подмену стимайди. Зайди в тему маздана alias checker и посмотри конфиги в самом вверху есть правила.. либо допбан от маздана, он ставит метки, при обходе сразу забанит. оК. СПС. ЩЯ ЧЕКНУ! P.S. чекнул, спасибо, но не подходит. Альтернативы как понял нету, ладно, буду банить руками.
Отредактировал: zippel, - 13.4.2017, 14:25
|
|
|
adva |
13.4.2017, 14:51
Сообщение
|
|
|
Поблагодарили 1 раз
|
|
zippel |
13.4.2017, 15:00
Сообщение
|
|
zippel, всмысле не подходит? У тебя чел меняет стим айди с помощью команды set_steam_id, ее в алиас чекере можно детектить и он банит сразу, если обнаружит так бы и сразу) Но это не клиентское. Скорее всего сторонее, так что там что угодно может быть. Или нет?
Отредактировал: zippel, - 13.4.2017, 15:01
|
|
|
zippel |
13.4.2017, 15:16
Сообщение
|
|
А есть боты с AI? Всмысле не те боты которые на уровне движка бегают, типа POD или ZBots, а фейковые игроки?
|
|
|
Energy |
13.4.2017, 15:24
Сообщение
|
|
https:// $
ip:port $ Аватар не имеет военного смысла, просто хохма. |
|
|
csuser |
13.4.2017, 15:42
Сообщение
|
|
|
adva |
13.4.2017, 15:44
Сообщение
|
|
|
|
|
zippel |
13.4.2017, 15:51
Сообщение
|
|
zippel, всмысле стороннее? Клиент-сервер. Что может быть ещё? Клиент меняет стимайди, сервер его принимает и пускает. А ты с сервера чекаешь клиентскую команду на смену стимайди и банишь. Это рили клиентская команда? Что? Я первый раз её вижу. Когда её добавили? Я ничего не понимаю, как можно командой сменить стим ИД, который Dproto генерит по HWID Если это касается какой нибудь из версий RevEmu - может проще отрубить её.. В всяком случае, пока что! Случай единичный..
Отредактировал: zippel, - 13.4.2017, 15:48
|
|
|
daywer |
13.4.2017, 18:09
Сообщение
|
|
Это чит софт и чит кс в которую встроена команда такая,прием тут dproto?
Написание плагинов на заказ.(sql,sqlite,nvault)
|
|
|
viper2020 |
13.4.2017, 23:51
Сообщение
|
|
zippel,
steamid_limiter /** * Credits: Safety1st for whitelist. */ #include <amxmodx> #include <sqlx> #define PLUGIN "SteamID Limiter" #define VERSION "0.4" #define AUTHOR "Mistrick" #pragma semicolon 1 #define STEAMID_PER_IP 2 #define SAVE_LASTDAYS 1 #define REASON "Wrong SteamID" #define WHITELIST // uncomment to enable whitelist #if defined WHITELIST new const g_szWhiteList[][] = { "127.0.0.0/8", // loopback interface (usually assigned IP is 127.0.0.1) "192.168.0.0/24" // 192.168.0.0/24 subnet, IPs range 192.168.0.0 ... 192.168.0.255 }; enum _:WhitelistData { NET_IP, NET_MASK }; new Array:g_aWhitelist; #endif new const DATABASE[] = "addons/amxmodx/data/steamidlimiter.db"; new Handle:g_Tuple, g_szQuery[256]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); SQLite_Init(); #if defined WHITELIST new eNetData[WhitelistData]; g_aWhitelist = ArrayCreate(WhitelistData); for( new i; i < sizeof(g_szWhiteList); i++ ) { net_to_long( g_szWhiteList[i], eNetData[NET_IP], eNetData[NET_MASK] ); ArrayPushArray( g_aWhitelist, eNetData ); } #endif } SQLite_Init() { SQL_SetAffinity("sqlite"); if(!file_exists(DATABASE)) { new file = fopen(DATABASE, "w"); if(!file) { new szMsg[128]; formatex(szMsg, charsmax(szMsg), "%s file not found and cant be created.", DATABASE); set_fail_state(szMsg); } fclose(file); } g_Tuple = SQL_MakeDbTuple("", "", "", DATABASE, 0); formatex(g_szQuery, charsmax(g_szQuery), "CREATE TABLE IF NOT EXISTS `players`( \ id INTEGER PRIMARY KEY,\ ip TEXT NOT NULL, \ steamid TEXT NOT NULL,\ lastseen INTEGER)"); SQL_ThreadQuery(g_Tuple, "QueryHandleCreate", g_szQuery); formatex(g_szQuery, charsmax(g_szQuery), "DELETE FROM `players` WHERE lastseen<%d", get_systime() - SAVE_LASTDAYS * 86400); SQL_ThreadQuery(g_Tuple, "QueryHandleCreate", g_szQuery); } public QueryHandleCreate(failstate, Handle:query, error[], errnum, data[], size) { if(failstate != TQUERY_SUCCESS) { log_amx("SQL QueryHandleCreate error: %s", error); } } public client_authorized(id) { if(is_user_steam(id) || is_user_bot(id) || is_user_hltv(id)) return; new szPlayerIp[32]; get_user_ip(id, szPlayerIp, charsmax(szPlayerIp), 1); new szPlayerSteamid[32]; get_user_authid(id, szPlayerSteamid, charsmax(szPlayerSteamid)); if(containi(szPlayerSteamid, "lan") != -1) return; #if defined WHITELIST new eNetData[WhitelistData]; for( new i; i < sizeof(g_szWhiteList); i++ ) { ArrayGetArray( g_aWhitelist, i, eNetData ); if( eNetData[NET_IP] == ip_to_long(szPlayerIp) & eNetData[NET_MASK] ) return; } #endif new data[1]; data[0] = id; formatex(g_szQuery, charsmax(g_szQuery), "SELECT * FROM `players` WHERE ip='%s' LIMIT %d", szPlayerIp, STEAMID_PER_IP); SQL_ThreadQuery(g_Tuple, "QueryHandleCheckPlayer", g_szQuery, data, sizeof(data)); } public QueryHandleCheckPlayer(failstate, Handle:query, error[], errnum, data[], size) { if(failstate != TQUERY_SUCCESS) { log_amx("SQL QueryHandleCheckPlayer error: %s", error); return; } new id = data[0]; new szPlayerIp[32]; get_user_ip(id, szPlayerIp, charsmax(szPlayerIp), 1); new szPlayerSteamid[32]; get_user_authid(id, szPlayerSteamid, charsmax(szPlayerSteamid)); if(SQL_MoreResults(query)) { new index = SQL_ReadResult(query, 0); new szLoadedIp[32]; SQL_ReadResult(query, 1, szLoadedIp, charsmax(szLoadedIp)); new szLoadedSteamid[32]; SQL_ReadResult(query, 2, szLoadedSteamid, charsmax(szLoadedSteamid)); if(equali(szPlayerSteamid, szLoadedSteamid)) { UpdatePlayer(index); } else { #if STEAMID_PER_IP == 1 server_cmd("kick #%d %s", get_user_userid(id), REASON); #else new count = 1; SQL_NextRow(query); while(SQL_MoreResults(query)) { count++; index = SQL_ReadResult(query, 0); SQL_ReadResult(query, 1, szLoadedIp, charsmax(szLoadedIp)); SQL_ReadResult(query, 2, szLoadedSteamid, charsmax(szLoadedSteamid)); if(equali(szPlayerSteamid, szLoadedSteamid)) { UpdatePlayer(index); return; } else if(count == STEAMID_PER_IP) { server_cmd("kick #%d %s", get_user_userid(id), REASON); return; } SQL_NextRow(query); } if(count < STEAMID_PER_IP) { InsertPlayer(szPlayerIp, szPlayerSteamid); } #endif } } else { InsertPlayer(szPlayerIp, szPlayerSteamid); } } InsertPlayer(szPlayerIp[], szPlayerSteamid[]) { formatex(g_szQuery, charsmax(g_szQuery), "INSERT INTO `players`(ip, steamid, lastseen) VALUES ('%s', '%s', %d)", szPlayerIp, szPlayerSteamid, get_systime()); SQL_ThreadQuery(g_Tuple, "QueryHandleInsertPlayer", g_szQuery); } public QueryHandleInsertPlayer(failstate, Handle:query, error[], errnum, data[], size) { if(failstate != TQUERY_SUCCESS) { log_amx("SQL QueryHandleInsertPlayer error: %s", error); } } UpdatePlayer(index) { formatex(g_szQuery, charsmax(g_szQuery), "UPDATE `players` SET lastseen=%d WHERE id=%d", get_systime(), index); SQL_ThreadQuery(g_Tuple, "QueryHandleUpdatePlayer", g_szQuery); } public QueryHandleUpdatePlayer(failstate, Handle:query, error[], errnum, data[], size) { if(failstate != TQUERY_SUCCESS) { log_amx("SQL QueryHandleUpdatePlayer error: %s", error); } } stock bool:is_user_steam(id) { static dp_pointer; if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider"))) { server_cmd("dp_clientinfo %d", id); server_exec(); return (get_pcvar_num(dp_pointer) == 2) ? true : false; } return false; } /*-- Modified and simplified 'IP converter stocks' by Zetex --*/ // Gets net and mask as LONG from subnet. stock net_to_long( net_string[], &net, &mask ) { new i, ip[16]; i = copyc( ip, charsmax(ip), net_string, '/' ); mask = i ? cidr_to_long( net_string[i + 1] ) : 0xFFFFFFFF; /* mask /32, IP itself */ net = ip_to_long(ip) & mask; } // Converts mask to LONG. Returns unsigned long. stock cidr_to_long( mask_string[] ) { new mask = str_to_num(mask_string); new result = (1 << 31) >> (mask - 1); return result; } // Converts IP to LONG. Returns unsigned long. stock ip_to_long( ip_string[] ) { new right[16], part[4], octet, ip = 0; strtok( ip_string, part, 3, right, 15, '.' ); for( new i = 0; i < 4; i++ ) { octet = str_to_num(part); ip += octet; if( i == 3 ) break; strtok( right, part, 3, right, 15, '.' ); ip = ip << 8; } return ip; } Давно забыл забыл про таких недочитеров))
Отредактировал: viper2020, - 13.4.2017, 23:54
|
|
|
adva |
14.4.2017, 0:01
Сообщение
|
|
|
|
|
viper2020 |
14.4.2017, 0:11
Сообщение
|
|
|
|
|
zippel |
14.4.2017, 4:37
Сообщение
|
|
Это чит софт и чит кс в которую встроена команда такая,прием тут dproto? При том что чистый HLDS его дропнет с ошибкой AUTH ERROR, а дпроту фиолетово, ему бы по возможности пустить клиента, а не проверять его :) Ну если выдавать ему стим ид по IP,то конечно не спасёт,но это надо быть олухом полным))) А что делать с теми кто лезет с 16 патча на VALVE_ID_LAN или STEAM_ID_PENDING :) Отключать весь 47й? Есть еще олдскул фэны непечатных клиентов даже. Скажу больше, эти клиенты работают шустрее даже чем любая новая сборка на 48м протоколе, не важно от какой команды и какого хоста МСа в том то и прикол, что у него динамический, но я ему UDP залочил, и он пропал ваще.. Хотя странно, ему же МС должен выкидывать сервер. P.S. во всяком случае, как я понимаю, reHLDS уже спокойно решает такие проблемы.. Не.. Позволяет решать :) P.S.S. где можно почитать нормальной рус, или укр инфы по теме как писать под reHLDS или как оно ваще работает?
Отредактировал: zippel, - 14.4.2017, 5:18
|
|
|
mrpheel |
14.4.2017, 8:05
Сообщение
|
|
zippel, тут есть отдельный раздел по ReHLDS. Но переход на него не решит твоей проблемы. Отсеивай игроков, которые могут менять steamid с помощью rechecker (opengl detector), alias checker, dopban.
|
|
|
adva |
14.4.2017, 10:27
Сообщение
|
|
mrpheel, я вообще не вижу смысла их отсеивать, поставил допбан или супербан, они же метки оставляют. Ему уже будет очень сложно зайти на сервер после бана. Во многих сборках я наблюдаю идет стимайди чейнджер. Чо их всех банить? Перейти на rehlds + reauthcheck + допбан. Либо сразу бан с помощью alias checker
|
|
|
mrpheel |
14.4.2017, 11:10
Сообщение
|
|
mrpheel, я вообще не вижу смысла их отсеивать, поставил допбан или супербан, они же метки оставляют. Ему уже будет очень сложно зайти на сервер после бана. Во многих сборках я наблюдаю идет стимайди чейнджер. Чо их всех банить? Перейти на rehlds + reauthcheck + допбан. Либо сразу бан с помощью alias checker Вообще редко у себя встречаю додиков, которые айди меняют) Допбана нет. Если вдруг совсем надоедливый чел попадется, баню подсеть на несколько часов. Как то не липнут они ко мне)) В речекере щадящая проверка на чейнджеры, с популярных сборок не отсеивает. |
|
|
viper2020 |
14.4.2017, 11:43
Сообщение
|
|
У меня и допбана нету,чисто фрешбанс,reunion,reauthchek и steamid_limiter и ещё ни разу не было замечено подобных клоунов))
|
|
|
register |
19.4.2017, 4:01
Сообщение
|
DB ставь
|
|
|
|