Продолжаю свой рассказ о SDR-трансивере HackRF One. На этот раз хотелось бы рассказать о том, что делать с устройством, когда оно оказалось у вас в руках. Какие проекты и способы использования доступны для обычного пользователя и радиолюбителя. Я постарался обобщить в статье всё, что удалось найти и то, что меня заинтересовало больше всего. Начну с процесса настройки, а потом попробуем железку в деле!
Всем заинтересованным — добро пожаловать под кат!

Немного вступительной лирики
Как бы критически не смотрели со своей высоты люди которые используют в своей работе устройства основанные на трансиверах AD9363/AD9361 — HackRF One остается по прежнему доступным и открытым проектом, который предоставляет устройство с широким рабочим диапазоном частот как для приема так и для передачи. Это делает его доступной отправной точкой для широкой аудитории энтузиастов и исследователей.
HackRF One стал излюбленной игрушкой для хакеров, пентестеров и радиолюбителей благодаря своей простоте, стоимости и обилию доступных учебных материалов и информации. Эта доступность, в сочетании с открытым исходным кодом и живым сообществом, создает положительную обратную связь: больше пользователей приводят к большему количеству проектов, учебных пособий и обмену знаниями, что, в свою очередь, привлекает еще больше пользователей.
И многие из таких проектов, комьюнити и возможностей я рассмотрю в этой статье.
⚠️ Заметка об ответственности
Этот материал предназначен исключительно для образовательных целей, демонстрации уязвимостей и анализа радиобезопасности. Применение описанных техник в реальной среде против чужих дронов незаконно. Все эксперименты должны проводиться только на собственном оборудовании и в изолированной среде.
Основы эффективной и безопасной работы с устройством
Прежде чем начинать какие-либо действия, стоит все же рассказать несколько важных моментов, которые могут быть неочевидны для начинающих.
Наличие нескольких каскадов усиления в приемном тракте HackRF One, которые можно настраивать программно, предоставляют значительную гибкость в работе со слабыми сигналами, но это сопряжено с существенным риском. Максимальная входная мощность HackRF One составляет -5 дБм, и превышение этого значения может привести к необратимому повреждению устройства. Теоретически, HackRF One может безопасно принимать до 10 дБм при отключенном входном RX‑усилителе, но простая программная или пользовательская ошибка может включить усилитель, что приведет к повреждению приемника. Поэтому при работе с мощными сигналами рекомендую использовать аттенюатор.
Далее. Не запускайте прибор в режим передачи без подключенной антенны. Основная проблема в этом случае заключается в том, что энергия, которая должна уйти в эфир через антенну, не имеет пути для рассеивания и она отражается обратно в выходной каскад передатчика, в частности в усилитель, который разработан для работы с 50 Омным импедансом нагрузки и без антенны таковой нагрузки нет и это приводит к разным следствиям, от перегрева, физического повреждения усилителя, внутренним осцилляциям, самовозбуждению и в итоге выходу этого самого усилителя из строя и низкому уровню передаваемого сигнала.
Помимо этого при запуске передатчика — антенна должна быть подходящая для передачи, ее рабочий диапазон частот, КСВ по рабочему диапазону частот должны соответствовать частоте передачи. Лучше иметь под рукой девайс наподобие NanoVNA для быстрой проверки используемой антенны и характеристик тракта. Ну или на крайний случай, используйте 50 Омный терминатор линии, который рассчитан на диапазон частот в котором собираетесь тренироваться в передаче.
Были мысли написать пару статей про антенны для новичков и обзор на NanoVNA. Если это было бы интересно - напишите это в комментариях.
Следующий момент. Не ждите линейных характеристик на всем диапазоне частот. В АЧХ наблюдаются значительные пульсации (около 5 дБ). Присутствуют пики гармонических искажений и значительные паразитные излучения (например, утечка сигнала TX_IF, утечка частоты LO), особенно на более высоких частотах, часто из‑за неадекватной внутренней фильтрации. Настоятельно рекомендуется использовать внешние передающие фильтры для смягчения этих проблем.
Лучше всего проводить эксперименты в диапазоне от 2150 МГц до 2750 МГц т.к. работа трансивера осуществляется без использования дополнительных элементов и преобразований сигнала. Во всех остальных случаях выходная мощность при заданном значении не является линейной по всему диапазону частот, наблюдаются значительные пульсации, а также заметные гармонические искажения и паразитные излучения, особенно на более высоких частотах. Документация прямо указывает, на то, что «конструкция выглядит несовершенной и по своим характеристикам не соответствует званию универсального передатчика для любых частот» и это означает, что простая настройка частоты и передача сигнала может легко привести к незаконным излучениям (например, передаче на непреднамеренных гармониках или паразитных частотах). Кроме того, HackRF One «не был протестирован на соответствие нормам, регулирующим передачу радиосигналов». Любые передачи осуществляются на свой страх и риск, т. е. пока в дверь не постучались дяди из РКН =)
При первой работе в режиме приемника все сталкиваются с большой и длинной палкой в спектре на частоте 0 Гц. Выглядит она вот таким образом:

