Здравствуйте.
Пытаюсь распаковать пакеты 0x8f и 0x53, RC4 и MPPC алгоритмы использую из
этого поста, MPPC также пробовал и из
этого поста.
Получается вот что:
Пакеты в сообщении для удобства представлю в их hex-виде, преобразовать их в byte[] (C#) можно такой функцией:
Код:
public static byte[] StringToByteArray(string hex)
{
return Enumerable.Range(0, hex.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
.ToArray();
}
Ключ RC4 decode следующий:
Код:
c6bff4a08aeedd72b3eb489bd5a5c569
Пакет 0x04 из
Код:
e4c58b67f47155153ca15ee85b30c3a72a2f20fee4d59193
расшифровывается и распаковывается в
Код:
041d06a71e100004af07000000000300000000ffffffff0000000000000000
То есть, здесь всё ОК.
А вот дальше:
Пакет 0x8f из
Код:
77ef27a6a1dd061e800eec92def2b7762d
расшифровывается и распаковывается в
Код:
808f1406a71e100004af075151407c5861ee5b5861ee5b
Видим лишнее 0x80 приплюсованное к началу, едем дальше
Пакет 0x53 из
Код:
4035bb4a0dd63175c80a12f6094be6cd8edb41b54f693d03c31fc9878b7dd3da5423865b76028929bf1aaca1c86858c6c49bd2b506540526607eaed140599372271b28cc5197dd1d4e29c82ebdda8df2a7cb64c1af7ae99bc8bab9f941351f8c649ad92a0db8180d632a415b32343c846ec970b9fab57ae4f85833b09d5a081e5384b23cceb2b6f789e6e012ed59f8489a59fde16c1ef1b8d980a09d3aac9a8bd9dfbd9dd420d286a3a097b58715db16f7b764aad125effc64a8b987d320a4f8fe1f0267fed4492520dde5f2930829f685f17763bcf8bc94c298e78fdfcb1abaaa8f503d4eac9b5df579824f82661918b0208f4a6b1ca9905e3c2aa31821c3799483fbabadb63e3b1cd9e02b3d282bb93bc9b4365ba30c5e1d44
Расшифровывается и распаковывается в
Код:
5381b1000000000000000006a71e100004af07010093bd5001050700000001000000000c43006100740075007200310080b0017000108989840017001700327c800005007680808080808080808080808080808080768e8980808080240001012f020900808080808080808080808080808007001c0083717a94808083717a94808003001000808080800f008080590056005c0076597e800e0061618b8b1600808011013701000000000000b201b4010000ebdef1ffedcfe9ff55759bff7987deff3c4b5eff4d6193ffffffffff0000000000000000ebdef1ff797b747b7b75000002000008cb0000000000000001000000014c0100ff02050000000000030078050000780500002c000300000000002401000000000000000000000300000003000000050000000600000010000000000040400000000000000000000000000000000000000000000000000000000000000001000008300000000c0000000100000001140100000000000000020000000000000003008bc300000013000000000000000000000000000010000100000000513ee28e5149b61744a0118f435b9e2b448ccaf1000000010000ffffffff00000000
Длина у пакета 0x1b1, т.е. после 0x53 должно стоять 0x01b1, но видно опять лишние 0х80, но уже приплюсованные ко второму символу.
Кто-нибудь может объяснить, что за магическое число это 0х80, и как от него избавиться? Пакеты обрабатываются правильные, проверял wireshark'ом.