Расшифровываем часть протокола Stronghold Kingdoms
Надеюсь вы знаете ММО стратегию Stronghold Kingdoms от FireFly. К сожалению игра не браузерная, поэтому задача расшифровывания может значительно усложниться.
Сегодня я решил взяться за быстрое получение цен у всех доступных торговцев (дабы ускорить процесс поиска продавца).
Мне понадобился Charlesи аккаунт в SHK (он же Stronghold Kingdoms).
Итак, начинаем.
Посетив 3-4 маркета и остановив чарли, отсеил все пакеты, чей размер не равен 1015 байт.
Отсеив эти пакеты я обнаружил совпадения. Допустим код, полученный при посещение маркета №1:
А маркета 2№:
И так далее…
Вышло, что для ответа можно применить шаблон:
где x- меняющиеся переменные
Далее извлекаем из ответов эти самые x.
Поделив на количество товаров можно сделать вывод что на каждый товар идет 8 знаков (2 последних-разделители).
Тогда можно правильно оформить все товары:
А вот тут начинается все самое интересное.
Выходит, что 63 57 01 это зашифрованное число.
Ну по простому это перевести не получилось, поэтому для начала я выписал все эти «правильные» значения.
Ну и начал колдовать над зашифрованными.
Мое внимание привлекла строка
Так как значение которое они содержат вероятно малое (по сравнению с другими), а из «правильных» значений самое маленькое -5, то я догадался, что это и есть 5. Ну а что же тогда с другими числами? Так там просто перестановки!
Путем перебора вышло, что если число в зашифрованном виде
Вот и все!
Пользуясь моментом также хочу поздравить всех хаброюзеров с наступившим новым годом.
Сегодня я решил взяться за быстрое получение цен у всех доступных торговцев (дабы ускорить процесс поиска продавца).
Мне понадобился Charlesи аккаунт в SHK (он же Stronghold Kingdoms).
Итак, начинаем.
Посетив 3-4 маркета и остановив чарли, отсеил все пакеты, чей размер не равен 1015 байт.
Отсеив эти пакеты я обнаружил совпадения. Допустим код, полученный при посещение маркета №1:
c8 02 00 00 2a 00 01 00 00 00 ff ff ff ff 01 00
00 00 00 00 00 00 16 11 10 00 00 10 01 00 00 00
01 00 00 00 09 02 00 00 00 0c 03 00 00 00 0b a0
00 06 05 02 00 00 00 2b a0 00 01 2e a4 25 01 5f
af 00 05 1d 00 00 00 09 95 10 01 09 96 00 01 0a
92 03 01 09 88 00 01 0a 8f 03 01 08 80 04 01 0b
80 05 01 0a 81 00 01 09 8c 05 01 0b 82 04 01 08
95 00 01 09 85 00 01 09 81 01 01 0a 8f 04 01 0b
92 07 01 0b 80 06 10 0e 63 61 74 61 70 75 6c 74
73 4c 65 76 65 6c 0e 85 01 01 0c 82 05 01 09 92
04 01 0c 95 01 01 09 92 06 01 0b 92 05 01 0e 8c
06 01 09 96 01 01 1b a0 01 01 2b 8c 00 01 07 8c
01 01 0b 8c 02 01 09 8c 03 39 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 04 00 08 08 08 08 08 08 08 08 08
08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
01 02 20 a0 00 01 2e a2 00 01 2b a2 01 75 03 00
00 00 08 03 00 00 00 e8 21 00 00 41 09 02 00 20
87 01 00 90 4c 00 00 50 14 00 00 98 53 00 00 c4
fd 01 00 50 40 01 00 dc f9 01 00 f0 cc 01 00 78
63 01 00 00 00 00 00 00 00 00 00 00 00 00 00 0a
00 00 00 00 00 00 00 00 00 00 00 b0 04 00 00 00
00 00 00 3c 00 00 00 72 06 00 00 8c 00 00 00 14
00 00 00 00 00 00 00 00 00 00 00 01 00 05 04 00
00 00 20 a0 00 01 2e a2 00 01 2b a2 01 1b 01 00
00 00 07 76 61 6c 75 65 5f 5f 00 08 03 00 00 00
00 00 00 00 00 00 00 00 0b
А маркета 2№:
c8 02 00 00 2a 00 01 00 00 00 ff ff ff ff 01 00
00 00 00 00 00 00 16 11 10 00 00 10 01 00 00 00
01 00 00 00 09 02 00 00 00 0c 03 00 00 00 0b a0
00 06 05 02 00 00 00 2b a0 00 01 2e a4 25 01 5f
af 00 05 1d 00 00 00 09 95 10 01 09 96 00 01 0a
92 03 01 09 88 00 01 0a 8f 03 01 08 80 04 01 0b
80 05 01 0a 81 00 01 09 8c 05 01 0b 82 04 01 08
95 00 01 09 85 00 01 09 81 01 01 0a 8f 04 01 0b
92 07 01 0b 80 06 10 0e 63 61 74 61 70 75 6c 74
73 4c 65 76 65 6c 0e 85 01 01 0c 82 05 01 09 92
04 01 0c 95 01 01 09 92 06 01 0b 92 05 01 0e 8c
06 01 09 96 01 01 1b a0 01 01 2b 8c 00 01 07 8c
01 01 0b 8c 02 01 09 8c 03 39 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 04 00 08 08 08 08 08 08 08 08 08
08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
01 02 20 a0 00 01 2e a2 00 01 2b a2 01 75 03 00
00 00 08 03 00 00 00 21 62 01 00 40 96 01 00 e0
2e 00 00 48 71 00 00 60 54 00 00 68 74 00 00 94
ff 02 00 e4 51 01 00 b4 59 01 00 4c 94 01 00 c8
2c 01 00 10 27 00 00 00 00 00 00 00 00 00 00 00
00 00 00 0a 00 00 00 00 00 00 00 2c 01 00 00 64
00 00 00 8c 05 00 00 e8 03 00 00 74 04 00 00 10
04 00 00 00 00 00 00 dc 00 00 00 01 00 05 04 00
00 00 20 a0 00 01 2e a2 00 01 2b a2 01 1b 01 00
00 00 07 76 61 6c 75 65 5f 5f 00 08 03 00 00 00
00 00 00 00 00 00 00 00 0b
И так далее…
Вышло, что для ответа можно применить шаблон:
c8 02 00 00 2a 00 01 00 00 00 ff ff ff ff 01 00
00 00 00 00 00 00 16 11 10 00 00 10 01 00 00 00
01 00 00 00 09 02 00 00 00 0c 03 00 00 00 0b a0
00 06 05 02 00 00 00 2b a0 00 01 2e a4 25 01 5f
af 00 05 1d 00 00 00 09 95 10 01 09 96 00 01 0a
92 03 01 09 88 00 01 0a 8f 03 01 08 80 04 01 0b
80 05 01 0a 81 00 01 09 8c 05 01 0b 82 04 01 08
95 00 01 09 85 00 01 09 81 01 01 0a 8f 04 01 0b
92 07 01 0b 80 06 10 0e 63 61 74 61 70 75 6c 74
73 4c 65 76 65 6c 0e 85 01 01 0c 82 05 01 09 92
04 01 0c 95 01 01 09 92 06 01 0b 92 05 01 0e 8c
06 01 09 96 01 01 1b a0 01 01 2b 8c 00 01 07 8c
01 01 0b 8c 02 01 09 8c 03 39 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 04 00 08 08 08 08 08 08 08 08 08
08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
01 02 20 a0 00 01 2e a2 00 01 2b a2 01 75 03 00
00 00 08 03 00 00 00 xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx 01 00 05 04 00
00 00 20 a0 00 01 2e a2 00 01 2b a2 01 1b 01 00
00 00 07 76 61 6c 75 65 5f 5f 00 08 03 00 00 00
00 00 00 00 00 00 00 00 0b
где x- меняющиеся переменные
Далее извлекаем из ответов эти самые x.
86 63 00 00 63 57 01 00 98 36 00 00 e8 80 00 00
78 37 00 00 98 53 00 00 58 0f 02 00 e0 28 01 00
a4 32 01 00 9c 5d 01 00 d0 7e 01 00 d8 d6 00 00
05 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00
00 00 00 00 00 00 00 00 5e 01 00 00 10 04 00 00
00 00 00 00 14 0a 00 00 c4 09 00 00 c8 00 00 00
8c 00 00 00
Поделив на количество товаров можно сделать вывод что на каждый товар идет 8 знаков (2 последних-разделители).
Тогда можно правильно оформить все товары:
86 63 00 00
63 57 01 00
98 36 00 00
e8 80 00 00
78 37 00 00
98 53 00 00
58 0f 02 00
e0 28 01 00
a4 32 01 00
9c 5d 01 00
d0 7e 01 00
d8 d6 00 00
05 00 00 00
00 00 00 00
00 00 00 00
05 00 00 00
00 00 00 00
00 00 00 00
5e 01 00 00
10 04 00 00
00 00 00 00
14 0a 00 00
c4 09 00 00
c8 00 00 00
8c 00 00 00
А вот тут начинается все самое интересное.
Выходит, что 63 57 01 это зашифрованное число.
Ну по простому это перевести не получилось, поэтому для начала я выписал все эти «правильные» значения.
Ну и начал колдовать над зашифрованными.
Мое внимание привлекла строка
05 00 00 00
, которая встречается 2 раза.Так как значение которое они содержат вероятно малое (по сравнению с другими), а из «правильных» значений самое маленькое -5, то я догадался, что это и есть 5. Ну а что же тогда с другими числами? Так там просто перестановки!
Путем перебора вышло, что если число в зашифрованном виде
x1x2 x3x4 x5x6
, то в расшифрованном виде оно x5x6 x3x4 x1x2
, только в 16-ричной кодировке. Вот и все!
Пользуясь моментом также хочу поздравить всех хаброюзеров с наступившим новым годом.
0 комментариев