Распространенной проблемой в квадратурных системах дискретизации, таких как HackRF One, является смещение постоянного тока (DC offset), проявляющееся в виде этого самого пика. Это артефакт измерительной системы, а не реальный сигнал, и его можно игнорировать, избегать с помощью смещения диапазона приема или скорректировать программно (например, с помощью опции DC Remove).
Помимо этого — прочитайте в предыдущей статье‑обзоре вопросы экранирования СВЧ‑части, замены штатного корпуса металлическим, использования «правильного» USB‑кабеля и т. д. На этом отдельно в этой статье не буду останавливаться.
Взаимодействие устройства с ПО на ПК
Основным интерфейсом для программного управления HackRF One является библиотека libhackrf, открытая библиотека C, которая предоставляет комплексный API для взаимодействия с аппаратным обеспечением HackRF.
Основные функции предоставляемые libhackrf:
Инициализация и управление устройством: libhackrf облегчает инициализацию библиотеки (hackrf_init), открытие и закрытие устройств (hackrf_open, hackrf_close), а также запрос информации об устройстве (идентификатор платы, версия прошивки, версия USB API, серийный номер).
Конфигурация радиочастотного оборудования: Предоставляет функции для настройки радиочастотного оборудования, включая установку частоты (hackrf_set_freq), регулировку различных каскадов усиления (RF, IF, базовой полосы для RX; IF и RF для TX с помощью hackrf_set_vga_gain, hackrf_set_lna_gain, hackrf_set_amp_enable, hackrf_set_txvga_gain), настройку полосы пропускания базового фильтра (hackrf_set_baseband_filter_bandwidth), установку частоты дискретизации (hackrf_set_sample_rate) и включение/отключение выхода внешнего тактового сигнала (hackrf_set_clkout_enable) или питания bias-tee (hackrf_set_antenna_enable).
Потоковые операции: libhackrf поддерживает три режима потоковой передачи: передача (TX), прием (RX) и сканирующий прием (SWEEP). Передача данных осуществляется через функции обратного вызова, где буферы заполняются (TX) или принимаются (RX).
Управление прошивкой и отладка: Утилиты, такие как hackrf_spiflash, являются частью экосистемы libhackrf, позволяя пользователям обновлять прошивку. Функции отладки обеспечивают прямой доступ для чтения/записи к внутренним регистрам микросхем (например, MAX2837, Si5351C, RFFC5072).
Подробнее можно почитать в официальной документации или погуглить материалы на тему.
HackRF One совместим с высокоуровневыми программными фреймворками SDR, такими как GNU Radio (через gr-osmosdr, который действует как блок источника/приемника) и SoapySDR (независимый от производителя SDR API). Эти фреймворки абстрагируют большую часть низкоуровневого взаимодействия с libhackrf, позволяя разрабатывать более сложные приложения для обработки сигналов с помощью графических блок-схем или сценариев Python.
Существование как низкоуровневого C API, так и интеграции с высокоуровневыми, часто визуальными, программными средами является очень привлекательным преимуществом, в особенности для новичков. Это означает, что, хотя опытные пользователи могут получить доступ к необработанным аппаратным элементам управления, гораздо более широкая аудитория может использовать возможности HackRF One без необходимости писать сложный код на C. Эта многоуровневая программная экосистема является ключевым фактором популярности HackRF One. Она делает сложные радиочастотные эксперименты доступными для людей с различным уровнем навыков программирования и ЦОС.
Применение и проекты c HackRF One
HackRF One, благодаря своим возможностям, нашел широкое применение в различных областях, от общего анализа сигналов до специализированных исследований в области безопасности и научных экспериментов.
Общие варианты использования
Универсальный SDR: Широкий частотный диапазон HackRF One (от 1 МГц до 6 ГГц) и полудуплексные возможности передачи/приема делают его универсальным инструментом для общих радиоэкспериментов.
Анализ спектра: Устройство может использоваться в качестве недорогого анализатора спектра для визуализации радиочастотной среды. Такие инструменты, как hackrf_sweep, обеспечивают анализ спектра из командной строки, в то время как GNU Radio и Gqrx предлагают графические интерфейсы для отображения и анализа спектра в реальном времени.
Мониторинг и захват сигналов: Пользователи могут наблюдать, захватывать и декодировать практически любой радиосигнал в пределах его частотного диапазона, от вещательного радио до различных цифровых коммуникаций.
Генерация сигналов: HackRF One может генерировать различные типы радиосигналов, что является основой для тестирования приемников, проведения экспериментов или эмуляции определенных передач. GNU Radio является распространенной средой для проектирования и генерации пользовательских форм сигналов.
Проекты в области безопасности
Тестирование беспроводной безопасности: HackRF One является популярным инструментом для тестирования безопасности беспроводных сетей и устройств, выявления уязвимостей и оценки эффективности мер безопасности.
Атаки повторного воспроизведения (Replay Attacks): Классическое применение включает захват беспроводной передачи (например, автомобильных брелоков, открывателей гаражных ворот, пультов дистанционного управления) с последующим ее воспроизведением для получения несанкционированного доступа. Это возможно благодаря полудуплексной природе HackRF One, позволяющей сначала захватить, а затем передать сигнал.
GPS-спуфинг: Устройство может использоваться для генерации ложных сигналов GPS с целью манипулирования устройствами или транспортными средствами, поддерживающими определение местоположения, направляя их в непредусмотренные места.
Глушение сигналов: HackRF One может использоваться для передачи шума или мешающих сигналов с целью нарушения беспроводной связи, такой как Wi-Fi, Bluetooth или другие радиопротоколы.
Исследование GSM и перехват IMSI: Исследователи могут использовать HackRF One для создания собственных сетей GSM, захвата IMSI (International Mobile Subscriber Identity) с мобильных телефонов и анализа сотовой связи.
Анализ Bluetooth и Bluetooth Low Energy (BLE): Позволяет захватывать и анализировать трафик Bluetooth и BLE.
Расширенный анализ RFID: Способен анализировать и взаимодействовать с различными RFID-метками на разных частотах.
Атаки по побочным каналам: Передовые исследования включают использование HackRF One для TempestSDR, захвата и анализа непреднамеренных электромагнитных излучений от электронных устройств (например, кабелей HDMI) для восстановления отображаемого контента.
Радиолюбительские и научные приложения
Любительская радиосвязь: Диапазон от 1 МГц до 6 ГГц делает его пригодным для различных видов любительской радиосвязи, включая ВЧ-приложения.
Отслеживание ADS-B: Мониторинг воздушного трафика путем приема и декодирования сигналов ADS-B (Automatic Dependent Surveillance-Broadcast) от самолетов.
Отслеживание метеозондов: Прием телеметрических данных от метеозондов.
Спутниковая связь: Прием и декодирование сигналов со спутников, включая APRS МКС и даже данные с космических аппаратов SpaceX Falcon 9.
Связь Земля-Луна-Земля (EME): В экспериментальных проектах HackRF One использовался для отражения сигналов LoRa от Луны, демонстрируя экстремально дальнюю связь.
Радарные системы: Разработка базовых радарных систем для обнаружения и отслеживания объектов (с использованием нескольких экземпляров устройств).
Оценка направления прихода (DOA): Используется в исследованиях для синхронного сбора сигналов от антенных решеток для оценки направления источников сигналов.
Применение в IoT
Разработка и тестирование устройств IoT: Полезен для разработки и тестирования беспроводных датчиков и других устройств IoT, анализа их протоколов связи и оценки производительности сети.
Разработка беспроводных протоколов: Позволяет экспериментировать с новыми беспроводными протоколами для приложений IoT и разрабатывать их.
Манипулирование беспроводными технологиями: Взаимодействие и манипулирование распространенными беспроводными технологиями IoT, такими как WiFi, LoRa и Zigbee.
Об этих проектах я расскажу подробнее в конце статьи.
Двойное назначение возможностей HackRF One представляет собой значительную этическую и правовую дилемму. Возможности, которые делают HackRF One мощным инструментом для законных исследований и образования — его широкий частотный диапазон, способность к передаче, открытый исходный код и доступность — также делают его доступным для неправомерного использования. Устройство само по себе нейтрально, но его применение может быть вредоносным или незаконным. Это означает, что широкая доступность SDR, таких как HackRF One, требует особого внимания к обучению пользователей правовым нормам и этическим соображениям.
Сообщество SDR, включая Great Scott Gadgets, возлагает ответственность за ответственное использование непосредственно на пользователя. Это подчеркивает растущую проблему в эпоху доступных технологий: как сбалансировать инновации и открытый доступ с потенциалом неправомерного использования, а также критическую роль ответственности пользователя.
Настройка ПК для работы с HackRF One под Ubuntu
Итак, выйдем наконец из-под крыла теоретических рассуждений в сторону более практикоориентированных вещей. Поскольку я в повседневной работе и жизни использую ПК под Linux то и рассматривать буду использование данного приемника SDR под Linux.
Подключаем наш девайс через “хороший” кабель с ферритовым фильтром по USB к ПК и смотрим в лог ядра и видим что девайс определился и висит на шине:
[371469.970241] usb 3-1: USB disconnect, device number 41
[371470.369950] usb 3-1: new high-speed USB device number 42 using xhci_hcd
[371470.497401] usb 3-1: New USB device found, idVendor=1d50, idProduct=6089, bcdDevice= 1.02
[371470.497409] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=4
[371470.497411] usb 3-1: Product: HackRF One
[371470.497412] usb 3-1: Manufacturer: Great Scott Gadgets
[371470.497414] usb 3-1: SerialNumber: 000000000000000087c867dc295a8f5f
Смотрим так же, через lsusb, как определился наш девайс:
$ lsusb | grep HackRF
Bus 003 Device 042: ID 1d50:6089 OpenMoko, Inc. Great Scott Gadgets HackRF One SDR
Всё в порядке. Идём дальше. Теперь необходимо прописать правила udev для того, чтобы с устройством можно было работать без прав суперпользователя. Создаем файл для правил:
$ sudo nano /etc/udev/rules.d/52-hackrf.rules
Пишем в него следующие строки и сохраняем:
ATTR{idVendor}=="1d50", ATTR{idProduct}=="604b", SYMLINK+="hackrf-jawbreaker-%k", MODE="660", GROUP="plugdev"
ATTR{idVendor}=="1d50", ATTR{idProduct}=="6089", SYMLINK+="hackrf-one-%k", MODE="660", GROUP="plugdev"
ATTR{idVendor}=="1fc9", ATTR{idProduct}=="000c", SYMLINK+="hackrf-dfu-%k", MODE="660", GROUP="plugdev"
Эти правила предписывают udev идентифицировать устройства HackRF по их идентификатору поставщика (idVendor) и идентификатору продукта (idProduct), устанавливать их разрешения 660 (чтение/запись для владельца и группы), назначать их группе plugdev и создавать символические ссылки в /dev для легкого доступа.
После добавляем пользователя в группу plugdev:
sudo usermod -a -G plugdev $USER
Перезагружаем правила udev:
sudo udevadm control --reload-rules && sudo udevadm trigger
И переподключите HackRF. Теперь устройство должно быть доступно. Сейчас это мы и проверим. Теперь установим все необходимое. Обновим список пакетов apt, и установим набор утилит необходимых для компиляции исходного кода libhackrf и сопутствующих утилит:
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential cmake git libusb-1.0-0-dev pkg-config gcc-arm-none-eabi -y
Клонируем репозиторий и устанавливаем:
git clone https://github.com/greatscottgadgets/hackrf.git
cd hackrf/host
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
Всё просто. Теперь можно проверить, распознается ли системой HackRF и если все ок - то увидим версию платы, прошивки, серийный номер:
$ hackrf_info
hackrf_info version: git-4b8dbfc3
libhackrf version: git-4b8dbfc3 (0.9)
Found HackRF
Index: 0
Serial number: {тут ваш серийный номер}
Board ID Number: 2 (HackRF One)
Firmware Version: 2018.01.1 (API:1.02)
Part ID Number: 0xa000cb3c 0x005c4f55
Теперь необходимо обновить прошивку на устройстве.
Обновление ПО
Теперь если перейти в репозиторий и посмотрим версию последнего релиза - увидим, что у нас старая версия ПО. Давайте обновимся. И для обновления для начала перейдем в директорию с ранее склонированным репозиторием:
$ cd ~/sources/hackrf
После этого инициализируем необходимые для компиляции субмодули:
$ git submodule init
$ git submodule update
После переходим в директорию с исходниками firmware и запускаем компиляцию:
$ cd firmware/hackrf_usb
$ mkdir build
$ cd build
$ cmake ..
$ make -j$(nproc)
И запускаем процесс обновления ПО:
$ hackrf_spiflash -w hackrf_usb.bin
File size 42248 bytes.
Checking target device compatibility
Erasing SPI flash.
Writing 42248 bytes at 0x000000.
Перезагружаем девайс и выводим информацию о HackRF снова:
$ hackrf_info
hackrf_info version: git-4b8dbfc3
libhackrf version: git-4b8dbfc3 (0.9)
Found HackRF
Index: 0
Serial number: 000000000000000087c867dc295a8f5f
Board ID Number: 2 (HackRF One)
Firmware Version: git-4b8dbfc3 (API:1.08)
Part ID Number: 0xa000cb3c 0x005c4f55
Hardware Revision: older than r6
Hardware supported by installed firmware:
HackRF One
Обновление прошивки CPLD
После обновления ПО, необходимо обновить прошивку ПЛИС.
$ hackrf_cpldjtag -x firmware/cpld/sgpio_if/default.xsvf
File size 37629 bytes.
LED1/2/3 blinking means CPLD program success.
LED3/RED steady means error.
Wait message 'Write finished' or in case of LED3/RED steady, Power OFF/Disconnect the HackRF.
Write finished.
Please Power OFF/Disconnect the HackRF.
Через несколько секунд три светодиода начнут мигать — это свидетельствует об успешном программировании CPLD. Перезагрузите устройство HackRF, нажав кнопку RESET или отключив и снова подключив его к питанию.
Восстановление ПО в случае неудачи
Бывает такое, что при попытке обновить ПО на устройстве можно словить такую ошибку:
$ hackrf_spiflash -w hackrf_usb.bin
File size 42248 bytes.
Checking target device compatibility
Erasing SPI flash.
Writing 42248 bytes at 0x000000.
hackrf_spiflash_write() failed: Input/Output Error (-1000)
После этого на устройстве горит только индикатор 3V3. И при попытке просмотреть информацию об устройстве с ПК получаем следующее сообщение:
$ hackrf_info
hackrf_info version: git-4b8dbfc3
libhackrf version: git-4b8dbfc3 (0.9)
No HackRF boards found.
В этом случае не пугаемся, устройство можно восстановить через DFU-режим.
Необходимо:
На устройстве подключенном к USB зажимаем кнопку DFU и нажимаем кнопку Reset;
Отпускаем кнопку DFU;
После этого можно восстановить битое ПО. Устанавливаем необходимые утилиты:
$ cd ~/sources
$ sudo apt-get build-dep dfu-util -y
$ sudo apt-get install libusb-1.0-0-dev
$ git clone git://git.code.sf.net/p/dfu-util/dfu-util
$ cd dfu-util
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
В режиме DFU вам следует использовать только образ прошивки с именем файла, оканчивающимся на «.dfu», а не на прошивку, оканчивающуюся на «.bin». Берем его в архиве с релизным ПО в директории hackrf-2024.02.1/firmware-bin/hackrf_one_usb.dfu и пишем на устройство:
$ dfu-util --device 1fc9:000c --alt 0 --download [путь до файла прошивки *.dfu] hackrf_one_usb.dfu
После получаем следующий лог:
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
dfu-util: DFU suffix CRC does not match
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 1fc9:000c
Run-time device DFU version 0100
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0100
Device returned transfer size 2048
Copying data from PC to DFU device
Download [=========================] 100% 42312 bytes
Download done.
dfu-util: unable to read DFU status after completion
Тестирование пропускной способности
Чтобы понять, какое количество данных на выбранном вами разъеме USB может передаваться корректно, чтобы в будущем знать это ограничение - произведем нехитрую операцию. Подключим подходящую антенну или терминатор 50 Ом и запустим получение данных. В моем случае это антенна на 2.4ГГц:
$ hackrf_transfer -r /dev/null -f 2400000000
call hackrf_set_sample_rate(10000000 Hz/10.000 MHz)
call hackrf_set_hw_sync_mode(0)
call hackrf_set_freq(2400000000 Hz/2400.000 MHz)
Stop with Ctrl-C
19.9 MiB / 1.000 sec = 19.9 MiB/second, average power -35.9 dBfs
19.9 MiB / 1.000 sec = 19.9 MiB/second, average power -35.9 dBfs
19.9 MiB / 1.001 sec = 19.9 MiB/second, average power -35.9 dBfs
20.2 MiB / 0.999 sec = 20.2 MiB/second, average power -35.9 dBfs
19.9 MiB / 1.000 sec = 19.9 MiB/second, average power -35.9 dBfs
19.9 MiB / 1.000 sec = 19.9 MiB/second, average power -35.9 dBfs
20.2 MiB / 1.000 sec = 20.2 MiB/second, average power -35.9 dBfs
19.9 MiB / 1.000 sec = 19.9 MiB/second, average power -35.9 dBfs
19.9 MiB / 1.000 sec = 19.9 MiB/second, average power -35.9 dBfs
19.9 MiB / 1.000 sec = 19.9 MiB/second, average power -36.0 dBfs
20.2 MiB / 1.000 sec = 20.2 MiB/second, average power -36.0 dBfs
19.9 MiB / 1.000 sec = 19.9 MiB/second, average power -36.0 dBfs
19.9 MiB / 1.000 sec = 19.9 MiB/second, average power -36.0 dBfs
20.2 MiB / 1.000 sec = 20.2 MiB/second, average power -36.0 dBfs
^CCaught signal 2
10.2 MiB / 0.518 sec = 19.7 MiB/second, average power -36.0 dBfs
Exiting...
Total time: 14.51797 s
hackrf_stop_rx() done
hackrf_close() done
hackrf_exit() done
fclose() done
exit
По умолчанию sample rate равен 10.000.000 MSPS. В статистике мы видим 20MiB, т.к. HackRF работает с комплексными семплами I/Q и каждый сэмпл состоит из двух компонент: In-phase, Quadrature, каждый из которых представляет собой signed 8-bit, то есть знаковый байт.
И один сэмпл равен 1 байт (I) + 1 байт (Q) = 16 бит. То есть получается:

