Пожалуйста, обратите внимание, что пользователь заблокирован
Наверняка многие хоть раз в своей жизни заходили на Flightradar24 - сайт, позволяющий наблюдать за летящими в данный момент времени самолетами.
Некоторые даже интересовались как это все работает - радиолокатор облучает самолет пачкой импульсов радиоизлучения, в которых закодировано сообщение-запрос бортовых данных. Приняв этот запрос, самолет излучает ответный сигнал - в котором присутствует информация о местоположении, высоте, скорости, бортовом номере и некоторые другие данные.
Система называется ADS-B, работает на частоте 1090МГц и применяется во всем мире. Является частью и дальнейшим развитием более старой Mode-S. Благодаря ей, диспетчеры - управляющие воздушным движением - видят не просто светящуюся "точку" на экране радиолокатора, но и понимают - какому именно борту принадлежит эта отметка. При наличии ответа с борта - рядом с отметкой появляется циферка-IDшник (идентификатор борта).
Ответы от бортов не шифрованы, их можно свободно прослушивать (даже обычным RTL-SDR "свистком") - благодаря этому другие участники воздушного движения "видят" друг друга в воздухе, а находящаяся на земле распределенная сеть приемников - передает информацию на сайт флайтрадар.
Небольшой процент людей, из тех которые интересовались технологией - несомненно, задумывались над вопросом - а можно ли взломать ADSB. И конечно же находили положительный ответ в виде известных исходников программы, позволяющей генерировать ADS-B пакеты с произвольной информацией, излучать их при помощи HackRF'а - тем самым приближая сезон миграции кукушки у диспетчеров в отдельно взятом зональном центре управления.
*Надо сказать, что большинство картинок с флайтрадара, якобы "нарисованных" пилотами - на самом деле являются продуктом работы симулятора adsb
Я пошел дальше и решил покопаться в структуре пакета, и обнаружил интересную особенность. Запрос на самолет передается по довольно старому протоколу Mode S, который довольно хорошо документирован в этом файле.
Выглядит все в общих чертах так - сначала в режиме mode s на частоте 1030МГц посылается широковещательных запрос, так называемый all-call broadcast interrogation. В поле AP - присутствует контрольная сумма пакета, XORеная с 24 битным полем состоящим из единиц. Это значит что бортовой номер отсутствует.
Все самолеты которые слышат этот запрос - отвечают своим IDшником на частоте 1090МГц. Длина IDшника 24 бита.
*IDшник содержится в поле AA - Aircraft Address
- выбираем любой понравившийся IDшник и запрашиваем у него selective interrogation, используя известные из предыдущего этапа 24 бита.
- для уменьшения интерференции можем послать запрос lockout на лишние IDшники - это заблокирует транспондеры "лишних" самолетов на некоторое время, и мы будем взаимодействовать только с одним из них
*сначала вычисляем crc данных в запросе, потом XORим результат с 24 битами адреса самолета и записываем результат в поле AP
- при селективном запросе высоты самолета во фрейме есть интересное поле IIS размером 4 бит - Interrogator Identifier Subfield.
Это идентификатор "базовой станции", которая запрашивает самолет. И когда самолет отвечает - он присылает пакет с полем UM, состоящим из 6 бит. 4 бита из этих 6 - содержат тот самый IIS. Пакет подписан контрольной суммой, которая является XORом CRC-8 от данных в пакете с 24 битным IDшником самолета.
Соответственно валидность пакета мы может проверить т.к. изначально знаем IDшник борта который запросили.
И тут то кроется интересная особенность. Получается, мы можем послать самолету запрос с произвольными 4 битами, и он ретранслирует эти биты обратно в ответе. Учитывая что пассажирский самолет летит на высоте около 10км - радиус действия такого "ретранслятора" - составляет приблизительно 500...800 километров.
Для расчета дальности - можно использовать софт который применяется радиолюбителями при расчете возможности связи с отражением радиосигнала от самолета.
HackRFа + самого примитивного усилителя на 1вт с алиэкспресса - более чем достаточно для тестов с низколетящими самолетами (например в районе "круга" аэродрома). Чтобы гарантированно "добить" до высоты 10км - нужен агрегат с импульсной мощностью около 100вт.
Вы скажете - зачем это нужно, какие-то 4 бита? Очень просто - передача например ключей шифрования одноразового криптоблокнота для последующего обмена шифрованными сообщениями через другой канал связи. Или каких-то команд на исполнительные устройства. Ведь сообщение можно передавать сколько угодно раз, меняя при этом биты на нужные - таким образом передавая довольно значительный объем данных. А поскольку самолетов в небе имеется практически неисчерпаемый запас, то связь получается очень устойчивой и круглосуточной.
Вполне можно использовать как медленный пейджер. Да и вообще - передать "Hello, fucking world!" таким экзотическим способом на расстояние 500 километров - это, как минимум - прикольно!
Некоторые даже интересовались как это все работает - радиолокатор облучает самолет пачкой импульсов радиоизлучения, в которых закодировано сообщение-запрос бортовых данных. Приняв этот запрос, самолет излучает ответный сигнал - в котором присутствует информация о местоположении, высоте, скорости, бортовом номере и некоторые другие данные.
Система называется ADS-B, работает на частоте 1090МГц и применяется во всем мире. Является частью и дальнейшим развитием более старой Mode-S. Благодаря ей, диспетчеры - управляющие воздушным движением - видят не просто светящуюся "точку" на экране радиолокатора, но и понимают - какому именно борту принадлежит эта отметка. При наличии ответа с борта - рядом с отметкой появляется циферка-IDшник (идентификатор борта).
Ответы от бортов не шифрованы, их можно свободно прослушивать (даже обычным RTL-SDR "свистком") - благодаря этому другие участники воздушного движения "видят" друг друга в воздухе, а находящаяся на земле распределенная сеть приемников - передает информацию на сайт флайтрадар.
Небольшой процент людей, из тех которые интересовались технологией - несомненно, задумывались над вопросом - а можно ли взломать ADSB. И конечно же находили положительный ответ в виде известных исходников программы, позволяющей генерировать ADS-B пакеты с произвольной информацией, излучать их при помощи HackRF'а - тем самым приближая сезон миграции кукушки у диспетчеров в отдельно взятом зональном центре управления.
*Надо сказать, что большинство картинок с флайтрадара, якобы "нарисованных" пилотами - на самом деле являются продуктом работы симулятора adsb
Я пошел дальше и решил покопаться в структуре пакета, и обнаружил интересную особенность. Запрос на самолет передается по довольно старому протоколу Mode S, который довольно хорошо документирован в этом файле.
Выглядит все в общих чертах так - сначала в режиме mode s на частоте 1030МГц посылается широковещательных запрос, так называемый all-call broadcast interrogation. В поле AP - присутствует контрольная сумма пакета, XORеная с 24 битным полем состоящим из единиц. Это значит что бортовой номер отсутствует.
Все самолеты которые слышат этот запрос - отвечают своим IDшником на частоте 1090МГц. Длина IDшника 24 бита.
*IDшник содержится в поле AA - Aircraft Address
- выбираем любой понравившийся IDшник и запрашиваем у него selective interrogation, используя известные из предыдущего этапа 24 бита.
- для уменьшения интерференции можем послать запрос lockout на лишние IDшники - это заблокирует транспондеры "лишних" самолетов на некоторое время, и мы будем взаимодействовать только с одним из них
*сначала вычисляем crc данных в запросе, потом XORим результат с 24 битами адреса самолета и записываем результат в поле AP
- при селективном запросе высоты самолета во фрейме есть интересное поле IIS размером 4 бит - Interrogator Identifier Subfield.
Это идентификатор "базовой станции", которая запрашивает самолет. И когда самолет отвечает - он присылает пакет с полем UM, состоящим из 6 бит. 4 бита из этих 6 - содержат тот самый IIS. Пакет подписан контрольной суммой, которая является XORом CRC-8 от данных в пакете с 24 битным IDшником самолета.
Соответственно валидность пакета мы может проверить т.к. изначально знаем IDшник борта который запросили.
И тут то кроется интересная особенность. Получается, мы можем послать самолету запрос с произвольными 4 битами, и он ретранслирует эти биты обратно в ответе. Учитывая что пассажирский самолет летит на высоте около 10км - радиус действия такого "ретранслятора" - составляет приблизительно 500...800 километров.
Для расчета дальности - можно использовать софт который применяется радиолюбителями при расчете возможности связи с отражением радиосигнала от самолета.
HackRFа + самого примитивного усилителя на 1вт с алиэкспресса - более чем достаточно для тестов с низколетящими самолетами (например в районе "круга" аэродрома). Чтобы гарантированно "добить" до высоты 10км - нужен агрегат с импульсной мощностью около 100вт.
Вы скажете - зачем это нужно, какие-то 4 бита? Очень просто - передача например ключей шифрования одноразового криптоблокнота для последующего обмена шифрованными сообщениями через другой канал связи. Или каких-то команд на исполнительные устройства. Ведь сообщение можно передавать сколько угодно раз, меняя при этом биты на нужные - таким образом передавая довольно значительный объем данных. А поскольку самолетов в небе имеется практически неисчерпаемый запас, то связь получается очень устойчивой и круглосуточной.
Вполне можно использовать как медленный пейджер. Да и вообще - передать "Hello, fucking world!" таким экзотическим способом на расстояние 500 километров - это, как минимум - прикольно!
Последнее редактирование: