Universal Radio Hacker (URH) — невероятно простой и понятный инструмент для анализа цифровых радиопротоколов. В отличие от монстров вроде GNU Radio, освоить его можно за пять минут, без мучений.
Главные особенности URH:
- Работает на всех платформах — на macOS/Linux/Windows, из коробки! Не нужно часами компилять километры зависимостей.
- Поддерживает популярные SDR — нативная поддержка RTL-SDR, HackRF, LimeSDR, AirSpy и других.
- Все в одном — все нужные инструменты встроены в одну программу: анализатор спектра для поиска частот, запись сигнала, интерпретатор цифрового сигнала для автоматического преобразования записанного сигнала в цифровые данные.
- Поддерживает передачу — для проведения replay-атаки достаточно выделить мышкой нужный отрезок сигнала и нажать Replay. Великолепно!
В статье мы будем анализировать сигнал пульта от шлагбаума, при помощи народного RTL-SDR (радио из дешевого USB ТВ-тюнера) и macOS.
Установка
URH написан на Python 3, со вставками C через Cython. Его можно использовать прямо из репозитория, без установки и компиляции.
Для UNIX-подобный ОС его можно установить через менеджер пакетов pip3:
pip3 install urh
Библиотеки для работы с SDR в macOS можно установить через brew:
brew install rtlsdr hackrf
Определяем частоту
Для начала нужно узнать, на какой частоте работает наш брелок. В большинстве случаев, такие устройства работают в нелицензируемом диапазоне 433Mhz. Проверим, так ли это, с помощью анализатора спектра.
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. Освоить его можно за пять минут, без мучительной компиляции GNU Radio.
Если вам интересна тема SDR, в нашем Хакспейсе Neuron вы сможете пообщаться с разработчиками продвинутого SDR — XTRX, которые в этом году провели успешную компанию на crowdsupply. К сожалению, поддержка XTRX пока не добавлена в Universal Radio Hacker, но вы можете принять в этом участие.
Все новости о жизни Хакспейса в телеграм-канале: @neuron_news
Комментарии (9)
sintech
28.12.2018 18:34Полезная статья, спасибо. Только может добавить пару вводных предложений о чем дальше пойдет речь, до того как неожиданно появляется брелок.
Master255
29.12.2018 09:57Лучшее средство для взлома парковок на сегодня :-)
OldGrumbler
30.12.2018 20:17Если «дикая» парковка под окнами достала, то проще купить беспроводной звонок и заставить непрерывно загаживать эфир его кнопку.
ohm
Уже давно облизываюсь на HackRF, но до конца не понимаю зачем он мне нужен и за 300$ дороговата игрушка получается. Недавно узнал, что на aliexpress есть клоны за ~100$. Скажите, можно ли их покупать или они совсем плохие?
zhovner Автор
Сам лично не пользовалься, но коллеги покупали hackrf у продавца «piswords» с aliexpress, говорили что вполне нормально, проблем не обнаружено.
sergarcada
$100-300 чтобы открывать шлагбаум и звонить в звонок? Как насчет более сложных устройств, например счетчики с цифровым интерфейсом?
Javian
Должно хватить чтобы позвонить соседям в дверь, если к них беспроводной звонок. Или повключать/выключать люстры с беспроводным пультом.