Посадочный талон Павел Федорук, 15 октября 2022 в 22:04

Интро

Каждый день, миллионы человек летают из одной точки в другую. Кроме того, прямо сейчас в небе находятся сотни тысяч человек. Уверен, что вы об этом никогда не думали, что сотни тысяч людей, прямо сейчас, у вас над головой.

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

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

Текстовая информация на талоне

И так, перед вам посадочный талон, вы сидите в аэропорту, у своего выхода на посадку держите его в руках и ждете объявления посадки. Теперь давайте глянем, обычным вглядом, без всяких специальных сканеров, просто посмотрим на него, что мы можем там увидеть.

Для этого, я возьму свой посадочный талон и сделаю это вместе с вами.

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

Второтая строчка, это у нас непосредственно главная информация о полёте. В графе отрпавление указан 3-х буквенный код аэропорта (IATA) (о кодах я написал тут) отправления и далее точно такой же код для аэропорта прибытия, под ними подписаны города отправления и прибытия. Далее, время окончания посадки по расписанию и номер выхода в аэропорту отправления. Тут мы видим как самостоятельную часть, ещё меньше ценной информации, однако если совместить эту информацию с информацией на первой строчке, то мы знаем уже довольно много о вас. Мы знаем, что человек с данными ФИО вылетел в такое время и в таком городе и приземлился в другое и в другом городе, кроме того, мы уже знаем на каком самолете летел этот человек, ведь у нас есть номер рейса. Если вы не скрываетесь от преследования, то для вас, как обычного человека эта информация не будет чувствительна, ну да, кто-то сможет узнать, что вы переместились из одного пункта в другой, ну и что?

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

С давних времен и по сей день, используя только связку Фамилия + Номер бронирования, можно войти в кабинет управления вашим бронированием (по-сути управлять вашими условиями полёта), т.е. там можно выбрать место, указать питание на борту, отменить полёт, изменить класс обслуживания и так далее. Но, кроме этого, именно там есть часть дополнительных данных, которой просто не может быть на вашем билете, например все ваши прошлые рейсы или будущие (ими тоже может быть возможность управлять).

А теперь пробуем на практике. Есть один момент, ваше бронирование "живет" до тех пор, пока вы не сядете в самолёт. После этого, ваша бронь переходит в статус "закрыто", так как вы уже в самолёте, вы уже не можете заказать дополнительные услуги используя вашу бронь, так как самолёт уже загружен всем, на что было рассчитано. Т.е. находясь в самолёте, вы не можете заказать себе что-то поесть, кроме того, что, возможно уже есть на борту. Но, пока вы не в самолёте и ваш самолёт обслуживается, есть время сделать заказ, и тогда ваш заказ будет учтён и на борт его загрузят. В этом тоже есть свои ограничения по времени до вылета, но мы отклонились от темы.

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

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

Баркод

Мы намеренно пропустили эту часть вначале, так как для этого уже нужные дополнительные средства и не все понимают что это такое и как с этим можно поступить.

Если что, речь идёт об этих непонятных чёрных точках на посадочном талоне, называются они – баркод, это тоже самое, что штрихкод, только может содержать и содержит сильно больше информации.

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

App in the Air

Когда-то давно, когда я активно начал летать, моя подруга порекомендовала мне приложение, которое называется "App in the Air". Она сказала, что в него можно легко "забить" свои билеты, просто отсканирровав баркод на посадочном талоне в этом приложении, а если посадочного ещё нет, используя номер рейса и дату вылета, можно добавить вручную (остальные данные по рейсу оно подтянет само). Мне показалось это удобным, и я установил это приложение. К слову, пользуюсь им и по сей день, очень удобное и приглашаю всех добавить меня в друзья в нём. Быстрее всего, информация о моих полётах появляется там.

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

Не так давно я начал разрабатывать раздел на этом сайте "Полёты". Нечто подобное на приложение App in the Air. Это раздел, в котором я добавляю всю информацию о своих перелетах и хочу её сохранить как коллекцию, только в данном случае, в электронном виде. Зная, что такое баркоды, я никогда не задумывался о том, какую информацию хранит в себе баркод на посадочном билете. Я просто хотел добавить их также на свой электронный вариант билета и мне пришлось изучить, какую они должны содержать в себе информацию, чтобы я смог сгенерировать их для каждого своего билета.

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

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

M1FEDORUK/PAVEL NIKOLAE1CL97C LEDKGDDP 0535 262Y014B0019 128>218
0OO    B                000391966070

Пока оставим это тут, но позже вернёмся.

PDF14, BCBP и IATA

Непонятные аббревиатуры в заголовке, верно? Теперь я расскажу всё.

И так, начнём с конда. Что такое IATA?

Международная ассоциация воздушного транспорта, ИАТА (англ. International Air Transport Association, сокр. IATA) международная неправительственная организация. Штаб-квартира находится в Монреале (Канада). Европейский центр — в Женеве (Швейцария). ИАТА имеет 120 представительств по всему миру.

ИАТА была организована 19 апреля 1945 года в Гаване (Куба). ИАТА — основной механизм для сотрудничества между авиакомпаниями в продвижении безопасных, надёжных и экономичных воздушных перевозок — в интересах потребителей в мире. 