И если перевести в Мебибайты (MiB):

Теперь увеличим скорость передачи задав значение вручную:
$ hackrf_transfer -r /dev/null -f 2400000000 -s 20000000
call hackrf_set_sample_rate(20000000 Hz/20.000 MHz)
call hackrf_set_hw_sync_mode(0)
call hackrf_set_freq(2400000000 Hz/2400.000 MHz)
Stop with Ctrl-C
39.8 MiB / 1.000 sec = 39.8 MiB/second, average power -35.7 dBfs
39.8 MiB / 1.000 sec = 39.8 MiB/second, average power -35.7 dBfs
40.1 MiB / 1.000 sec = 40.1 MiB/second, average power -35.6 dBfs
40.1 MiB / 1.000 sec = 40.1 MiB/second, average power -35.6 dBfs
39.8 MiB / 1.000 sec = 39.8 MiB/second, average power -35.6 dBfs
40.1 MiB / 1.000 sec = 40.1 MiB/second, average power -35.6 dBfs
39.8 MiB / 1.000 sec = 39.8 MiB/second, average power -35.6 dBfs
40.1 MiB / 1.000 sec = 40.1 MiB/second, average power -35.7 dBfs
40.1 MiB / 1.000 sec = 40.1 MiB/second, average power -35.7 dBfs
39.8 MiB / 1.000 sec = 39.9 MiB/second, average power -35.6 dBfs
^CCaught signal 2
18.1 MiB / 0.454 sec = 39.8 MiB/second, average power -35.6 dBfs
Exiting...
Total time: 10.45423 s
hackrf_stop_rx() done
hackrf_close() done
hackrf_exit() done
fclose() done
exit
Можно проверить максимально возможную, заведомо превысив документированное как максимальное значение:
hackrf_transfer -r /dev/null -f 2400000000 -s 24000000 -F
call hackrf_set_sample_rate(24000000 Hz/24.000 MHz)
call hackrf_set_hw_sync_mode(0)
call hackrf_set_freq(2400000000 Hz/2400.000 MHz)
Stop with Ctrl-C
45.1 MiB / 1.000 sec = 45.1 MiB/second, average power -35.7 dBfs
45.4 MiB / 1.000 sec = 45.4 MiB/second, average power -35.7 dBfs
45.4 MiB / 1.000 sec = 45.3 MiB/second, average power -35.7 dBfs
45.4 MiB / 1.000 sec = 45.4 MiB/second, average power -35.6 dBfs
45.6 MiB / 1.000 sec = 45.6 MiB/second, average power -35.6 dBfs
45.1 MiB / 1.000 sec = 45.1 MiB/second, average power -35.7 dBfs
45.4 MiB / 1.000 sec = 45.3 MiB/second, average power -35.6 dBfs
45.6 MiB / 1.000 sec = 45.6 MiB/second, average power -35.6 dBfs
45.4 MiB / 1.000 sec = 45.3 MiB/second, average power -35.7 dBfs
45.4 MiB / 1.000 sec = 45.4 MiB/second, average power -35.7 dBfs
^CCaught signal 2
40.4 MiB / 0.894 sec = 45.2 MiB/second, average power -35.7 dBfs
Exiting...
Total time: 10.89372 s
hackrf_stop_rx() done
hackrf_close() done
hackrf_exit() done
fclose() done
exit
Получаем примерно ~45 MiB = 23.59 MSPS, очень условно конечно. Основной фактор от которого зависит данная цифра - скорость шины USB, количество параллельно работающих на шине USB устройств. Лучше конечно подключать к корневому порту USB-интерфейса без хабов и прочих устройств.
Проверяем так же sample rate на передачу:
$ hackrf_transfer -t /dev/zero -f 2400000000 -s 24000000 -F
call hackrf_set_sample_rate(24000000 Hz/24.000 MHz)
call hackrf_set_hw_sync_mode(0)
call hackrf_set_freq(2400000000 Hz/2400.000 MHz)
Stop with Ctrl-C
41.2 MiB / 1.000 sec = 41.1 MiB/second, average power -inf dBfs
41.4 MiB / 1.000 sec = 41.4 MiB/second, average power -inf dBfs
41.2 MiB / 1.000 sec = 41.2 MiB/second, average power -inf dBfs
41.4 MiB / 1.000 sec = 41.4 MiB/second, average power -inf dBfs
41.2 MiB / 1.000 sec = 41.2 MiB/second, average power -inf dBfs
41.4 MiB / 1.000 sec = 41.4 MiB/second, average power -inf dBfs
41.4 MiB / 1.000 sec = 41.4 MiB/second, average power -inf dBfs
41.4 MiB / 1.000 sec = 41.4 MiB/second, average power -inf dBfs
^CCaught signal 2
13.4 MiB / 0.327 sec = 40.9 MiB/second, average power -inf dBfs
Exiting...
Total time: 8.32728 s
hackrf_stop_tx() done
hackrf_close() done
hackrf_exit() done
fclose() done
exit
Тут немного ниже, но в целом в приемлемом диапазоне значений.
Состав программ из набора HackRF
Раз уж начали проход по стандартным утилитам HackRF - то давайте расскажу об остальных:
hackrf_biast - включает или отключает питание для внешнего низошумящего усилителя (LNA) через Bias-T. Используется, если вы подключаете активную антенну или LNA, который требует питания по антенному кабелю.
hackrf_clock - читает или задаёт значение частоты внешнего тактового генератора (если используется). Полезно при синхронизации нескольких SDR-устройств и работает только на устройствах с поддержкой программируемого генератора (не на всех HackRF One).
hackrf_debug - доступ к низкоуровневым настройкам и внутренним регистрам устройства. Используется для диагностики, отладки, экспериментальных задач и может читать/писать регистры, GPIO, SPI и т. п.
hackrf_operacake - Управляет коммутатором антенн Opera Cake, разработанным для HackRF и позволяет переключать антенны программно. Используется в многодиапазонных системах.
hackrf_sweep - сканирует спектр за заданный диапазон частот с определённым шагом. Позволяет быстро визуализировать спектр. Отличается от hackrf_transfer тем, что меняет частоту по диапазону.
В целом уже достаточно внушительный набор. Но они все без GUI, и думаю самое время перейти к утилите с интефейсом и первому реальному кейсу в котором проверим как устройство показывает себя.
Прослушивание FM-радио с помощью HackRF One и GQRX
Давайте попробуем послушать станции FM-радио, которое вещает в вашем регионе. Для этого нужно сначала найти подходящую антенну и посмотреть как она работает в диапазоне ультракоротких волн (УКВ) от 87,5 до 108,0 МГц. Подключаем антенну у которой VSWR (КСВН) в данном диапазоне будет <1.5 и переходим к подготовке ПК. Для проверки антенны необходимо иметь какой-нибудь ВАЦ и калибровочный комплект, я использую VNA GS-320 с доработками в СВЧ-части, но об этом как-нибудь отдельно.
В первую очередь установим GQRX и следом все зависимости, необходимые для работы. Официальная документация и набор разных ссылок есть на официальном сайте. При установке потянется очень много всего в т.ч. библиотеки для обработки и GNU Radio:
$ sudo apt install gqrx-sdr
После установки, при первом запуске нам будет предложено выбрать устройство, указать его параметры, скорость сэмплирования, ширину полосы и устройство для воспроизведения декодированного сигнала.
Выбираем из списка HackRF, увеличиваем Input Rate до максимального 20.000.000. В моем случае окно настройки выглядело вот так:

Перед нами откроется интерфейс программы готовой к работе. Все основные элементы управления находятся в правой части и теперь нам нужно установить частоту приема и нажать кнопку включения приемника:

При запуске DSP-процессинга и переключении частоты приема на диапазон 92.1-107.1 MHz вы можете увидеть работающие станции FM-диапазона.
Выбираем режим Mode в WFM (stereo) и если соотношение сигнал-шум у сигнала будет >30dB то вы сможете насладиться воспроизведением выбранной вами станции.
Увеличьте в этом же окне Gain чтобы слышать радиостанцию на достаточном уровне.
Дополнительно вы можете поиграться с настройками усиления на вкладке Input Control и отображением спектра на вкладке FFT Settings.
Можете включить RDS для отображения информации о текущей станции и проигрываемом треке.
Помимо этого можете нажать кнопку View + Bookmarks то можно складывать нужные частоты приема в закладки.
Если нажать Rec — то можно записывать аудиодорожку с выбранной станции. Помимо этого есть функция записи сырых квадратурных данных для последующего воспроизведения.
Можно так же сделать UDP потоковую трансляцию в сеть, если вы хотите в своей локальной сети передавать радио.
Отдельно отмечу, что во время работы приемника наверняка вы увидите достаточно серьезную нагрузку на CPU (в зависимости от модели CPU). С остальными опциями, вариантами использования думаю вы можете ознакомиться экспериментально сами. Едем дальше.
Pavsa Spectrum Analyzer
Есть отличный проект, который позволяет визуализировать спектр и оптимизирован для одной цели — использовать HackRF One в качестве портативного анализатора спектра.
Заявленные фичи:
Любые изменения в настройках на лету перезапускают hackrf_sweep,
Отображает пики/постоянные значения;
Гистограмма с высоким разрешением;
Фильтр паразитных сигналов;
Для работы этой программы необходима прошивка версии v2024.02.1. И устанавливается достаточно просто:
$ sudo apt install libusb-1.0-0-dev libfftw3-dev default-jdk build-essential maven git libfftw3-bin mingw-w64 openjdk-17-jdk
$ cd hackrf-spectrum-analyzer/src/hackrf-sweep/
$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
$ export PATH=$JAVA_HOME/bin:$PATH
$ make -j$(nproc)
Запускаем по команде:
$ export LD_LIBRARY_PATH=$PWD/build/hackrf-spectrum-analyzer/lib/linux-x86-64:$LD_LIBRARY_PATH
$ build/hackrf-spectrum-analyzer/hackrf_sweep_spectrum_analyzer_linux.sh
Получаем окно с разнообразными настройками:

Выглядит все достаточно упрощенно, но в целом на спектре даже видно OFDM-сигнал от 2.4ГГц Wi-Fi точки доступа в 20 МГц каналом. Как простой спектроанализатор, если ничего другого нет - вполне себе сойдет.
Далее я решил привести всё что удалось нарыть по поводу разнообразных кейсов в которых использовался HackRF One. Ввиду объемности рассказа про применение каждого из этих кейсов - я решил обзорно пробежаться по каждому из них приведя ссылки на источники и названия проектов. Возможно часть из описанных кейсов я рассмотрю в следующих статьях, в которых всенепременно расскажу о GNU Radio и интересных применениях, перспективах в обучении и прочем.
Исследование GSM/3G/LTE-сетей и перехват сотового трафика
Одно из самых популярных применений HackRF — работа с сигналами сотовой связи. Диапазоны GSM (2G) лежат в районе 900 МГц и 1800 МГц, что отлично подходит под спектр HackRF. Целиком приводить как провернуть подобное исследование я не буду, потому что материал тянет на отдельную статью поэтому коротко расскажу про проекты, которые можно использовать в связке с HackRF чтобы работать с GSM/3G/4G‑сетями.
С помощью пакета gr‑gsm (GNU Radio GSM + osmocomm) и HackRF можно пассивно перехватывать эфир GSM. Например, прослушивать широковещательные каналы базовых станций, извлекать идентификаторы IMSI телефонов в округе, перехватывать сервисные сообщения.
Софт grgsm_livemon позволяет настроиться на частоту BCCH и в реальном времени отправлять демодулированный поток в Wireshark для анализа. При этом в дампе Wireshark видны IMSI, запросы пейджинга и другие события — даже на зашифрованных сетях метаданные остаются открытыми.
Но одно дело просто декодировать GSM и совсем другое расшифровывать данные GSM т.к. расшифровка и перехват чужих переговоров и СМС являются нарушением закона.
В ряде случаев (например, при отключенном шифровании или на тестовых сетях) можно декодировать и содержимое передаваемых SMS. 3G (UMTS) и 4G (LTE) сигналы также можно изучать — существуют инструменты вроде LTE Cell Scanner и проекты по пассивному прослушиванию LTE‑broadcast (MIB/SIB сообщений). Для LTE сетей более сложные протоколы, и HackRF, будучи полудуплексным, не позволяет полноценно эмулировать работу LTE‑базовой станции (её сигнал — FDD или TDD — требует синхронной передачи и приёма). Однако частоты LTE (800 МГц, 1800 МГц, 2600 МГц и др.) находятся в диапазоне HackRF, поэтому сканирование и анализ LTE тоже возможны.
Например, можно с помощью утилит LTE Cell Scanner находить соседние соты, читать идентификаторы eNodeB и параметры сот (PCI, MCC/MNC и т. д.). Для более глубокого анализа LTE используется пакет srsRAN (ранее известный как srsLTE) — открытая реализация LTE RAN.
В экспериментальных условиях энтузиасты даже поднимали мини-базовые станции 4G на SDR. Обычно для этого берут full-duplex SDR (USRP, BladeRF и т.п.), однако существуют тестовые запуски LTE eNodeB на HackRF в режиме TDD через простое воспроизведение IQ-данных в эфир.
Например, MaFrance351 показал пошагово запуск сети LTE в домашних условиях: нужен достаточно мощный ПК с Linux, сам SDR, пара антенных излучателей под сотовый диапазон, программируемые SIM-карты и ПО srsRAN. В итоге можно развернуть сеть, к которой подключается телефон (с использованием своих тестовых SIM-карт) и получить полноценный опыт работы Private LTE. Конечно, необходимо помнить о правовых ограничениях: передача в частотах сотовых операторов без лицензии незаконна. Такие эксперименты следует проводить в экранированной среде или на разрешенных частотах.
HackRF здесь ценен именно как доступный инструмент для исследования безопасности сотовых сетей и развития навыков радиохакерства. Кстати, HackRF может выступать и в роли IMSI-catcher’а – подменяя собой базовую станцию 2G.
С помощью полнодуплексного SDR (коим не является HackRF) и проектов OpenBTS, YateBTS или OsmocomBB можно заставить телефоны зарегистрироваться на поддельной соте. Повторюсь, это допустимо только в законных экспериментальных целях (например, в защитной комнате Фарадея), но технически сочетание нескольких HackRF в дуплексе способны передавать GSM-сигнал достаточный для охвата небольшого помещения.
Передача и прием цифрового телевидения (DVB-T)
HackRF изначально появился на волне популярности RTL-SDR приемников, которые были переделанными ТВ-тюнерами DVB-T. Однако HackRF способен не только принимать, но и передавать такие сигналы. Цифровое эфирное телевидение DVB-T/T2 использует полосы от 1.5 до 10 МГц – HackRF этого хватает, чтобы охватить целый телевизионный канал.
Это открывает интересные возможности: радиолюбители декодируют цифровое ТВ или даже экспериментируют с передачей собственного DVB-сигнала на низкой мощности. Например, с помощью GNU Radio и пакета gr-dvb можно собрать приёмник DVB-T, способный декодировать поток транспортного мультиплекса, принимая сигнал на антенну через HackRF.
Это позволяет анализировать параметры DVB-сигнала, исследовать устойчивость модуляции COFDM, а также – в учебных целях – эмулировать мини-телевышку. Известны проекты, где HackRF One использовался для передачи тестового DVB-T сигнала на частоте 442 МHz, принимаемого ТВ-приёмником на небольшом расстоянии. Так как HackRF – устройство с ограниченной выходной мощностью (милливаты), прямая передача DVB-T в эфир регламентируется как маломощная (в пределах норм стандарта ETSI EN 300 422 или эквивалентных локальных норм).
Приём же DVB-T на HackRF может потребовать усилителя сигнала или хорошую антенну, поскольку чувствительность SDR ниже специализированных ТВ-тюнеров. Тем не менее, энтузиасты успешно принимали цифровое ТВ, особенно стандарт DVB-T (как более старый и узкополосный), а также делали петлевые тесты (loopback) – передавая DVB поток с HackRF и сразу его принимая другим SDR или даже RTL-донглом, чтобы изучить качество сигнала.
ADS-B: приём сигналов авиационных транспондеров
Вещание ADS-B (Automatic Dependent Surveillance – Broadcast) самолётов на частоте 1090 МГц – классический пример задачи для SDR. Хотя для этих целей часто используют RTL-SDR, HackRF One тоже прекрасно справляется с приёмом сообщений транспондеров.
Преимущество HackRF – возможность задействовать более высокую скорость сэмплирования и, например, одновременно принять и 1090 МГц (ADS-B) и соседний 978 МГц (UAT канал в США), либо использовать более гибкие фильтры.
С помощью ПО dump1090 (и его модификаций) HackRF может выступать как источник сигналов. Изначально dump1090 поддерживал только RTL-донглы, но появились форки (например, dump1090_sdrplus) с поддержкой HackRF.
Возможен и другой путь: сохранять сырые IQ-данные с HackRF и декодировать их оффлайн. Так, R.X.Seger описывает как записал поток с HackRF (hackrf_transfer -r output.iq ...), конвертировал 8-бит семплы и подал их в dump1090 – после накопления ~3 ГБ данных получилось декодировать первые сообщения ADS-B.
Интересная статья про передачу данных по ADS-B можно почитать на портале Хакер, где HackRF использовался в качестве передатчика, а bladeRF в качестве приемника тестовых данных.
Разумеется, для практического авиатрекинга лучше настроить приём в реальном времени. Это реализуется либо патчем, позволяющим передавать поток с HackRF напрямую в демодулятор, либо использованием среды GNU Radio + блоков gr-air-modes.
На выходе мы получаем стандартные данные ADS-B: идентификатор борта, позывной, координаты, высоту, скорость и т.д. – и можем строить собственный радар самолетов на экране. Аппаратно для этого желательно использовать подходящую антенну на ~1 ГГц (например, коллинеарную или четвертьволновый штырь на 1090 МГц) и возможно предусмотреть фильтр 1090 МГц с LNA, так как HackRF имеет более широкополосный приёмник без избирательности. Тем не менее, даже “из коробки” HackRF позволяет увидеть в эфире сигналы самолетов: частота 1090 МГц обычно весьма загружена возле аэропортов.
Многие радиолюбители успешно интегрировали HackRF в экосистемы отслеживания – например, отправляя данные на сайты вроде FlightAware (получая учётные записи Enterprise в награду). В общем HackRF One в связке с соответствующим софтом может служить как гибкий ADS-B приемник, полезный и для изучения протокола Mode S, и для построения DIY-радиолокаторов.
Реверс-инжиниринг беспроводных протоколов (ключи от авто, датчики и пр.)
Ещё одна захватывающая область – анализ сигналов от разнообразных радиоустройств: автомобильных брелков, систем беспроводного доступа, датчиков охранной сигнализации, метеостанций, домофонов, игрушек и т.д.
HackRF, способный принимать/передавать в широком диапазоне, стал идеальным инструментом для взлома радиоустройств (в легальных целях – для тестирования безопасности или хобби). Пример на Хабре – статья WGH о реверсе радиоуправляемого танка: автор с помощью HackRF и GNU Radio исследовал протокол управления игрушкой на частоте ~27 МГц и смог полностью его воспроизвести, управляя танком с компьютера.
Общий подход к реверс-инжинирингу RF-протоколов таков: сначала в режиме приёмника захватываем эфир нужной частоты, визуализируем сигнал (спектр, осциллограмму) – это можно сделать, например, в программе GQRX или записав сэмплы и просмотрев их в Inspectrum.
Затем определяем параметры модуляции: для простых устройств часто используется OOK (он же ASK, амплитудное ключевание) или FSK с небольшой девиацией (например, 2-FSK). Выясняем скорость передачи (baudrate) и структуру пакета – часто помогает анализ временных промежутков между посылками или повторяющихся шаблонов.
Так я нашел описание вскрытия беспроводной сигнализации: был найден сигнал на 868 МГц с двумя тональными составляющими, что указало на манипуляцию 2-FSK. Дальше автор настроил демодуляцию через GNU Radio, сохранил биты и уже анализировал двоичный поток (вплоть до выяснения преамбулы, синхронизирующего слова, значений датчиков и т. п.). После такого «обратного проектирования» появляется возможность эмулировать передатчик: HackRF переключаем в режим передачи, формируем тот же битовый поток и «обманываем» приемник.
В случае с игрушечным танком это позволило отправлять команды движения с компьютера. В случае с автосигнализациями или воротами это может означать подделку команды «открыть» — конечно, если протокол не использует криптостойкие методы (многие старые ключи — фиксированный код на 433 МГц, который HackRF записывает и воспроизводит, осуществляя replay‑атаку).
Для более сложных систем с плавающим кодом (rolling code) простого повтора недостаточно — но и тут HackRF помогает: исследуются уязвимости (например, атака типа RollJam). В арсенале радиолюбителей имеется удобная программа URH (Universal Radio Hacker) — GUI для анализа и декодирования неизвестных протоколов, хорошо работающий с HackRF. URH предоставляет инструменты для выделения отдельных пакетов, дешифровки бит, поиска полей, и даже генерации кода Arduino для дальнейшего внедрения.
Подытоживая: HackRF One превратил задачи, ранее требовавшие дорогих анализаторов и месяцы работы, в посильные многим проекты по реверсу радио — от беспроводных розеток и метеодатчиков до автомобильных систем. Конечно, надо соблюдать законность: воспроизводить чужие ключи или глушить сигналы можно лишь на собственном оборудовании и в рамках экспериментов.
Спутниковая связь (Inmarsat, Iridium и др.)
Диапазон HackRF охватывает L‑диапазон (~1–2 ГГц), где работают многие спутниковые системы. Радиолюбители применяют HackRF для приёма сигналов спутников связи и их анализа/декодирования.
Популярные примеры: прием сигналов системы Iridium (глобальная спутниковая телефония и пейджинг ~1,616 ГГц) и Inmarsat (геостационарные спутники над экватором, диапазон ~1,541 ГГц для сервисов AERO, STD‑C и пр.).
HackRF One позволяет захватить сразу целый спектр — например, весь диапазон Iridium ~1616–1626,5 МГц. С помощью пакета gr‑iridium (GNU Radio модуль от muccc) можно обнаруживать всплески Iridium и демодулировать их в потоки бит. Дальнейшая обработка выполняется утилитами iridium‑toolkit — они позволяют декодировать полученные кадры: распознать сообщения пейджера, служебные сигналы, а при наличии дополнительных инструментов — даже речь (Iridium использует специфичный VOCODER).
Такие проекты требуют определённого упорства: сигнал спутника слабый, нужна хорошая антенна (например, патч‑антенна на 1,62 ГГц) и низкошумящий усилитель (LNA) с фильтром. Тем не менее, сообщество добилось успехов — в интернете можно найти логи сообщений Iridium (например, данные пейджинга авиационных ACARS через Iridium).
Аналогично, с HackRF принимают сигналы Inmarsat: например, канал Classic AERO (ACARS сообщения с самолётов через спутник). Существует программа JAERO — декодер сообщений AERO для Windows, которая в паре с HackRF (и подходящей антенной, часто используют переделанную GPS‑патч‑антенну плюс LNA) позволяет получать тексты авиадиспетчерских сообщений, метеосводки и т. п. с борта самолётов.
Кроме того, HackRF используется для приёма спутниковых факсимильных метеосводок (Inmarsat EGC, NAVTEX), сигналов спутников погоды (NOAA, METEOR – о них ниже) и даже для экспериментов с приёмом спутниковых телефонов Thuraya, Globalstar или интернета Starlink (спектр Starlink 10–12 ГГц, недоступен HackRF без конвертера, зато сигнал телеметрии Starlink на 1,6 ГГц – в пределах досягаемости и был успешно декодирован энтузиастами).
HackRF One открывает двери в мир спутников: от низкоорбитальных спутников связи до геостационарных ретрансляторов – всё это можно услышать и изучить с помощью относительно недорогого SDR-приёмника.
Погодные спутники NOAA
Очень популярны проекты по приёму спутников NOAA. На частотах ~137 МГц находятся низкоорбитальные метеоспутники NOAA-15,18,19, передающие аналоговые снимки в режиме APT. HackRF отлично подходит для приёма NOAA APT: нужен лишь простейший диполь или QFH‑антенна на 137 МГц и свободный обзор неба.
С помощью бесплатного ПО (например, WXtoIMG или современного декодера satdump) принимают звуковой частотно‑модулированный сигнал и демодулируют картинку — в итоге получается черно‑белое изображение прохода спутника с наложенной картой.

Проект Marcos Soares (2019) ставил цель принять полный снимок NOAA, используя HackRF и самодельную антенну — задача успешно решена, на выходе получена развертка облачности с борта NOAA.
Возможен и более сложный шаг: декодирование цифровых HRPT‑сигналов NOAA (1698 МГц). HackRF способен их принимать при использовании LNA (пример — прием HRPT от NOAA-19 на HackRF с усилителем LNA4ALL и самодельной «кастрюльной» антенной: энтузиаст 9A4QV слабый сигнал все же зафиксировал).

Для декодирования HRPT требуется GNU Radio (блоки gr‑noaa) или проприетарные программы, но энтузиасты уже делились полученными фотографиями высокого разрешения Земли. Таким образом, в сфере космической погоды и наблюдений Земли HackRF тоже находит применение — от простого получения метеоснимков до сложных сетапов для исследований космоса.
Сигналы IoT и умного дома (433 МГц, 868 МГц и др.)
Мир устройств интернета вещей изобилует радиомодулями на разных частотах. Наиболее распространены 433,92 МГц (простые датчики, пульты, розетки), 868 МГц (европейские охранные системы, некоторые IoT), 315 МГц (США) и 2,4 ГГц (ZigBee, Bluetooth).
HackRF, будучи универсальным приёмником/передатчиком, позволяет анализировать и взламывать IoT‑протоколы. Мы частично уже обсуждали реверс‑инжиниринг протоколов выше — здесь же отметим существование специализированных инструментов.
Один из них — утилита rtl_433 (несмотря на название, она работает не только с RTL‑донглами, но и с HackRF через драйвер SoapySDR). Это программа, способная распознавать десятки распространённых протоколов беспроводных датчиков в диапазонах 433/868/315 МГц. Например, rtl_433 «из коробки» декодирует сигналы популярных метеостанций (температура/влажность), датчиков протечки, датчиков открытия окон, беспроводных звонков и т. д. — выводя сразу человекочитаемые значения.
Подключив HackRF к антенне 433 МГц и запустив rtl_433 -f 433920000 -d driver=hackrf, можно мгновенно увидеть все передающие в округе датчики (и, например, подружить их с системой Home Assistant для домашней автоматизации).
Аналогично в диапазоне 868 МГц можно перехватывать сигналы умных счетчиков энергии (стандарт OMS), телеметрии гаражных ворот и прочего. Помимо приема, HackRF позволяет воспроизводить такие сигналы, открывая двери для пентестинга IoT — от отключения беспроводных сигнализаций (эмуляцией глушения или подделки сигнала «сенсор в норме») до несанкционированного управления устройствами.
Интересен пример с беспроводными термометрами: их протоколы просты, и радиолюбители с HackRF не только считывали показания, но и подменяли данные, заставляя, скажем, приёмник показывать другую температуру.
Подобные опыты следует проводить ответственно, чтобы не нарушать работу чужих устройств, но они демонстрируют мощь SDR в сфере IoT. На частоте 2,4 ГГц HackRF тоже может принимать много всего: от пакетиков ZigBee (протокол IEEE 802.15.4, используемый в Philips Hue, Xiaomi и др.) до Bluetooth и Wi‑Fi. Однако для сложных широкополосных протоколов (Wi‑Fi 20 МГц, Bluetooth FHSS) HackRF ближе к границе своих возможностей — здесь чаще выступают в роли радиосканера (нахождения активности). Тем не менее, есть проекты, где HackRF применялся для расширенного анализа Bluetooth (например, с использованием Ubertooth в паре) или для работы с нестандартными 2,4 ГГц сигналами (типа радиомодулей дронов или VR‑шлемов).
Радионавигация и GPS-spoofing
Наконец, одна из хайповых областей – спутниковая навигация. HackRF One не способен полноправно конкурировать с спецприёмниками GNSS по чувствительности – GPS-сигнал от спутников очень слабый (~–130 дБм), и нужна серьёзная антенна + LNA.
Однако HackRF использовали и для приёма GPS: например, подключив активную GPS-антенну с питанием (в HackRF есть опция подать 3,3 В на антенну) и записав сигнал 1575,42 МГц, энтузиасты декодировали позицию через ПО GNSS-SDR. Более того, HackRF даже позволяет проводить поиск и устранение помех GPS: с помощью функции спектроанализатора им находили источники RFI, забивающие GPS в аэропортах (например, утечки усилителей).
Но наиболее известный кейс – GPS-spoofing, то есть подмена навигационного сигнала. Ещё в 2015 г. команда студентов продемонстрировала, как HackRF способен сгенерировать сигнал GPS L1, введя в заблуждение смартфон по поводу его местоположения. Существует готовый проект GPS-SDR-SIM – генератор I/Q потока псевдоспутникового сигнала. Он рассчитывает эфемериды, траекторию движения и создает поток данных, который можно излучить через HackRF (или другой SDR). В результате окружающие GPS-приемники будут “думать”, что находятся, например, в другом месте или в другое время. HackRF One, будучи дешевым передатчиком, совершил революцию в доступности таких экспериментов: теперь любой радиолюбитель в лабораторных условиях может воспроизвести атаку, подобную той, что использовалась для перехвата яхты в Черном море (известный кейс GPS-spoofing).
Конечно, юридически передавать GPS-сигналы в открытом эфире строжайше запрещено – это может влиять на навигацию транспорта. Поэтому все опыты следует проводить в экранированной камере или хотя бы с малой мощностью, вдали от реципиентов. Тем не менее, польза от таких экспериментов большая: специалисты разрабатывают способы обнаружения spoofing-атак, тестируют устойчивость навигаторов и т.д.
HackRF также может генерировать сигналы других навигационных систем (ГЛОНАСС, Galileo) – требуются соответствующие симуляторы или записи эфира. А в качестве приёмника HackRF применяется для логирования IQ-потоков GNSS: например, записать сигнал GPS на улице, а потом проигрывать в помещении, чтобы “поймать спутники” под землёй – методика тестирования навигационных алгоритмов. Помимо спутниковых систем, HackRF участвует и в других задачах радионавигации: например, при экспериментальном воспроизведении сигнала LORAN-C, OMEGA , при создании макетов ILS (систем посадки самолётов) для авиасимуляторов и даже при реализации пассивного радара.
Последнее особо интересно: HackRF может одновременно записывать отражённый радиосигнал (например, от телевышки) и, переключаясь, принимать опорный сигнал – на основе корреляции удаётся обнаруживать крупные объекты (самолёты). Хотя полный пассивный радар требует синхронного двухканального приёма (что больше по силам, скажем, RTL-связке или BladeRF), HackRF тоже применялся для подобных опытов, переключаясь между антеннами через внешние коммутаторы. Такие эксперименты подтверждают: HackRF One – универсальный конструктор для радиолюбителя-исследователя, открывающий дороги даже в сложные области радионавигации.
Перехват управления дроном: простые дроны — простые протоколы
Но одна из самых впечатляющих (и спорных) областей применения HackRF — это "угон" дронов. Под этим термином понимаются различные методы вмешательства в работу квадрокоптеров: перехват управления, GPS-спуфинг, глушение каналов и подмена баз управления. В этой заметке я расскажу, как это делают, зачем, и где проходит грань между исследованием и нарушением закона.
Многие дешёвые дроны (вроде Syma X5, старых MJX, Hubsan и пр.) работают на 2.4 ГГц (или даже 27/72 МГц) и используют простейшую модуляцию, чаще всего OOK или FSK без шифрования и аутентификации.
Протоколы управления этих дронов — это по сути повторы одинаковых коротких команд:
"вперёд" — 1010110010
"назад" — 0011001100
и так далее.
Такой сигнал можно записать с помощью HackRF:
hackrf_transfer -r drone_command.iq -f 2400000000 -s 10000000
...а потом воспроизвести:
hackrf_transfer -t drone_command.iq -f 2400000000 -s 10000000
Если всё сделано правильно, дрон воспримет этот сигнал как команду от родного пульта. Что это значит: злоумышленник может воспроизвести команду "посадка", "лети сюда" или "выключи моторы", и дрон послушно выполнит её. Это типичная replay-атака.
GPS Spoofing: увод дрона фальшивыми координатами
Дроны среднего и высокого класса (DJI, Autel, Parrot и др.) используют GPS для навигации, возврата домой и геозон. HackRF может передавать поддельный сигнал GPS, сгенерированный программно. Для этого используется проект GPS-SDR-SIM описанный выше.
Принцип работы прост:
Создаём файл с симулированным GPS-сигналом (можно задать координаты или маршрут).
Передаем сигнал в эфир через HackRF:
hackrf_transfer -t gps_sim.bin -f 1575420000 -s 2600000
Дрон "думает", что его координаты другие — и может улететь в сторону, активировать режим возврата "в другое место", зависнуть или сесть
Глушение связи: ломаем канал — получаем контроль на дроном
HackRF может создавать помехи — как широкополосные, так и точечные. Это используется для:
глушения канала управления (например, 2.4 ГГц);
глушения FPV-видео (5.8 ГГц);
глушения GPS (1575.42 МГц);
Если дрон теряет связь, он переходит в failsafe-режим — например, возвращается домой или садится. Но если вы заранее подготовили "фальшивую базу", дрон может выбрать именно вас.
Имитация базы управления (Ground Station Spoofing)
Некоторые дроны на MAVLink (например, Pixhawk, ArduPilot) при потере связи ищут новые базы управления. Если у злоумышленника есть HackRF, знание протокола MAVLink, подходящий софт (например, MAVProxy) то он может притвориться Ground Station, и дрон подключится к нему. Дальше — команды, перехват, посадка, и т. д.
Подытоживая
Проекты на основе HackRF One демонстрируют невероятное разнообразие — от мониторинга эфира и сниффинга GSM до приема далеких спутниковых сигналов и взлома беспроводных устройств. Чтобы не раздувать статью дальше — я решил на этом ее завершить. За скобками остались проекты типа SDR#, SigDigger, SDR++, CubicSDR, и я надеюсь до них дойдет своя очередь.
Обладая относительно недорогим устройством и богатым набором открытого ПО, современные радиолюбители могут самостоятельно исследовать практически любой сигнал вокруг нас. Надеюсь, обзор ключевых направлений и примеров проектов вдохновит многих на собственные эксперименты. HackRF One по праву можно назвать «SDR‑трансивером для каждого» — в умелых руках он становится и анализатором спектра, и приемником, и передатчиком, и инструментом познания невидимого радиомира.
Удачи в ваших RF‑приключениях, чистого эфира и до встречи в следующих статьях!
Комментарии (8)
Ender2012
23.07.2025 11:21Про антенны вообще и NanoVNA в частности было бы очень интересно почитать, ну или ссылку на какой-то учебник для совсем начинающих. А то набрал железок и смотрю на них как баран на новые ворота...
megalloid Автор
23.07.2025 11:21Учебников для начинающих не много про антенны, рекомендую присмотреться к курсу физики в подаче Павла Виктора: https://www.youtube.com/playlist?list=PL1Us50cZo25lI9BRQat7KXDMW5XWWiEXC
И курсу по антеннам от Тимура Гаранина
Плюсом Электроника шаг за шагом от Рудольфа Свореня.
А потом если мат. аппарат позволяет - рекомендую книгу Джоэля П. Дансмора Измерения параметров СВЧ-устройств
Strijar
23.07.2025 11:21Ну про BlueTooth все таки не точно. BLE можно перехватывать и декодировать, а вот для BlueTooth не хватает полосы приема. BLE кстати декодируется даже с помощью Portapack (расширенный вариант HackRF с дисплеем и органами управления). Ну а Portapack достоин отдельной статьи (;
megalloid Автор
23.07.2025 11:21К сожалению у меня его нет, а так с удовольствием бы. Если бы дал кто на месяцок попользоваться, родил бы материал с полным обзором)
Про Bluetooth придерусь немного, BLE - это тоже Bluetooth, вы наверное имели ввиду BR/EDR. С ним да, сложновато будет, учитывая FHSS и его тягу к перестроению частоты во всем ISM-диапазоне
j_aleks
HackRF+SDRangel LORA, можно....))
megalloid Автор
Да, когда читал и изучал исходные материалы - ваще прям удивлялся сколько всего реализовано)
https://www.rtl-sdr.com/bouncing-lora-signals-off-the-moon-with-a-hackrf/