Цитата:
Сообщение от lamo386
этот пакет ты взял из Пх ? так вот это расшифрованный пакет.
из сылки которую постил ты же
если по русски то пакет(42байта) состоит из 2 байта размер, 36 байт дата (1 байт ид пакета, 4 байта сесион ид, 3 по 4 байта это для ГГ, 4 байта ноль), 4байта чек сумма.
сначало собирается пакет потом этот пакет без размера (помни длинна пакета -2) отдается блоуфишу.
|
Этот пакет который должен быть , а это пакет который я собрал
Код:
2A 00 07 85 1D 5E 6D 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 6A 85 1D 5E 00 00
00 00 00 00 00 00 00 00 00 00
вся проблема в том что я не знаю где брать последние 2 байта у меня
00 00 а должно быть
1C FC но оно почему то постоянно меняется, я не знаю почему, и откуда брать эти 2 последних байта...
Ты меня не совсем понимаешь) я делаю перевожу с
la2_client_emu (Исходник авторизации на Delphi) вся проблема в том что там откуда не возьмись берутся нужные байты...
Во вторых я посылаю на функцию
Encode
Вот скрипт функции
Код:
public static byte[] Encode(byte[] data, int _len)
{
int i, len;
byte[] DBuff = new byte[8];
len = _len ;
for (i = 0; i < len / 8; i++)
{
Array.Copy(data, i * 8, DBuff, 0, 8);
DBuff = EncodeBlock(DBuff);
//Debug.Log("Encode : " + BitConverter.ToString(DBuff).Replace("-"," ")) ;
Array.Copy(DBuff, 0, data, i * 8, 8);
}
return data;
}
Код:
private static byte[] EncodeBlock(byte[] __data)
{
long xrd, xld;
xld = BitConverter.ToInt32(__data, 0);
xrd = BitConverter.ToInt32(__data, 4);
//Debug.Log("xld "+BitConverter.ToString(BitConverter.GetBytes(xld)) + " xrd" + BitConverter.ToString(BitConverter.GetBytes(xrd))) ;
Blowfish_encipher(ref xld, ref xrd);
Array.Copy(BitConverter.GetBytes((Int32)xld), 0, __data, 0, 4);
Array.Copy(BitConverter.GetBytes((Int32)xrd), 0, __data, 4, 4);
return __data;
}
Код:
Код:
public static void Blowfish_encipher(ref long xl, ref long xr)
{
long xl2, xr2;
xl2 = xl;
xr2 = xr;
xl2 = (xl2 ^ PArray[0]);
RoundMy(ref xr2, ref xl2, 1); RoundMy(ref xl2, ref xr2, 2);
RoundMy(ref xr2, ref xl2, 3); RoundMy(ref xl2, ref xr2, 4);
RoundMy(ref xr2, ref xl2, 5); RoundMy(ref xl2, ref xr2, 6);
RoundMy(ref xr2, ref xl2, 7); RoundMy(ref xl2, ref xr2, 8);
RoundMy(ref xr2, ref xl2, 9); RoundMy(ref xl2, ref xr2, 10);
RoundMy(ref xr2, ref xl2, 11); RoundMy(ref xl2, ref xr2, 12);
RoundMy(ref xr2, ref xl2, 13); RoundMy(ref xl2, ref xr2, 14);
RoundMy(ref xr2, ref xl2, 15); RoundMy(ref xl2, ref xr2, 16);
xr2 = (xr2 ^ PArray[17]);
xr = xl2;
xl = xr2;
}
Вот какое данные отправляю туда данные
1 - й этой мой пакетик готовый
Не трогаем - 2A 00
0x0000|
2A 00 07 93 55 3A 08 00 00 00 00 00 00 00 00 00
0x0010| 00 00 00 00 00 00 00 00 00 00 0F 93 55 3A 00 00
0x0020| 00 00 00 00 00 00 00 00 00 00
что делается дальше
Функция
Move(buff[0],send_buff[2],Len-2);
Как видно что уже на конце опять же
B8 00 откуда оно вылезло
07 93 это размер он дается в начале...
Client MSG, Length: 42 (0x2A)
-------------------------------------------------------
0x0000|
07 93 55 3A 08 00 00 00 00 00 00 00 00 00 00 00
0x0010| 00 00 00 00 00 00 00 00 0F 93 55 3A 00 00 00 00
0x0020| 00 00 00 00 00 00 00 00
B8 00
и вот это уже отправляется на расшифрацию.
Ведь это все правильно да?
Далее посылаю в блоуфиш, функцию которую я описал ввыше
Вот ответ
с функцией
Код:
Move(temp_buff[0],send_buff[2],Len-2);
Код:
2A 00 85 DE 5B 3B 36 8F FF EA 1A 02 A4 D3 50 64 C8 50 1A 02 A4 D3 50 64 C8 50 DB 7F 8C 39 34 3D 06 12 1A 02 A4 D3 50 64 C8 50
Он вообще не соответствует тому что я записываю, и вывожу через
la2_client_emu
Может быть я ошибаюсь и этот пакет верный я не знаю, но вот я показал что отправляется и что я получаю...
Вся проблема в 2-х последних байтах и наверно не правильном ответе, при дешировке
Блоуфиша Encode
Надеюсь я понятно описал))
Добавлено через 7 минут
Сори вот ещё забыл, вот какой должен быть правильный ответ
тут тоже использовалась функция
Код:
Move(temp_buff[0],send_buff[2],Len-2);
Но это не сильно важно, даже если и использовать её, много не измениться...
Код:
0x0000| 07 93 9B 70 C3 4F B1 0B FC 51 68 D0 7E 60 DA E2
0x0010| 6F B6 68 D0 7E 60 DA E2 6F B6 2D 29 A9 9F 3F A2
0x0020| A9 31 68 D0 7E 60 DA E2 6F B6