К моменту основания в ИАТА входили 57 членов из 31 страны, преимущественно из Европы и Северной Америки. Современная ИАТА — это 290 членов из 120 стран (на 10 января 2021 года) во всех частях земного шара, которые осуществляют 82 % всех международных рейсов.

Это часть информации, взятая из Википедии, более подробно про IATA можете там и прочитать, там в целом всё по-полочкам и интересно.

В общем и целом, ИАТА, это организация, которая объединяет между собой всех авиаперевозчиков планеты. Периодически, они устраивают конгрессы, заседания, чтобы создавать новые резолюции и новые стандарты авиаперевозок и обслуживания пассажиров.

Хорошо, с IATA разобрались, этот орган выпускает новые стандарты. Теперь разберемся с тем, что же такое BCBP. А вот это как раз и есть один из тех самых стандартов, которые публикует и разрабатывает IATA. BCBP – Bar-Coded Boarding Pass (с англ. Посадочный талон со штрих-кодом).

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

Таким образом в 2005-м году был опубликован стандарт BCBP в качестве нового основного стандарта для билетов – «Resolution 792». Позже, к ней вышло DLC – «Resolution 722c Automated Ticket/Boarding Pass – Version 2». Это позволило и открыло путь к использованию электронных посадочных билетов, ведь по-сути, вся напечатанная информация на посадочном билете нужна лишь только для вас, службам для вашей идентификации в аэропорту нужен лишь только баркод на посадочном талоне. Поэтому, его можно "засунуть" и в электронные устройства, которые тоже всегда с вами. С выходом первого iPhone, появились и первые электронные посадочные талоны. Я ведь уже говорил, то время – время развития новых технологий.

Хорошо, в общем и целом разобрались, организация IATA выпустила стандарт BCBP, по которому все стали использовать новые посадочные талоны с баркодом. Но, что же такое PDF17?

И тут мы подходим к последней аббревиатуре в этой цепочке стандартов и организаций разрабатывающих их. PDF17 – это стандарт генерации баркода, иными словами это так, как выглядит баркод. Их ведь очень много, и каждый из них имеет свой стандарт со своим названием или даже свой патент, как, например Spotify. 

Кстати, каждый раз, когда вы говорите QR-код, вы скорее всего думаете о коде с чёрными квадратиками. Да, вы полностью правы, но на самом деле вы называете и не то, как выглядит этот код, вы называете наименование стандарта этого баркода, да, это баркод из семейства 2D баркодов. И ещё один интересный момент, вы наверное никогда не знали, что полное название QR – Quick Response Code (быстроотзывчивый код). Вот так вот, тут на Википедии есть статья по поводу этих стандартов, там тоже интересно.

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

Если у вас iPhone или iPad, то вы можете установить себе сканер из AppStore. Если вы не владелец iPhone/iPad, или просто не хотите устанавливать какое-то программное обеспечение, то можете воспользоваться веб-сайтом. Я буду показывать на примере как раз веб-сайта.

И так, вот что мы делаем, заходим на указанный сайт и выбираем стандарт баркода – PDF17.

Загружаем часть изображения с нашим баркодом. Часть, чтобы парсеру было проще и быстрее найти баркод на нашем изображении. И нажимаем кнопку "Read".

Произойдет распознавание баркода и далее его расшифровка, после чего сайт нам отдаст страницу с расшифрованным баркодом.

И так, мы получаем результат сканирования.

M1FEDORUK/PAVEL NIKOLAE1CL97C LEDKGDDP 0535 262Y014B0019 128>218
0OO    B                000391966070

Это как раз те данные, которые я указывал выше. Теперь наступает самый интересный момент, мы будем их читать и что означает каждая строчка. Как мы помним, это стандарт BCBP, поэтому здесь строгий порядок данных, именно так они и должны шифроваться, уберёте один пробел и всё, ваши сканеры посадочных талонов уже не будут работать корректно (скорее даже не будут работать вовсе).

И так, вот что я смог расшифровать исходя из документации и всего изученного материала. Кроме того, я попробовал вручную изменить эти данные и перевести их обратно в баркод, а затем, используя приложение «App in the Air», о котором я рассказывал вначале, добавить этот рейс. И да, у меня получилось! Очевидно, что скорее всего многие данные в этом баркоде App in the Air не учитывает, например технические данные авиакомпании, однако добавить рейс он всё же смог. Также я пробовал намеренно указать некорректные данные или данные несуществующего рейса (в момент добавления рейса App in the Air связывается с базой данных рейсов и если он действительно существует, добавляет его), то App in the Air уже не удавалось его добавить, так как его не существует или не существовало на самом деле. Таким образом я смог сделать генерацию баркодов.

Но, кроме меня, есть много библиотек на GitHub, написанных на разных языках, но в основном на JavaScript и C. На PHP также удалось найти библиотеку, правда пока возникли сложности с внедрением её на мой сайт, но я работаю над этим, хотя локально у меня всё работает. И ещё, я нашёл онлайн генератор баркодов для посадочных талонов.

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

Заключение

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

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

Соблюдайте приватность ваших личных данных и не публикуйте посадочные талоны, содержащие номер бронирования и баркод. Остальные данные являются не особо чувствительными, если не хотите скрыться от кого-то. Но в таком случае, я думаю у вас не будет идеи публиковать их в интернете.

Другие публикации

Если вдруг, вы еще их не читали