Перейти к содержимому →

Почему нельзя выкладывать фото посадочного талона — показываю на своём примере

Вчера мне @oldaviablogger задал вопрос: почему на выложенном мною в видео посадочном замазаны данные снизу, а чёрный прямоугольник справа остался нетронутым?

Баркод PDF417 на посадочном талоне Emirates

Ответил, что такое я уже проверял. Такой код сканировал обычным приложением, и на экран вывалилась бессмысленная каша из букв и цифр без единого пробела. Никакой информации, просто технический какой-то набор символов. Отсюда и знал, что замазывать нечего, там всё равно ничего не разобрать и ничего нет.

Ответ оказался неверным.

Стоило перепроверить как следует и та же самая каша развалилась на аккуратные поля с фамилией, кодом брони, номером места и картой лояльности. Строка не изменилась ни на символ. Изменилось только знание о том, по какой схеме её читать.

И талон при этом не чужой а свой же собственный, из своего же видео, где он попадает в кадр крупным планом секунды на две. Дальше, детально углублюсь в то, что там лежит, как эта штука вообще устроена и почему замазывать надо вообще все, а лучше не выкладывать в публичный доступ.

Не QR и никогда им не был

Штрихкод на посадочном талоне выглядит непривычно. Не квадратный обычный привычный нам QR-код, а вытянутый прямоугольник из рваных горизонтальных полос, похожий на плохо принятый факс. Формат называется PDF417, и выбран он для авиации совсем не случайно.

Название расшифровывается как Portable Data File, то есть переносимый файл данных, а число описывает внутреннюю геометрию. Каждый элемент кода состоит из четырёх штрихов и четырёх пробелов, уложенных в шаблон шириной в семнадцать модулей. Отсюда и четвёрка с семнадцаткой. Придумал этот формат Ynjiun P. Wang в компании Symbol Technologies в 1991 году, стандарт открытый и бесплатный, описан в ISO 15438.

Главная хитрость PDF417 в том, что технически это не двумерный код, а сложенный стопкой одномерный. Каждая строка внутри это по сути маленький обычный штрихкод, и весь символ можно прочитать простым лазерным сканером, проведя лучом поперёк. Тем самым, который пищит на кассе в супермаркете. Строк в коде может быть от трёх до девяноста, а данных влезает порядка полутора-двух тысяч символов текста. Целый огромный текст можно разместить.

Второе, ради чего авиация выбрала именно PDF417 это устойчивость к повреждениям. Внутри работает алгоритм Рида-Соломона, тот же, что когда-то держал царапины на компакт-дисках. Код читается, даже когда испорчено до половины символа. Учитывая, что талон живёт свою короткую жизнь, например в заднем кармане джинсов, мокнет под дождём у трапа и мнётся в руках, запас прочности тут хороший.

Что лежит внутри

Строка, которая вылезла из моего талона, выглядит так:

M1REMIZOV/OLEGMR      ELR5B76 DXBDMEEK 0133 164Y050A0394 33F>60B1MO6163BEK 2A17695071555910    EK 419334204        25K ^1

Вот она, та самая каша, ради которой когда-то решил, что замазывать нечего. Бессмысленной она кажется ровно до того момента, пока не узнаёшь, что читается всё по жёсткой схеме. Формат называется IATA BCBP, Bar Coded Boarding Pass, и у каждого поля там фиксированная длина. То есть строка — это фактически таблица без разделителей, и достаточно знать, сколько символов отсчитать от начала. Здесь и кроется главная ловушка. Сканер из телефона показывает строку с символами и там случается вот так.

Что за полеЗначениеОткуда взялось
Фамилия и имяREMIZOV/OLEG MRдвадцать символов после служебного начала
Код брониLR5B76с помощью которого можно зайти на сайте в бронирование
ОткудаDXBДубай
КудаDMEМосква, Домодедово
Авиакомпания и рейсEK 133Emirates
Дата вылета164сто шестьдесят четвёртый день года, 13 июня
КлассYэконом
Место50Aу окна, как обычно
Номер регистрации394триста девяносто четвёртым прошёл регистрацию
Электронный билетEпризнак того, что билет не бумажный

Отдельного удовольствия заслуживает дата. Вместо привычного формата в талоне стоит юлианский день года, то есть просто порядковый номер суток начиная с первого января. Сто шестьдесят четвёртый день и это у нас тринадцатое июня. Год при этом не хранится вообще, за ненадобностью тк талон живёт меньше суток. В хвосте строки лежит служебная часть авиакомпании. Там дата выписки талона, внутренние ссылки и номер карты Skywards.

Что из этого опасно

Опасен в первую очередь код брони. Связка кода и фамилии — это ровно то, что просит часто форма «управление бронированием» на сайте многих авиакомпаний. Открыв бронь, посторонний человек видит маршрут, контакты, иногда паспортные данные, а главное — может в ней вносить изменения. Поменять место, снять запрос на питание, и даже отменить регистрацию прямо перед вылетом.

Работает эта угроза до тех пор, пока бронь «жива». После того как отлетан последний сегмент маршрута, запись обычно уходит в архив в течение нескольких дней.

Вместо вывода

Проверка с моей стороны конечно же была, вывод только из неё был ошибочный. И в этом весь урок. Не выкладывайте посадочные талоны раньше того момента как завершите свой полет, на всякий случай.

ссылка на рассказ про полет на Emirates.

Опубликовано в Гражданская авиация