Показать сообщение отдельно
Непрочитано 12.07.2014, 20:21   #4
Аватар для n3k0nation
Antihero

По умолчанию Re: Структура/шифрация пакетов Логин сервера

Все данные при передаче по сети идут в LittleEndian.

Длина пакета вычисляется таким образом:
Код:
encryptData + header
Заголовок статичен, он имеет размер 2 байта.
В дату входит опкод и сама дата.

Проверка чексуммы
Начинаем собирать посредством побайтовой сборки - dword и дальнейшим захориванием нуль-числа.
Код:
		long chksum = 0;
		for (int i = 0; i < count; i += 4) {
			check = raw[i] & 0xff;
			check |= raw[i + 1] << 8 & 0xff00;
			check |= raw[i + 2] << 0x10 & 0xff0000;
			check |= raw[i + 3] << 0x18 & 0xff000000;
			chksum ^= check;
		}
Последние 4 байта делаем тоже самое, но без хора и далее сравниваем:
Код:
check == chksum
Запись чексуммы точно такая же, но конечно, в обратном порядке:
:
Свернуть ↑Развернуть ↓



Я забыл упомянуть, что при статичном крипте (когда используется статичный ключ блоуфиша) - мы хорим все данные перед криптом блоуфиша. Перед данными, мы кладем хор-ключ длиной в 4 байта, а уже после, мы покрываем блоуфишем все это.

Добавлено через 3 минуты
Суффикс
Его нету ;D Если это пакет Init, то он означает окончание блоуфиш ключа.

Добавлено через 5 минут
Чексумма генерится для даты (опкод + дата)

Добавлено через 12 минут
Цитата:
Сообщение от Donatte Посмотреть сообщение
3. Шифрация. Люди пишут что шифруется весь пакет начиная с третьего байта. Собсбвенно, есть ли смысл выполнять шифрацию, если планируется общаться с сервером одним пакетом (отправил пакет с сайта и получил ответ с логина), не доходя до Init пакета?
Можно, почему нет? Правда для этого придется править сервер Плюс вопрос в том, насколько передаваемые данные секретны.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.

Последний раз редактировалось n3k0nation; 12.07.2014 в 20:33. Причина: Добавлено сообщение
n3k0nation вне форума Ответить с цитированием
Сказали спасибо: