Цитата:
Сообщение от primerb
Вот щас так и собираюсь сделать... но никогда не занимался отладкой чужих програмулинок...)
Добавлено через 47 минут
Все сделал, берутся первые 4тыре ключа. Моя проблема была в том что я для переменной 4байта выделял ровно 4 байта (char a[3]) и забыл про "завершающий 0. Выделил 4 байта + 1 для нуля (char a[4]) - и все запахало)!)!)!)!
|
а зачем ты массив char используешь для хранения ключей? char[] только для пакета, ключе же надо разбить на DWORDы и далее уже производить с ними необходимые операции. Вот на примере пакета из той темы, ты вроде на плюсах пишешь
Код:
char recv[] = "\x09\x20\xC0\xB8\xC4\x00\x15\xCD\xF7\xAE\x7E\xFD\x2B\xEC\xB0\x32\x8B\x0C\x00\x96\x3B\x5D\x07\x30\xB7\x87\x5F\x43\xBB\x35\x45\x15\x25\xB3\xCD\x11\x64\x4B\xFA\x40";
DWORD Sessionkey[4] = { 0 };
Sessionkey[0] = *(DWORD*)(recv+20); //5
Sessionkey[1] = *(DWORD*)(recv+12); //3
Sessionkey[2] = *(DWORD*)(recv+28); //7
Sessionkey[3] = *(DWORD*)(recv+4); //1
DWORD key[4] = { 0xCFCF22E6, 0x5BBCDE6F, 0xACDF5EDA, 0xBCCD1B37 };
for (int i = 0; i < 4; i++)
Sessionkey[i] ^= key[i];
конечно в идеале не плохо бы все это в отдельную структуру вогнать, но для примера сойдет и так
Добавлено через 1 час 16 минут
Цитата:
Сообщение от primerb
Моя проблема была в том что я для переменной 4байта выделял ровно 4 байта (char a[3]) и забыл про "завершающий 0. Выделил 4 байта + 1 для нуля (char a[4]) - и все запахало)!)!)!)!
|
Ого только щас заметил. Это в каких таких книжках пишут что char a[3]; это 4 байта?