Featured Article

Учебник: повторные атаки с RTL-SDR, Raspberry Pi и RPiTX

ОБНОВЛЕНИЕ: версия 2 RPiTX делает этот туториал устаревшим, так как теперь очень просто копировать и воспроизводить сигналы с помощью GUI RPiTX (или команды “sendiq”) и RTL-SDR. Этот туториал по-прежнему валиден для общей концепции.

С RTL-SDR-донгла, Raspberry Pi, куском провода и фактически без какого-либо другого аппаратного обеспечения можно выполнить повторные атаки на простые цифровые сигналы, используемые в устройствах диапазона ISM 433 МГц. Это можно использовать, например, для управления беспроводными устройствами домашней автоматизации, такими как сигнализации и выключатели.

В этом туториале мы покажем, как выполнить простой захват и повторную передачу с использованием RTL-SDR и RPiTX. Этот метод не требует анализа сигнала, извлечения данных и повторной передачи с помощью передатчика на 433 МГц. RPiTX может воспроизвести записанный сигнал напрямую без дальнейшей обратной инженерии, как если бы вы использовали SDR, поддерживающий TX, например HackRF, для записи и TX IQ-файла.

Обратите внимание, что мы тестировали эту повторную атаку только на простых устройствах 433 МГц с OOK модуляцией. Устройства с более сложными схемами модуляции могут не работать с этим методом. Однако подавляющее большинство устройств диапазона ISM 433 МГц используют простые схемы модуляции, которые будут работать. Также повторные атаки не работают на такие вещи, как автомобильные ключи и большинство ворот открывания гаража, поскольку у них применяется защита по принципу rolling code.

Ниже приведена видеодемонстрация:

Используемое оборудование и беспроводные устройства диапазона ISM, протестированные с RPiTX

RPiTX

RPiTX является программным обеспечением с открытым исходным кодом, которое позволяет превратить ваш Raspberry Pi в универсальный передатчик для любой частоты от 5 кГц до 500 МГц. Он работает, применяя квадратные импульсы для модуляции сигнала на GPIO-пинах Pi. Если управлять им правильно, можно создавать модуляции FM/AM/SSB и другие. Подсоедив простую проволочную антенну к GPIO-пину, эти сигналы становятся RF-сигналами, излучаемыми в воздух.

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

Для тестирования короткая проволочная антенна вряд ли будет излучать дальше чем на несколько метров за пределами комнаты, в которой вы находитесь, поэтому в этом случае фильтр не обязателен. Но если вы когда-либо подключите внешнюю антенну или усилите сигнал, то вы абсолютно должны использовать надлежащую фильтрацию, иначе вы можете попасть в серьёзные проблемы с законом. В настоящее время нет коммерчески выпускаемых 433 МГц фильтров для RPiTX, о которых нам известно, поэтому вам придётся сделать собственные. Также помните, что вы по-прежнему можете передавать только в диапазонах, на которые у вас есть лицензия; для большинства людей это будут ISM-диапазоны.

В прошлом мы видели, как RPiTX использовался для вещей, таких как управление радиоконтролируемым автомобилем, создание домашнего FM-ретранслятора, создание гам-трансивера и передача WSPR (через хорошо сделанный фильтр). Мы также видели, как люди выполняли повторные атаки более чистым, но трудным способом — обратной инженерией сигнала 433 МГц, а затем вручную генерировали RPiTX OOK-модуляцию.

Учебник

В этом руководстве мы покажем, как выполнять повторные атаки на простые устройства 433 МГц с OOK-модуляцией, используя RTL-SDR-донгл и RPiTX. RTL-SDR будет использоваться для записи AM-аудиофайла сигнала, и затем RPiTX выполнит свою магию, чтобы преобразовать эту запись в файл, который можно передать обратно на той же частоте через один из GPIO-пинов Raspberry Pi.

Установка RPiTX

Инструкции по установке доступны на странице GitHub проекта по адресу https://github.com/F5OEO/rpitx. Установка проста: достаточно клонировать репозиторий, а затем запустить автоматизированный скрипт установки.

Установка последней версии Keenerd для RTL-SDR

Нам нужна версия Keenerd RTL-SDR, так как её версия предоставляет опцию, которая позволяет выводить данные rtl_fm с WAV-заголовком, что позволяет напрямую записывать в WAV-файл с помощью sox.

git clone https://github.com/keenerd/rtl-sdr cd rtl-sdr/ mkdir build cd build cmake ../ -DINSTALL_UDEV_RULES=ON make sudo make install sudo ldconfig

Установка Sox

sudo apt-get install sox

Запись данных

Используйте ПО-приемник с визуальным спектральным анализатором и/или водопадом, таких как SDR#, GQRX, HDSDR или SDR-Console, чтобы определить точную частоту и полосу пропускания цифрового сигнала, который вы хотите скопировать. Например, на изображении ниже центральная частота сигнала составляет 433.897 МГц, а полоса пропускания примерно 10000 Гц (10 кГц). Также можно определить оптимальные настройки усиления RF.

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

Пример передачи 433 МГц устройства.

Когда будете готовы, выполните следующую команду на вашем Pi, нажмите кнопку на вашем пульте дистанционного управления, а затем нажмите CTRL+C на клавиатуре, чтобы остановить запись. Убедитесь, что частота (-f), ширина диапазона (-s) и усиление (-g) изменены на те, которые вы определили ранее. Эта команда запишет AM 48 кГц WAV-файл сигнала вашего брелка. 48 кГц — это то, что ожидает RPiTX.

rtl_fm -M am -f 433.897M -s 10k -g 20 -E wav -F 9 - | sox -t wav - myrec.wav rate 48k

Нормализация аудио

Нормализация аудио поднимает громкость до максимально возможного уровня без искажений формы волны. Это необходимо сделать, иначе выход RPiTX будет слабым. Используйте следующую команду sox, чтобы создать нормализованный WAV-файл myrec_n.wav.

sox --norm=-3 myrec.wav myrec_n.wav

Если у вас подключены динамики к вашему Pi или к HDMI-монитору, подключённому к вашему Pi, вы можете дополнительно использовать следующую команду, чтобы проверить записанное аудио. Вы должны услышать воспроизведение сигнала.

play myrec_n.wav

Создать RFA файл

Этот шаг конвертирует WAV-файл в RFA-файл, который используется RPiTX при передаче. Формат RFA-файла, похоже, работает значительно лучше, чем IQ-опции для сигналов AM OOK.

 piam myrec_n.wav myrec.rfa

Передача через RPiTX

Используйте следующую команду для передачи через RPiTX, убедившись, что частота установлена на правильное значение для вашего беспроводного устройства.

sudo rpitx -m RFA -i myrec.rfa -f 434004

Устранение неполадок

Если не работает с первого раза попробуйте следующие шаги:

  1. Сделайте ещё одну более длинную запись, удерживая кнопку дольше.
  2. Поиграйте с нормализацией, например попробуйте –norm=0 против –norm=-3.
  3. Убедитесь, что провод подключён к правильному пину.
  4. Попробуйте альтернативный вывод RPiTX с флагом ‘-c 1’.

Источник:

Подбираете SDR под задачу?

Опишите, что и где хотите принимать, — подскажем подходящие модели и где их купить.

Похожие материалы

Весь блог