Skip to content

Latest commit

 

History

History
46 lines (26 loc) · 4.69 KB

WRITEUP.md

File metadata and controls

46 lines (26 loc) · 4.69 KB

Пойман на камеру: Write-up

На фотографии среди набора странных предметов замечаем коробку с характерной надписью «Почта России» — на неё наклеен штрих-код. Некоторые полоски видно не очень чётко, но в целом:

Попробуем понять, что это за штрих-код. Можно поискать чёткие картинки того, как в принципе выглядят штрих-коды на посылках: ширина полосок, а также характер начальных и конечных полосок похожи на то, что есть у нас. Далее можно распознать тип штрих-кода вместе с данными в нём. Тип штрих-кода — ITF (полностью — Interleaved Two of Five).

Эта же информация указана в статье Почтовый идентификатор в Википедии: Для внутрироссийских отправлений используется структура штрихкодового идентификатора в формате Interleaved Two of Five.

В таких штрих-кодах каждые две цифры кодируют пять чёрных полосок и следующих за ними пробелов. При этом и у полосок, и у пробелов есть только две толщины: тонкие и толстые (в три раза толще тонких). Вооружившись этим знанием, попробуем, вглядываясь в картинку, выписать полоски.

Повёрнутый код

Должно получиться так: ТТЖТТ Ж ТЖ ТТТЖ ТТ Ж ЖТЖТТ ЖТ ТТЖ ТЖ ТЖТ ТЖ ТТЖ Т ЖЖТ (Т — тонкая, Ж — жирная,   — большой пробел)

По такой записи штрих-код можно нарисовать вручную, а можно, будучи готовыми к ошибкам, написать генератор картинок:

import PIL.Image

code = "ТТЖТТ Ж ТЖ ТТТЖ ТТ Ж ЖТЖТТ ЖТ ТТЖ ТЖ ТЖТ ТЖ ТТЖ Т ЖЖТ"
pixels = " " * 100 + " ".join({"Т": "+", "Ж": "+++", " ": " "}[i] for i in code) + " " * 200

img = PIL.Image.new("1", (300, 1))
for x in range(300):
    img.putpixel((x, 0), 0 if pixels[x] == "+" else 255)

img.resize((900, 100)).save("barcode.png")

Повёрнутый код

Если код не распознаётся, можно пользоваться дополнительными знаниями: тем, что количество полосок (не считая ограничительных по бокам) делится на 5; тем, какие комбинации полосок (и пробелов) кодируют цифры, а какие невозможны; наличием в коде контрольной цифры.

В конечном итоге так или иначе получаем номер посылки: 80110684442440.

Посмотрим, что мы знаем про эту посылку: 80110684442440 на сайте Почты России. Она едет из Москвы в Югорск (где как раз находится УНИИУ), и отправил её некто И. С. Кропотёнкин некой Алисе Сергеевне Воронобай.

Имена людей, да ещё и такие характерные, можно искать в разных местах. Поиск в Гугле и Яндексе результатов не даёт, но можно попробовать поискать по социальным сетям. Например, в ВК:

Поиск по ВК

На странице Алисы выложен пост с флагом.

Пост с флагом

Флаг: ugra_russian_post_delivers_and_so_do_we_pvzkbschpvzkpvbsch