PDA

Просмотр полной версии : разобранные raknet пакеты радмира(crmp)


Cake_
10.11.2022, 00:04
прив, еще летом я реверсил основные пакеты для авторизации на сервер через раксамп / взаимодействия с интерфейсом, но желания писать бота уже не было.

так как гении начали продавать это за 15к - заливаю бесплатно. Ниже найдете текстовик который я заполнял во время реверса и функции с отправкой/обработкой пакетов, краткое объяснения шагов захода.



@@packet name: SendDialogResponse
@@type: outbound
[#]parameters:
[1]uint8_t packetId
[2]uint16_t signalType // !!desirable value!! == 2
[3]uint32_t Unk
[4]uint32_t descriptorLength // !!desirable value!! == 16
[5]char descriptor // !!desirable value!! == "OnDialogResponse"
[6]uint32_t Unk
[7]uint32_t Unk
[8]uint16_t Unk
[9]uint16_t button
[10]uint8_t Unk
[11]uint16_t Unk
[12]uint32_t listItem
[13]uint8_t Unk
[14]uint32_t answerbackLength
[15]char answerback

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

@@packet name: SendHardwareSpecifications (Handshake)
@@type: outbound
@@comment: отправляется при получении пакета #34(ID_CONNECTION_REQUEST_ACCEPTED)
[#]parameters: // !!test values!!
[1]uint8_t packetId; // 215
[2]uint16_t signalType; // 1
[3]uint32_t Unk; // 51
[4]uint8_t Unk; // 0
[5]uint32_t str1_length; // 30
[6]char str1; // WD-WCC6Y2XZN97N190449674902806
[7]uint32_t str2_length; // 40
[8]char str2; // 1528FEE466C3A51C875E9D652EFA307F4B7725BE

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

@@packet name: SendAuthenticationQuery
@@type: outbound
@@comment: отправляется при нажатии кнопки подключения(с ввёденым паролем в инпут боксе)
[#]parameters: // !!test values!!
[1]uint8_t packetId; // 215
[2]uint16_t signalType; // 2
[3]uint32_t Unk; // 0
[4]uint32_t descriptor_length; // 18
[5]char descriptor; // OnPlayerStartLogin
[6]uint32_t Unk; // 2
[7]uint8_t Unk; // 115
[8]uint32_t str_pass_length; // 6
[9]char str_pass[6]; // 123123

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

@@packet name: ConfirmBrowserInitialization
@@type: outbound
@@comment: отправляется после Handshake'а
[#]parameters: // !!test values!!
[1]uint8_t packetId // 215
[2]uint16_t signalType // 2
[3]uint32_t Unk // 0
[4]uint32_t descriptor_length // 22
[5]char descriptor // EndedInitializeBrowser
[6]uint32_t unk // 0

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


функции захардкожены, т.к. нужны были лишь для проверки правильности заполненных последовательностей. бит. (как это не странно, некоторые участки кода удалены)

сниппеты использования:






#define ID_RADMIR_MESSAGE 215
// processnetwork
case
ID_RADMIR_MESSAGE
:
Packet_RadmirMsg
(
pkt
)
;
break
;
void
CBot
::
Packet_RadmirMsg
(
Packet
*
p
)
{
RakNet
::
BitStream
bsPacket
(
(
unsigned
char
*
)
p
->
data
,
p
->
length
,
false
)
;
uint32_t
uiStrLength
;
char
szStr
[
0x1000
]
;
bsPacket
.
ResetReadPointer
(
)
;
bsPacket
.
IgnoreBits
(
64
)
;
bsPacket
.
Read
(
uiStrLength
)
;
if
(
uiStrLength

Send
(
&
bsData
,
HIGH_PRIORITY
,
UNRELIABLE_SEQUENCED
,
0
)
;
}
// отправляется через 1.5 - 3 сек после получении пакета #34(ID_CONNECTION_REQUEST_ACCEPTED)
void
CChiefBot
::
SendHandshake
(
void
)
{
RakNet
::
BitStream bsHandshake
;
bsHandshake
.
Write
(
(
uint8_t
)
215
)
;
bsHandshake
.
Write
(
(
uint16_t
)
1
)
;
bsHandshake
.
Write
(
(
uint32_t
)
51
)
;
bsHandshake
.
Write
(
(
uint8_t
)
0
)
;
bsHandshake
.
Write
(
(
uint32_t
)
30
)
;
bsHandshake
.
Write
(
"WD-WCC6Y2XZN97N190449674902806"
,
30
)
;
bsHandshake
.
Write
(
(
uint32_t
)
40
)
;
bsHandshake
.
Write
(
"1528FEE466C3A51C875E9D652EFA307F4B7725BE"
,
40
)
;
m_pRakClient
->
Send
(
&
bsHandshake
,
HIGH_PRIORITY
,
RELIABLE
,
NULL
)
;
RakNet
::
BitStream bsBrowser
;
bsBrowser
.
Write
(
(
uint8_t
)
215
)
;
bsBrowser
.
Write
(
(
uint16_t
)
2
)
;
bsBrowser
.
Write
(
(
uint32_t
)
0
)
;
bsBrowser
.
Write
(
(
uint32_t
)
22
)
;
bsBrowser
.
Write
(
"EndedInitializeBrowser"
,
22
)
;
bsBrowser
.
Write
(
(
uint32_t
)
0
)
;
m_pRakClient
->
Send
(
&
bsBrowser
,
HIGH_PRIORITY
,
RELIABLE
,
NULL
)
;
}
// использование в void CBot::Packet_RadmirMsg( Packet* p )
void
CChiefBot
::
SendAuthenticationQuery
(
void
)
{
RakNet
::
BitStream bsAuthQuery
;
bsAuthQuery
.
Write
(
(
uint8_t
)
215
)
;
bsAuthQuery
.
Write
(
(
uint16_t
)
2
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
0
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
18
)
;
bsAuthQuery
.
Write
(
"OnPlayerStartLogin"
,
18
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
2
)
;
bsAuthQuery
.
Write
(
(
uint8_t
)
115
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
6
)
;
bsAuthQuery
.
Write
(
"123123"
,
6
)
;
m_pRakClient
->
Send
(
&
bsAuthQuery
,
HIGH_PRIORITY
,
RELIABLE
,
NULL
)
;
}




на этом всё.

kwedle
10.11.2022, 01:26
@FakeSince (https://www.blast.hk/members/442544/) что с лицом?

манку хлебал
10.11.2022, 02:59
Ты проделал нереально сложную работу, результаты которой выложил в открытый доступ, красавчик. Расскажи как ты научился реверсить это все, если конечно не секрет

Михаил Бластов
10.11.2022, 13:42
гении начали продавать это за 15к


бля, что в этом такого? реверс не быстро происходит. а продавать начали еще в марте если что

Sargon
10.11.2022, 13:58
реверс не быстро происходит


дело нескольких минут

Михаил Бластов
10.11.2022, 14:31
дело нескольких минут


нет

kru_tin
10.11.2022, 15:35
дело нескольких минут


при условии что ты знаешь как устроена структура пакета)))))

Sekondr For
10.11.2022, 21:22
прив, еще летом я реверсил основные пакеты для авторизации на сервер через раксамп / взаимодействия с интерфейсом, но желания писать бота уже не было.
так как гении начали продавать это за 15к - заливаю бесплатно. Ниже найдете текстовик который я заполнял во время реверса и функции с отправкой/обработкой пакетов, краткое объяснения шагов захода.

функции захардкожены, т.к. нужны были лишь для проверки правильности заполненных последовательностей. бит. (как это не странно, некоторые участки кода удалены)

сниппеты использования:






#define ID_RADMIR_MESSAGE 215
// processnetwork
case
ID_RADMIR_MESSAGE
:
Packet_RadmirMsg
(
pkt
)
;
break
;
void
CBot
::
Packet_RadmirMsg
(
Packet
*
p
)
{
RakNet
::
BitStream
bsPacket
(
(
unsigned
char
*
)
p
->
data
,
p
->
length
,
false
)
;
uint32_t
uiStrLength
;
char
szStr
[
0x1000
]
;
bsPacket
.
ResetReadPointer
(
)
;
bsPacket
.
IgnoreBits
(
64
)
;
bsPacket
.
Read
(
uiStrLength
)
;
if
(
uiStrLength

Send
(
&
bsData
,
HIGH_PRIORITY
,
UNRELIABLE_SEQUENCED
,
0
)
;
}
// отправляется через 1.5 - 3 сек после получении пакета #34(ID_CONNECTION_REQUEST_ACCEPTED)
void
CChiefBot
::
SendHandshake
(
void
)
{
RakNet
::
BitStream bsHandshake
;
bsHandshake
.
Write
(
(
uint8_t
)
215
)
;
bsHandshake
.
Write
(
(
uint16_t
)
1
)
;
bsHandshake
.
Write
(
(
uint32_t
)
51
)
;
bsHandshake
.
Write
(
(
uint8_t
)
0
)
;
bsHandshake
.
Write
(
(
uint32_t
)
30
)
;
bsHandshake
.
Write
(
"WD-WCC6Y2XZN97N190449674902806"
,
30
)
;
bsHandshake
.
Write
(
(
uint32_t
)
40
)
;
bsHandshake
.
Write
(
"1528FEE466C3A51C875E9D652EFA307F4B7725BE"
,
40
)
;
m_pRakClient
->
Send
(
&
bsHandshake
,
HIGH_PRIORITY
,
RELIABLE
,
NULL
)
;
RakNet
::
BitStream bsBrowser
;
bsBrowser
.
Write
(
(
uint8_t
)
215
)
;
bsBrowser
.
Write
(
(
uint16_t
)
2
)
;
bsBrowser
.
Write
(
(
uint32_t
)
0
)
;
bsBrowser
.
Write
(
(
uint32_t
)
22
)
;
bsBrowser
.
Write
(
"EndedInitializeBrowser"
,
22
)
;
bsBrowser
.
Write
(
(
uint32_t
)
0
)
;
m_pRakClient
->
Send
(
&
bsBrowser
,
HIGH_PRIORITY
,
RELIABLE
,
NULL
)
;
}
// использование в void CBot::Packet_RadmirMsg( Packet* p )
void
CChiefBot
::
SendAuthenticationQuery
(
void
)
{
RakNet
::
BitStream bsAuthQuery
;
bsAuthQuery
.
Write
(
(
uint8_t
)
215
)
;
bsAuthQuery
.
Write
(
(
uint16_t
)
2
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
0
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
18
)
;
bsAuthQuery
.
Write
(
"OnPlayerStartLogin"
,
18
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
2
)
;
bsAuthQuery
.
Write
(
(
uint8_t
)
115
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
6
)
;
bsAuthQuery
.
Write
(
"123123"
,
6
)
;
m_pRakClient
->
Send
(
&
bsAuthQuery
,
HIGH_PRIORITY
,
RELIABLE
,
NULL
)
;
}




на этом всё.


Братанчик его можно было бы оформить ешо короче и оптимизирование( а Ладна тут и написано.Я тупой кароче)

kin4stat
11.11.2022, 01:36
Ты проделал нереально сложную работу


Ахуеть какая нереально сложная работа посмотреть строки в хекс эдиторе лол. Тут половина полей названа unk, хотя там интуитивно понятно почти со всеми полями за что оно отвечает

Михаил Бластов
11.11.2022, 01:38
слушайте, раз вы тут пиздец какие крутые реверсеры - зареверсите пакетики интерфейсов аризоны и cef в общем

манку хлебал
11.11.2022, 04:19
Ахуеть какая нереально сложная работа посмотреть строки в хекс эдиторе лол. Тут половина полей названа unk, хотя там интуитивно понятно почти со всеми полями за что оно отвечает


Смысл твоего сообщения? Для меня то что он проделал - непонятный порядок действий. Я пробовал себя в реверсе (не только ***ня, связанная с сампом, но и обычный десктопный софт), но для меня это сложно. Реверс мне не даётся, поэтому я решил спросить то, как он это сделал (с целью попытаться открыть для себя новую область в "околопрограммировании".

Давай поставим тебя вырезать аппендикс человеку. Ты сможешь? Ни-ху-я. А хирург скажет "ахуеть какая нереально сложная работа", ему же надо всего провести скапелем по коже, вырезать сам аппендикс и все.

Sekondr For
11.11.2022, 08:23
слушайте, раз вы тут пиздец какие крутые реверсеры - зареверсите пакетики интерфейсов аризоны и cef в общем


Пакеты интрфейсов арз?Настолько лень человеку.

Rei
11.11.2022, 15:37
Смысл твоего сообщения? Для меня то что он проделал - непонятный порядок действий. Я пробовал себя в реверсе (не только ***ня, связанная с сампом, но и обычный десктопный софт), но для меня это сложно. Реверс мне не даётся, поэтому я решил спросить то, как он это сделал (с целью попытаться открыть для себя новую область в "околопрограммировании".
Давай поставим тебя вырезать аппендикс человеку. Ты сможешь? Ни-ху-я. А хирург скажет "ахуеть какая нереально сложная работа", ему же надо всего провести скапелем по коже, вырезать сам аппендикс и все.


onSendPacket()?

манку хлебал
11.11.2022, 16:24
onSendPacket()?


во-первых, сначала нужно поебаться со скриптом, который позволит выводить инфу о пакете (насколько я знаю, на лаунчере радмира не поддерживается sf)

во-вторых, с этим скриптом нужно зайти в игру

в-третьих, сидеть гадать структуру пакета

Михаил Бластов
11.11.2022, 17:14
Пакеты интрфейсов арз?Настолько лень человеку.


нихуя не понял

Arabqik
14.11.2022, 01:14
куда это вставлять?

zFriks
24.11.2022, 19:29
Frame 6.pngzFriks · 24 Ноя 2022 в 18:29' data-fancybox="lb-post-1202279" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/179152/" style="cursor: pointer;" title="Frame 6.png">
https://forum.antichat.xyz/attachments/28202279/

js функция, которая отправляет dialog response

sendClientEvent(0, "OnDialogResponse",0, 0, -1, "")

Thrill_Pill
25.11.2022, 16:27
js функция, которая отправляет dialog response

sendClientEvent(0, "OnDialogResponse",0, 0, -1, "")



Мб кому-то надо для RakSAMP Lite (https://www.blast.hk/threads/108052)..

Lua:






local
bs
=
bitStream
.
new
(
)
bs
:
writeUInt8
(
215
)
bs
:
writeUInt16
(
2
)
bs
:
writeUInt32
(
0
)
bs
:
writeUInt32
(
16
)
bs
:
writeString
(
"OnDialogResponse"
)
bs
:
writeUInt32
(
8
)
bs
:
writeUInt32
(
100
)
bs
:
writeUInt16
(
25600
)
bs
:
writeUInt16
(
button
)
bs
:
writeUInt8
(
0
)
bs
:
writeUInt16
(
25600
)
bs
:
writeUInt32
(
item
)
bs
:
writeUInt8
(
115
)
bs
:
writeUInt32
(
input
:
len
(
)
)
bs
:
writeString
(
input
)

loossklxm
10.06.2023, 03:43
Мб кому-то надо для RakSAMP Lite (https://www.blast.hk/threads/108052)..

Lua:






local
bs
=
bitStream
.
new
(
)
bs
:
writeUInt8
(
215
)
bs
:
writeUInt16
(
2
)
bs
:
writeUInt32
(
0
)
bs
:
writeUInt32
(
16
)
bs
:
writeString
(
"OnDialogResponse"
)
bs
:
writeUInt32
(
8
)
bs
:
writeUInt32
(
100
)
bs
:
writeUInt16
(
25600
)
bs
:
writeUInt16
(
button
)
bs
:
writeUInt8
(
0
)
bs
:
writeUInt16
(
25600
)
bs
:
writeUInt32
(
item
)
bs
:
writeUInt8
(
115
)
bs
:
writeUInt32
(
input
:
len
(
)
)
bs
:
writeString
(
input
)





Есть то же самое, но для инвентаря?

Переместить, продать, передать

Jaz1zl
27.09.2023, 21:44
[5]char descriptor; // OnPlayerStartLogin

Как получить это значение(метод)?

Знаю что уже прошло почти год, но может кто-то да и ответит

F0RQU1N and
28.09.2023, 16:36
[5]char descriptor; // OnPlayerStartLogin
Как получить это значение(метод)?
Знаю что уже прошло почти год, но может кто-то да и ответит


там сейчас вроде OnAuthorizationStart

или что ты имеешь ввиду

Jaz1zl
30.09.2023, 01:50
там сейчас вроде OnAuthorizationStart
или что ты имеешь ввиду


Всё это я нашёл даже для регистрации, через пакеты узнал, теперь осталось понять в какой последовательности и какие пакеты отпровлять

F0RQU1N and
30.09.2023, 04:24
Всё это я нашёл даже для регистрации, через пакеты узнал, теперь осталось понять в какой последовательности и какие пакеты отпровлять


Ну посмотри в какой последовательности у тебя отправляется в игре, домой приду могу кинуть скрипт , если конечно оно не устарело еще

Jaz1zl
30.09.2023, 23:45
Ну посмотри в какой последовательности у тебя отправляется в игре, домой приду могу кинуть скрипт , если конечно оно не устарело еще


ну смотри. легко я разобрался в бонуске

Lua:






local
bs
=
raknetNewBitStream
(
)
local
method
=
'OnRegistrationBonuses'
local
ref
=
''
raknetBitStreamWriteInt8
(
bs
,
215
)
raknetBitStreamWriteInt16
(
bs
,
2
)
raknetBitStreamWriteInt32
(
bs
,
0
)
raknetBitStreamWriteInt32
(
bs
,
#
method
)
raknetBitStreamWriteString
(
bs
,
method
)
raknetBitStreamWriteInt32
(
bs
,
2
)
raknetBitStreamWriteInt8
(
bs
,
115
)
raknetBitStreamWriteInt32
(
bs
,
#
ref
)
raknetBitStreamWriteString
(
bs
,
ref
)
raknetSendBitStreamEx
(
bs
,
1
,
9
,
0
)




А вот в вводе пароля для регистрации не как не пойму что не так отправляю

Lua:






function
reg1
(
email
,
pass
)
print
(
'---------------reg---------'
)
local
bs
=
raknetNewBitStream
(
)
local
method
=
'OnRegistrationData'
print
(
email
)
print
(
pass
)
raknetBitStreamWriteInt8
(
bs
,
215
)
raknetBitStreamWriteInt16
(
bs
,
2
)
raknetBitStreamWriteInt32
(
bs
,
0
)
raknetBitStreamWriteInt32
(
bs
,
#
method
)
raknetBitStreamWriteString
(
bs
,
method
)
raknetBitStreamWriteInt8
(
bs
,
115
)
raknetBitStreamWriteInt32
(
bs
,
#
email
)
raknetBitStreamWriteString
(
bs
,
email
)
raknetBitStreamWriteInt8
(
bs
,
115
)
raknetBitStreamWriteInt32
(
bs
,
#
pass
)
raknetBitStreamWriteString
(
bs
,
pass
)
raknetSendBitStreamEx
(
bs
,
1
,
9
,
0
)
end

F0RQU1N and
01.10.2023, 12:51
А вот в вводе пароля для регистрации не как не пойму что не так отправляю


хз, я регистрацию себе не делал.