Когда я открываю архив, он выглядит как множество zip-файлов с пустыми файлами:

Есть ли изменение одного из файлов не скучно? Давайте strings файл для чтения имен файлов в разделе заголовка:

:(
Что такое «раздел комментариев» в zip-файлах и как его увидеть?

Похоже на открытый текст в конце заголовка файла центрального каталога.
Чтобы быть уверенным, давайте проверим комментарии zip и текст внутренних файлов для быстрой победы:

Это приводит нас к предположению, что внутренние файлы внутри нашего zip-архива содержат сжатый Boring.txt с комментариями, отличными от открытого текста!

Предложим несколько векторов для поиска комментария:

  1. Проверьте в заголовках, есть ли один почтовый индекс, который больше, чем другие, и разархивируйте его.
    → Есть несколько размеров…
  2. Извлекайте zip один за другим (и строки для «пометки»?)

Какой формат у внутренних файлов? Я нашел два формата:

Сложно.
Мы знаем, что в формате zip есть текстовые комментарии. Почитаем про комментарии в формате Rar:

Чудесно! Может флаг в юникоде! Давайте проверим все комментарии, которые я могу получить:

Итак, вот все комментарии в первом zip-файле вверх вниз:

.........................................................
: zip comment                  : None                   :
: InfoList comments            : None                   :
: extracted zip/rar comments   : <char>, <int>          :
: Info list of each on of them : None                   :
:..............................:........................:

К сожалению, я привел вас к неверному предположению. Флаг слова, вероятно, должен быть каким-то образом построен с помощью комментариев формата ‹char›,‹int›.

Проверять:

  1. Слово «флаг» можно найти в соединении символов.
  2. Конкатенация символов - это Base64 флага.
  3. int - это место символа в последнем флаге

Первый и второй варианты в эксперименте не удались :(

Для проверки третьего мы можем проверить, каков диапазон чисел:

couples = [l.rstrip("\n").split(",") for l in all_comments]
couples = [(c[0], int(c[1])) for c in couples]
In [161]: couples[0]
Out[161]: (u'W', 1408)
In [159]: max(dict(couples).values())
Out[159]: 894
In [160]: min(dict(couples).values())
Out[160]: -1303

Я предполагаю, что flagg не 1408 байт, но, возможно, int — это следующий файл, который мы должны прочитать, это комментарий! Он может соответствовать области чисел (:

Для этого мне нужно построить список комментариев файл за файлом в порядке количества файлов, а затем запустить «Локи и лестницы».

Давайте попробуем это:

'WexjShfqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQkqeYQ'

Довольно плохо. Что, если каждое смещение в наших «Жёлобах и лестницах» является суммой смещений до этого момента?

In [202]: flag
Out[202]: u'Well done buddy! You seem to be able to step carefully through the files. This is your flag: flag{ARChV!3$_Are_ThE_Bes7}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}'

Не самая умная задача…

Спасибо за прочтение, надеюсь поможет (: