Universal Radio Hacker (URH) — невероятно простой и понятный инструмент для анализа цифровых радиопротоколов. В отличие от монстров вроде GnuRadio, освоить его можно за пять минут без мучений.
Главные особенности URH:
- Работает на всех платформах — на macOS/Linux/Windows из коробки! Не нужно часами компилять километры зависимостей.
- Поддерживает популярные SDR — нативная поддержка RTL-SDR, HackRF, LimeSDR, AirSpy и других.
- Все в одном — все нужные инструменты встроены в одну программу: анализатор спектра для поиска частот, запись сигнала, интерпретатор цифрового сигнала для автоматического преобразования записанного сигнала в цифровые данные
- Поддерживает передачу — для проведения replay-атаки, достаточно выделить мышкой нужный отрезок сигнала и нажать Replay. Великолепно!
Установка
URH написан на Python3 со вставками C через Cython. Его можно использовать прямо из репозитория без установки и компиляции.
Для UNIX-подобный ОС его можно установить через менеджер пакетов pip3:
pip3 install urh
Библиотеки для работы с SDR в macOS можно установить через brew:
brew install rtlsdr hackrf
Определяем частоту
Для начала нужно узнать, на какой частоте работает наш брелок. В большинстве случаев такие устройства работают в нелицензируемом диапазоне 443Mhz. Проверим так ли это с помощью анализатора спектра.
File -> Spectrum Analyzer
Этот инструмент только показывает спектр в выбранном диапазоне и не позволяет как-либо сохранять или обрабатывать сигнал. Единственное его назначение, это визуально найти нужный сигнал. В параметрах указываем драйвер устройства, в моем случае это RTL-SDR, и частоту.
На видео показан анализатор спектра, который позволяет установить на какой частоте работает устройство.
После того как частота найдена, достаточно кликнуть мышкой по сетке, чтобы установить найденную частоту как центральную.
Записываем сигнал
Теперь можно сохранить сигнал нажатия кнопок для последующего анализа. Важно понимать, что записывается не только выбранная частота, но и все соседние, которые может услышать наш SDR. Это регулируется настройкой Bandwidth. Поэтому файл с дампом увеличивается достаточно быстро, по несколько мегабайт в секунду. Для нашей задачи можно существенно уменьшить Bandwidth и Sample Rate, это уменьшит объем лишних захватываемых данных, но мы оставим их по умолчанию, чтобы не напрягаться.
File -> Record Signal...
Видео: захват сигнала с брелка
Так как брелок находится близко к приемнику, его сигнал достаточно мощный и его отчетливо видно на вейвформе. Для того, чтобы понять, используется ли какая-то защита от replay-атаки, нажимаем на кнопку несколько раз. Это позволит нам сравнивать несколько разных сигналов.
Анализируем сигнал
После закрытия окна записи сигнала, сохраненный дамп загружается в интерпретатор, который автоматически определяет параметры сигнала: модуляцию, длину бита и т.д. И преобразовывает (парсит? интерпретирует?) аналоговый сигнал в цифровой. Это очень удобно, ничего подобного я не видел в других похожих программах. Обычно для того же самого используются консольные утилиты, которым нужно вручную задавать параметры сигнала.
Для удобства, данные можно отобразить в HEX формате.
Даже беглого взгляда достаточно, чтобы увидеть, что они повторяются. Следовательно никакой криптографии в нашем пульте не применяется. А это значит, что мы легко можем выполнить replay-атаку. Для этого достаточной мышкой выделить нужный кусок сигнала на спектрограмме и нажать кнопку replay. Но, к сожалению, RTL-SDR не умеет передавать, а только принимает. Поэтому для проведения атаки нам нужно любое устройство из поддерживаемых URH, которое умеет передавать сигнал: это может быть hackrf, limesdr, bladerf или USRP.
Графическое выделение позволяет удобно работать с сырым сигналом и обработанными данными.
Отдельно хочу отметить удобство работы с интерпретатором. При выделении сигнала на вейвформе, выделяются обработанные данные. Это удобно в тех случаях, когда есть сомнения в правильности автоматического парсера и нужно изучить сигнал вручную.
Итог
URH — простой инструмент для работы с разнородными сигналами который из коробки поддерживает все популярные SDR. Освоить его можно за пять минут, без мучительной компиляции GnuRadio.
Если вам интересна тема SDR, в нашем Хакспейсе Neuron вы сможете пообщаться с разработчиками продвинутого SDR — XTRX, которые в этом году провели успешную компанию на crowdsupply. К сожалению, поддержка XTRX пока не добавлена в Universal Radio Hacker, но вы можете принять в этом участие.
Автор: zhovner