Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
прив, еще летом я реверсил основные пакеты для авторизации на сервер через раксамп / взаимодействия с интерфейсом, но желания писать бота уже не было.
так как гении начали продавать это за 15к - заливаю бесплатно. Ниже найдете текстовик который я заполнял во время реверса и функции с отправкой/обработкой пакетов, краткое объяснения шагов захода.
на этом всё.
так как гении начали продавать это за 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 <= 0x1000 && uiStrLength != 0 )
{
bsPacket.Read( szStr, uiStrLength );
szStr[uiStrLength] = '\0';
if ( strcmp( szStr, "Auth" ) == 0 )
{
SendAuthenticationQuery();
}
}
}
void CChiefBot::RmrCloseDialog()
{
RakNet::BitStream bsData;
bsData.Write( (uint8_t)215 );
bsData.Write( (uint16_t)2 );
bsData.Write( (uint32_t)0 );
bsData.Write( (uint32_t)16 );
bsData.Write( "OnDialogResponse", 16 );
bsData.Write( (uint32_t)8 );
bsData.Write( (uint32_t)100 );
bsData.Write( (uint16_t)25600 );
bsData.Write( (uint16_t)0 ); // button
bsData.Write( (uint8_t)0 );
bsData.Write( (uint16_t)25600 );
bsData.Write( (uint32_t)-1 ); // list item
bsData.Write( (uint8_t)115 );
m_pRakClient->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 );
}
на этом всё.