04.10.2010, 21:13 | #1 |
Гость
Сообщений: n/a
|
шифрование пакетов в 3.3.2
Народ, подскажите пожалуйста как шифруются заголовки для клиента 3.3.2, я смотрел исходники мангоса и тиавпс и понял что:
Создаются SHA1-HMAC хеши ключа сессии, которые используются для шифровки и расшифровки сообщений. Ключи для HMAC зашиты в коде программы. Далее эти хеши служат ключами для RC4, которое собственно расшифровывает. Никаких начальных векторов я не заметил, хз.. Я попробовал расшифровать первый зашифрованный заголовок по этой схеме, но ничего путного не вышло, что не так? |
05.10.2010, 10:35 | #4 |
Гость
Сообщений: n/a
|
Да я вижу что не шифруются, я про третий ворлдпакет).
Щас ещё раз почитаю) |
05.10.2010, 11:19 | #5 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
ты про первое соединение ? или про второе ?
|
05.10.2010, 12:04 | #6 |
Гость
Сообщений: n/a
|
Самое первое, первые пакеты с ворлдсервера, два незашифрованных - SMSG_AUTH_CHALLENGE и CMSG_AUTH_SESSION я получил и отправил, и мне пришёл зашифрованный какой-то пакет, который мне надо расшифровать(
он выглядит вот так: Код:
0000 4b 39 63 0b 0c 00 00 00 00 00 00 00 00 00 02 8b 0010 a6 fb 09 00 00 00 00 22 41 b0 2d 02 02 00 00 9e 0020 63 7e 1e ff ff ff ff ff ff ff ff ff ff ff ff ff 0030 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 0040 ff ff ff Мб у меня RC4 какой-то не такой? я пишу на C#, а в .NET убрали RC4 из сборки как устаревший, и я в инете нашёл демку, какой-то итальянец писал) немного переделал её и пользуюсь. Так она вроде работает, я пробовал на своих данных. Подскажите какую-нибудь нормальную реализацию RC4 для .NET OpenSSL обёртка не подходит, она в обязательном порядке требует чтобы начальный вектор был, помимо ключа( Последний раз редактировалось 84ivan; 05.10.2010 в 14:25. Причина: ошибка: пакет называется CMSG_AUTH_SESSION |
05.10.2010, 14:51 | #7 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
к сожалению по шарпу ничего не могу подсказать
|
05.10.2010, 17:20 | #8 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
RC4 для C#
Код:
using System; using System.Collections.Generic; namespace Wlp { public class Arc4 { private readonly byte[] state; private byte x, y; public byte[] RC4Data { get { var data = new byte[0x102]; state.CopyTo(data, 0); data[100] = x; data[101] = y; return data; } set { Array.Copy(value, state, 0x100); x = value[0x100]; y = value[0x101]; } } public Arc4(byte[] key) { state = new byte[256]; x = y = 0; KeySetup(key); } public void Process(IList<byte> buffer, int start, int count) { InternalTransformBlock(buffer, start, count, buffer, start); } private void KeySetup(byte[] key) { byte index1 = 0; byte index2 = 0; for (var counter = 0; counter < 256; counter++) { state[counter] = (byte)counter; } x = 0; y = 0; for (var counter = 0; counter < 256; counter++) { index2 = (byte)(key[index1] + state[counter] + index2); // swap byte var tmp = state[counter]; state[counter] = state[index2]; state[index2] = tmp; index1 = (byte)((index1 + 1) % key.Length); } } private void InternalTransformBlock(IList<byte> inputBuffer, int inputOffset, int inputCount, IList<byte> outputBuffer, int outputOffset) { for (var counter = 0; counter < inputCount; counter++) { x = (byte)(x + 1); y = (byte)(state[x] + y); // swap byte var tmp = state[x]; state[x] = state[y]; state[y] = tmp; var xorIndex = (byte)(state[x] + state[y]); outputBuffer[outputOffset + counter] = (byte)(inputBuffer[inputOffset + counter] ^ state[xorIndex]); } } } } |
Пользователь сказал cпасибо: |
05.10.2010, 19:10 | #9 |
Гость
Сообщений: n/a
|
Спасибо огромное) Попробую с этим)
Еее! Зарработало!!)) Корявую реализацию RC4 я нашёл тогда) Последний раз редактировалось 84ivan; 05.10.2010 в 21:15. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разбор пакетов WoW | DeusModus | Прочая документация | 29 | 25.09.2014 19:58 |
Шифрование пакетов в 11685 | Konctantin | Корзина | 2 | 27.03.2010 12:34 |