Итак, условия задачи:
Самолет терпит бедствие — небольшие неполадки в правом двигателе. Времени мало (горючее кончается), вокруг бегают и шумят пассажиры, обстановка напряженная.
Самолет находится где-то в районе Новосибирска (есть координаты), но cломалась авионика, и не очень понятно, что, где и как. Антенна сломалась, связь в радиусе 10 км GPS не работает. Куда лететь — непонятно, карта карту не показывает. Координаты аэропортов есть только на главной дискете, дискету извлекли, сняли дамп, но там ничего не понятно. Пока есть горючее, нужно срочно расшифровать, куда лететь!
Собрались три крутые команды — из Яндекса, Badoo и СКБ «Контур». Badoo объединились с Костей Осиповым:
После нескольких подсказок самолёт спасли ребята из «Контура» (бубен от наших друзей из First VDS был главным призом):
Хотите размять мозги — качайте бинарник, попробуйте спасти мир. В комментариях через некоторое время выложим подсказки. Пишите, сколько времени ушло на задачу! А мы пока занимаемся разработкой подобной игры в онлайне — с разными уровнями сложности, рейтингом и так далее.
Комментарии (12)
eapotapov Автор
05.08.2017 01:30+1Подсказка #1:
Прыгаи? по смещениям, смещения обычно uint32 где-то в началеmichael_vostrikov
05.08.2017 15:39+2Скрытый текстРазмер файла 0x0000071C.
В начале только подходит только одно смещение uint32 — FA 00 00 00. Есть еще 00 00 00 F0, если в другую сторону считать, но вроде что-то не то.
По смещению 0x000000FA расположено значение DE AD BE EF.
Дальше 00 00 03 02.
По этому смещению 07 00 itsumma.
Дальше 00 00 05 0F.
По этому смещению 07 00 ksamasi.
Дальше 00 00 00 08.
Там F0 00.
Похоже длина данных.
После них тот DE AD BE EF.
Данные похоже зашифрованы. Пробовал поксорить наугад, не получилось.
В остальной части возможно байт-код.
А что дальше?iv_s
07.08.2017 08:36+1Скрытый текстТак а вы победитель:) itsumma ksamasi -> itsumma is a mask, а дальше — все правильно, xor.michael_vostrikov
07.08.2017 09:55+2А, вот оно как) Надо было подольше подумать. А я ведь даже брутфорсер написал, который перебором берет подстроку для ключа. И он даже сработал сейчас, видимо я что-то сначала со смещениями намудрил, или ответ в куче мусорного вывода не разлядел.
ответ, если кому интересноVKT Vorkuta 67.488611 63.993056 NUX Novy Urengoy 66.069444 76.520278 SCW Syktyvkar 61.64705 50.84505 LED St Petersburg 59.800292 30.262503 IKT Irkutsk 52.268028 104.388975 OVB Novosibirsk 55.012622 82.650656 RCT RockCity 55.034048 82.918779
nick758
07.08.2017 08:57ksamasi — isamask, если наоборот. Возможно дальше хранится маска для расшифровки.
eapotapov Автор
07.08.2017 09:57+2michael_vostrikov, ты крутой! Никто еще не решал эту задачу без трех подсказок. Напиши на info@itsumma.ru свой размер одежды, пришлем тебе футболку победителя!
eapotapov Автор
05.08.2017 10:57+1Подсказка #2:
Смещение где-то рядом, и кроме little endian бывает еще другои?
vedenin1980
В дампе кроме бинарных данных видны строчки
Можно предположить что это строки с завершающимся нулем, либо отдельные файлы с разделителем 0000
Если там есть строки, логично попробовать сменить кодировки на UTF8 и попытаться найти кирилический текст
vedenin1980
Если попытаться просто перевести дамп в UTF-8, то кроме шума там появляются такие слова как codefestoep, firstvds8?m2, itsumma, anychartA, selectelLM, bsah??c?N54/ZVC. Можно предположить что это дамп класса или структуры данных (или просто кода), далее считая что это названия полей ну скажем класса С++ или Java можно попытаться восстановить структуру данных.
AlexeyGorovoy
Скомпилированный java-класс как раз и содержит magic number 0xСAFEBABE в первых четырёх байтах :)
Veliant
Там что-то вроде заголовка такого формата:
+0 [4] CAFEBABE
+4 [4] Размер хидера
+8 [2] Размер данных (похоже на поксоренный текст)
+10 [..] данные (в данном случае размером 0xF0)
+10+N DEADBEEF
Указанные Вами строки имеют структуру вида
+0 [2] Размер строки
+2 [N] строка без null символа в конце
И вообще, кажется, массив данных после DEADBEEF представляет собой пожатый алгоритмом вроде LZ текст. (пробовал lz77, lzw, aplib — это все не оно)
Может конечно это и сериализация, но на ProtoBuf, BSON это не похоже. Пробовал стандартную сериализацию из Java (намекает первая магическая константа CAFEBABE) — тоже не оно.
dnch_chernov
Это же куски IPv6 адресов