• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья HackRf Tutorial

Я решил попробовать что-то новое (сколько уже можно «теребить» Wi-Fi?!) и в качестве этого нового выбрал SDR и HackRF, то есть радио (FM, рации, сигналы от беспроводных клавиатур и мышей и прочее). Саму железяку (HackRF) я ещё не купил, но решил заранее подготовиться в плане документации. Я в плане SDR абсолютный новичок (у меня был давно Behold тюнер с FM и TV, но не думаю, что этот опыт мне пригодится в данной ситуации). То есть в этой теме я буду разбираться с самого-самого начала — если вам также это интересно и вы тоже начинаете с абсолютного нуля, то эта заметка должна стать для вас интересной.

Что такое SDR — Software-defined radio

Если коротко (как я себе это представляю): SDR (программно определяемая радиосистема) это когда все характеристики будущей радиоволны (например, её частота) создаются в компьютере, и затем такая «нарисованная» в компьютере волна отправляется на внешнюю железяку, чтобы быть отправленной как настоящая радиоволна. Благодаря такому подходу достигается большая гибкость в плане того, какие характеристики можно присвоить волне — понятное дело, что отправляющая железяка должна им соответствовать.

А вот определение и Википедии:

Программно определяемая радиосистема (англ. Software-defined radio, SDR) — радиопередатчик и/или радиоприёмник, использующий технологию, позволяющую с помощью программного обеспечения устанавливать или изменять рабочие радиочастотные параметры, включая, в частности, диапазон частот, тип модуляции или выходную мощность, за исключением изменения рабочих параметров, используемых в ходе обычной предварительно определённой работы с предварительными установками радиоустройства, согласно той или иной спецификации или системы.

ПОР выполняет значительную часть цифровой обработки сигналов на обычном персональном компьютере или на ПЛИС. Целью такой схемы является радиоприёмник или радиопередатчик произвольных радиосистем, изменяемый путём программной переконфигурации (отсюда происходит альтернативное наименование таких систем — программно конфигурируемые).

Ну, то есть, это такое радио, в котором для смены частоты не нужно крутить колёсико.

Какое железо выбрать для SDR

Бытовых (любительских) SDR, которые можно просто купить в магазине, очень много: Funcube Dongle, RTL-SDR, USRP, OsmoSDR, BladeRF, HackRF, AirSpy, устройства LimeSDR USB Type-A и другие. Вот здесь собран большой список с их характеристиками:

Одним из самых популярных устройств является HackRF. У этого устройства большой диапазон поддерживаемых частот, а также приемлемая (по сравнению с некоторыми другими моделями) цена.

HackRF не дешёвый, его цена вместе с доставкой примерно $150. Есть намного более дешёвые модели, но, понятно, и с более скромными характеристиками (меньше поддерживаемых частот). Есть более продвинутые чем HackRF модели, но их цена (для меня) слишком высокая. Возможно, если вас интересует не весь спектр частот, а какие-то определённые частоты, то вы сможете найти другое устройство, которое будет работать лучше с этими частотами или стоить дешевле чем HackRF. HackRF — это довольно универсальное устройство с доступной ценой.

HackRF

HackRF One — это дешёвая, с открытым исходным кодом платформа Software Defined Radio.

HackRF One имеет следующие характеристики:

Диапазон частот: 1 MHz – 6 GHz

Полоса пропускания: 20 MHz

RX ADC bits (биты на вход): 8

TX DAC bits (биты на выход): 8

TX кабель: Да

Гнездо антенны: SMA female

Дискретизация: 8 – 20 Msps

Панадаптеры / Приемники: 0/1

Полудуплексный ресивер

Увеличение модности приёма и передачи, а также фильтр частот настраивается программно

Программно-констролируемая мощность порта антенны: (50 mA на 3.3 V)

Штырьевой разъём для подключения дополнительных плат увеличивающих функциональность

Интерфейс хоста: USB 2.0

Поддерживаемые операционные системы: Windows, Linux, Mac.

Как можно увидеть, у устройства довольно медленный интерфейс USB 2.0, а также частота пропускания только 20 MHz, то есть это не самый «ТОП». Но для обучения этого хватит. К тому же, за последнее время на устройство сильно снизилась цена. И ещё, хотя в характеристиках указана поддерживаемая частота 1 MHz – 6 GHz, но можно выйти за этот диапазон чуть ниже и чуть выше.

У этого устройства прошивка с открытым исходным кодом. Оно совместимо с GNU Radio, SDR# и другими программами. Хорошая совместимость с Linux.

Меры предосторожности для HackRF

Нельзя запускать приём или передачу данных без подключённой антенны! Это очень важно, поскольку прибор не контролирует, подсоединена ли антенна и в любом случае под нагрузкой подаёт электричество, поэтому без антенны HackRF может просто сгореть.

Либо вместо антенны используйте заглушку — имеется ввиду не пластиковые красные заглушки, которые защищают от пыли, а заглушку с функцией потребления нагрузки — золотистая «гайка», которая наворачивается на гнездо антенны.

У прибора три одинаковых SMA female разъёма: два на одной стороне и один на другой стороне. Разъём для антенны это тот, который размещён один (другие два предназначены для синхронизации нескольких устройств HackRF).

Значение кнопок и индикаторов HackRF

При подключении к компьютеру HackRF на нём загораются индикаторы.

Первые три индикатора:

3V3

1V8

RF

Это индикаторы питания различных элементов. Они могут гаснуть при включении режима экономии энергии. 1V8 и RFмогут гаснуть, если HackRF ничего не делает. Но при работе HackRF (приём и передача данных) все три должны гореть. Если какой-либо из них не горит, то это означает, что имеется проблема.

Следующий:

USB

Когда он горит, то это означает, что компьютер «общается» с HackRF как с USB устройством. Этот индикатор загорается чуть позднее первых трёх.

Последние два:

RX — означает операции приёма данных

TX — означает операции передачи данных

Последние три индикатора находятся под управлением программного обеспечения. Поэтому можно установить пользовательскую прошивку и переназначить их функции.

Что касается цветов, то они вообще ничего не означают: цвета разные только чтобы вы могли отличать светодиоды друг от друга.

Теперь рассмотрим кнопки.

Первая кнопка:

RESET — сбрасывает, перезагружает микроконтроллер. Аналог отключения и подключения USB шнура.

Следующая кнопка:

DFU — режим обновления прошивки. На самом деле при обновлении прошивки этот режим не нужен. HackRF может обновлять свою прошивку без перехода в этот режим. Главная функция этой кнопки — это раскирпичивание устройства.

Эта кнопка функционально только при включении устройства или нажатии кнопки RESET. Всё остальное время эта кнопка не выполняет никаких функций, поэтому при установлении пользовательской прошивки этой кнопке можно назначить какую-нибудь функцию ввода.

Как HackRF вывести из состояния «кирпича»

Если вы прошили устройство так, что оно больше не работает, то вам нужно загрузиться используя DFU загрузчик — он прописан в ROM, поэтому его невозможно испортить. Для перехода в режим DFU вам нужно зажать эту кнопку, всё ещё удерживая эту кнопку отключить USB кабель и, продолжая удерживать эту кнопку, вновь подключить USB кабель. Если загорится только индикатор 3V3, но не загорятся другие, это означает, что вы успешно вошли в DFU режим

Ещё один способ перейти в режим DFU, это зажать кнопку DFU и при нажатой кнопке нажать и отпустить кнопку RESET.

В этом режиме вы можете использовать соответствующую программу на вашем компьютере для перепрошивки HackRF.

Кабель для HackRF — почему крайне желательно кабель с шумоподавлением

Для HackRF много разных дополнительных опций, например, экранированный чехол. На самом деле, по-настоящему важной опцией, результат от которой вы заметите сразу, является качественный USB кабель с возможностью подавлением шума.

Выбранный вами USB может иметь большое влияние на то, что вы видите используя ваш HackRF, особенно используя его на частотах в районе 120 и 480 MHz, на которых USB делает всю свою работу.

Используйте экранированный USB кабель. Лучший способ гарантировать радиочастотные помехи от USB — использовать неэкранированный кабель. Вы можете проверить, что ваш кабель экранирован, используя тестер непрерывности, чтобы убедиться, что экран на одном разъёме имеет непрерывность с экраном на разъёме на другом конце кабеля.

Используйте короткий USB-кабель. Использование чего-либо большего, чем 6-футовый кабель, может привести к плохим результатам. Чем длиннее кабель, тем больше потерь можно ожидать, и при создании этого поста был опробован 15-футовый кабель, и в результате HackRF работал только вполсилы.

Для достижения наилучших результатов выберите кабель с ферритовым сердечником. Эти кабели обычно рекламируются как шумопоглощающие и распознаются по утолщению (пластиковому блоку) на одном из концов.

Антенны для HackRF

В комплекте с HackRF идёт телескопическая антенна — она неплохая для начала. Но для определённых задач вы можете подобрать антенну получше.

У HackRF SMA гнездо, а не RP-SMA! То есть в гнезде антенны нет штырька — там есть дырочка. Пример распространённых RP-SMA антенн — это Wi-Fi антенны — у них тоже нет штырька — у их тоже дырочка. Поэтому если вы прикрутите Wi-Fi антенну к HackRF, то она действительно прикрутится и визуально будет казаться, что она подключена. НО: на самом деле она не будет подсоединена, поскольку отсутствует соединительный сердечник.

Таким образом — вам нужны антенны со штырьком. Либо используйте переходник с RP-SMA антенны — они имеются.

Пример телескопической антенны, которая подойдёт для HackRF One — это ANT500 (по техническим характеристикам она также подходит для HackRF).

Программное обеспечение, поддерживающее HackRF

Здесь список приложений, о которых известно, что они работают с HackRF. Приложения разделены на три секции:

программное обеспечение на основе GNU Radio;

те, которые имеют прямую поддержку

те, которые могут работать с данными от HackRF

Основывающиеся на GNU Radio

GNU Radio Mode-S/ADS-B — bistromath/gr-air-modes

GQRX —

Прямая поддержка

SDR# (только Windows) — . В настоящее время только ночные сборки поддерживают HackRF One —

SDR_Radio.com V2 —

Universal Radio Hacker (Windows/Linux) — https://github.com/jopohl/urh

QSpectrumAnalyzer — https://github.com/xmikos/qspectrumanalyzer

Графический интерфейс Анализатора Спектра (Spectrum Analyzer) для hackrf_sweep в Windows — https://github.com/pavsa/hackrf-spectrum-analyzer

Могут использовать данные HackRF

Inspectrum (Инструмент анализа захвата с расширенными функциями): https://github.com/miek/inspectrum

Baudline (может просматривать/обрабатывать данные HackRF, например, hackrf_transfer):

Обработка данных HackRF

Matlab

fid = open('samples.bin', 'r'); len = 1000; % 1000 samples y = fread(fid, 2*len, 'int8'); y = y(1:2:end) + 1j*y(2:2:end); fclose(fid)



Инструменты HackRF

В дополнении к сторонним инструментам, которые поддерживают HackRF, разработчики устройства предоставляют некоторые инструменты командной строки для взаимодействия с HackRF. Информацию о том, как пользоваться каждым инструментом, смотрите в справке соответствующей программы, например:

hackrf_transfer -h

или в страницах руководства.

Первые два инструмента (hackrf_info и hackrf_transfer) должны покрывать большинство задач. Оставшиеся инструменты представлены для отладки и общего интереса; будьте осторожны, при неправильном использовании они могут навредить HackRF.

hackrf_info

Считывает такую информацию об устройстве с HackRF как серийный номер и версию прошивки.

hackrf_transfer

Отправляет и получает сигналы используя HackRF. Ввод/вывод может быть 8-битным знаковым квадратурным файлом или файлом WAV.

hackrf_max2837

Чтение и запись регистров в микросхеме приемопередатчика Maxim 2837. Для большинства целей tx/rx (приёма-передачи) hackrf_transfer или другие инструменты позаботятся об этом за вас.

hackrf_rffc5071

Чтение и запись регистров в микросхеме RFFC5071. Как указано выше, это только для любопытства или отладки, большинство инструментов позаботятся об этих настройках автоматически.

hackrf_si5351c

Чтение и запись регистров в чипе тактового генератора Silicon Labs Si5351C. Это также должно быть ненужным для большинства операций.

hackrf_spiflash

Инструмент для записи в HackRF новой прошивки. Больше всего используется для обновления прошивки.

hackrf_cpldjtag

Инструмент для обновления CPLD на HackRF. Также иногда используется при обновлении прошивки.

Как установить драйвер, инструменты HackRF и SDR утилиты

В этом разделе подсказки по установке программного обеспечения для определённых операционных систем и дистрибутивов Linux.

Установка драйверов и утилит общего назначения

Большинству пользователей настоятельно рекомендуется, если вы не преследуете целей разработки или тестирования новых функций для HackRF, использовать собранные для вашей системы пакеты и устанавливать их с помощью менеджера пакетов, имеющегося для вашей операционной системы.

Linux

Kali Linux, Ubuntu, Debian, Linux Mint

sudo apt install hackrf gqrx-sdr

Fedora / Red Hat

sudo dnf install gnuradio gr-osmosdr hackrf gqrx -y

Gentoo Linux

emerge hackrf-tools USE="hackrf" emerge gr-osmosdr

Arch Linux

sudo pacman -S hackrf gnuradio gnuradio-osmosdr gnuradio-companion

OS X (10.5+)

MacPorts

sudo port install gr-osmosdr

Homebrew

rew install gr-osmosdr

Windows

Исполнимые файлы поставляются как часть проекта PothosSDR, их можно загрузить здесь.

FreeBSD

Вы можете использовать бинарный пакет:

pkg install hackrf

Вы можете собрать и установить с ports:

cd /usr/ports/comms/hackrf make install

Сборка из исходников

Linux / OS X / *BSD

Подготовка вашей системы

Вначале убедитесь, что ваша система обновлена используя метод обновления представленной в вашей операционной системе.

Установка используя PyBOMBS

Проект GNU Radio имеет сборочную систему, которая покрывает ключевые библиотеки, драйвера для SDR железа и многие из модулей дерева. PyBOMBs позаботиться для вас в установке зависимостей.

Сборка инструментов HackRF из исходников

Получите исходный код инструментов HackRF либо из архива выпуска, либо из git:

git clone https://github.com/mossmann/hackrf.git

После загрузки исходного кода, инструменты хоста могут быть собраны следующим образом:

cd hackrf/host mkdir build cd build cmake .. make sudo make install sudo ldconfig

Если у вас есть HackRF, то вам может понадобиться обновить прошивку, чтобы она соответствовала версии инструментов хоста.

Windows

Необходимые условия для Cygwin, MinGW или Visual Studio

cmake-2.8.12.1 или более поздний из

libusbx-1.0.18 или более поздний из

fftw-3.3.5 или более поздний из

Установите драйвер Windows для HackRF или используйте Zadig, смотрите

Если вы хотите использовать Zadig выберите HackRF USB устройство и просто установите/замените его на WinUSB драйвер.

Примечание для сборки Windows: Вам всегда следует выполнять hackrf-tools из командной строки Windows, а не из оболочки Cygwin или MinGW поскольку Cygwin/MinGW некорректно обрабатывают Ctrl+C и особенно для hackrf_transfer нажатие Ctrl+C (отмена) неправильно остановит программу и файл данных будет повреждён.

Для Visual Studio 2015 x64

Создайте определение библиотеки для MSVC ссылкой

C:\fftw-3.3.5-dll64> lib /machine:x64 /def:libfftw3f-3.def

Компиляция

c:\hackrf\host\build> cmake ../ -G "Visual Studio 14 2015 Win64" \ -DLIBUSB_INCLUDE_DIR=c:\libusb-1.0.21\libusb \ -DLIBUSB_LIBRARIES=c:\libusb-1.0.21\MS64\dll\lib\libusb-1.0.lib \ -DTHREADS_PTHREADS_INCLUDE_DIR=c:\pthreads-w32-2-9-1-release\Pre-built.2\include \ -DTHREADS_PTHREADS_WIN32_LIBRARY=c:\pthreads-w32-2-9-1-release\Pre-built.2\lib\x64\pthreadVC2.lib \ -DFFTW_INCLUDES=C:\fftw-3.3.5-dll64 \ -DFFTW_LIBRARIES=C:\fftw-3.3.5-dll64\libfftw3f-3.lib

CMake создаст файл solution с именем HackRF.sln и ряд файлов проекта, которые могут быть собраны с помощью msbuild следующим образом:

c:\hackrf\host\build> msbuild HackRF.sln

Cygwin

mkdir host/build cd host/build cmake ../ -G "Unix Makefiles" -DCMAKE_LEGACY_CYGWIN_WIN32=1 -DLIBUSB_INCLUDE_DIR=/usr/local/include/libusb-1.0/ make make install

MinGW

mkdir host/build cd host/build cmake ../ -G "MSYS Makefiles" -DLIBUSB_INCLUDE_DIR=/usr/local/include/libusb-1.0/ make make install

Как обновить прошивку HackRF

Устройства HackRF поставляются с микропрограммой на флэш-памяти SPI и с битовым потоком, запрограммированным на CPLD. Прошивка может быть обновлена только с помощью USB-кабеля и хост-компьютера.

Эти инструкции позволяют обновить микропрограмму и поток битов CPLD, чтобы воспользоваться новыми функциями или исправлениями ошибок.

Если вам трудно заставить этот процесс работать из вашей родной операционной системы, вы можете использовать Pentoo или GNU Radio Live DVD для выполнения обновлений.

Шаг 1: Обновление прошивки SPI Flash

Чтобы обновить прошивку на работающем HackRF One, используйте программу hackrf_spiflash:

hackrf_spiflash -w hackrf_one_usb.bin

Вы можете найти двоичный файл прошивки (hackrf_one_usb.bin) в каталоге firmware-bin последней версии пакета или вы можете скомпилировать свой собственный из исходного кода. Для Jawbreaker используйте hackrf_jawbreaker_usb.bin. Если вы компилируете из исходного кода, файл будет называться hackrf_usb.bin.

Программа hackrf_spiflash является частью hackrf-tools.

При записи образа прошивки на SPI-флэш-память обязательно выберите прошивку с именем файла, оканчивающимся на «.bin».

После записи прошивки на SPI-флешку вам может понадобиться выполнить сброс устройства HackRF, нажав кнопку RESETили отключив и снова подключив его.

Если вы получили ошибку, в которой упоминается HACKRF_ERROR_NOT_FOUND, ознакомьтесь с FAQ. Часто это проблема разрешений, которая может быть быстро решена.

Шаг 2: Обновление CPLD

Для обновления до последней версии образа CPLD сначала обновите прошивку SPI flash, libhackrf и hackrf-tools. Затем:

hackrf_cpldjtag -x firmware/cpld/sgpio_if/default.xsvf

Через несколько секунд три светодиода должны начать мигать. Это указывает на то, что CPLD был запрограммирован успешно. Перезагрузите устройство HackRF, нажав кнопку RESET или отсоединив и снова подключив его.

Только при необходимости: загрузка DFU

Режим загрузки DFU обычно требуется только в том случае, если прошивка не работает должным образом или никогда не была установлена.

Микроконтроллер LPC4330 на HackRF способен загружаться из нескольких различных источников кода. По умолчанию HackRF загружается с флэш-памяти SPI (SPIFI). Он также может загружать HackRF в режиме загрузки DFU (USB). В режиме загрузки DFU HackRF будет ждать, пока код будет доставлен с использованием стандарта DFU (обновление прошивки устройства) через USB, а затем выполнит этот код из ОЗУ. SPIFI обычно не используется и не изменяется в режиме DFU.

Чтобы запустить HackRF One в режиме DFU, удерживайте нажатой кнопку DFU при включении или при нажатии и отпускании кнопки RESET. Отпустите кнопку DFU после того, как загорится светодиод 3V3. Светодиод 1V8 должен оставаться выключенным. На этом этапе HackRF One готов к приёму прошивки через USB.

В режиме DFU вам следует использовать только образ прошивки с именем файла, оканчивающимся на «.dfu», а не на прошивку, оканчивающуюся на «.bin».

Только при необходимости: восстановление прошивки SPI Flash

Если встроенное программное обеспечение во флэш-памяти SPI было повреждено или вы программируете самодельный HackRF в первый раз, вы не сможете сразу использовать программу hackrf_spiflash, как указано в приведённой выше процедуре. Выполните следующие шаги:

Следуйте инструкциям по загрузке DFU, чтобы запустить HackRF в режиме загрузки DFU.

Напечатайте:

dfu-util --device 1fc9:000c --alt 0 --download hackrf_one_usb.dfu

для загрузки прошивки из пакета релиза в оперативную память. Если у вас есть Jawbreaker, используйте вместо этого hackrf_jawbreaker_usb.dfu. В качестве альтернативы используйте

make -e BOARD=HACKRF_ONE RUN_FROM=RAM program

для загрузки прошивки в оперативную память и её запуска.

Выполните процедуру обновления прошивки SPI флэш прошивки как показано выше, чтобы записать образ прошивки «.bin» во флэш-память SPI.

Получение DFU-Util

При новых установках вашей ОС вам может потребоваться получить копию DFU-Util. Для большинства дистрибутивов Linux он должен быть доступен в виде пакета, например, в Debian/Ubuntu

sudo apt install dfu-util

Для Arch Linux/BlackArch:

sudo pacman -S dfu-util

Если вы используете платформу без пакета dfu-util, инструкцию по сборке можно найти здесь на странице сборки исходного кода dfu-util:

cd ~ sudo apt build-dep dfu-util sudo apt 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 Util в вашей системе.

Быстрый старт с HackRF. Первый приём и передача данных в HackRF

Данные команды показаны для Linux.

Для просмотра информации о вашем устройстве, а также чтобы убедиться, что Linux правильно определяет HackRF и готов работать с ним, выполните команду:

hackrf_info

Для выполнения тестового получения данных запустим hackrf_transfer с опцией -r после которой укажем /dev/null, чтобы данные не сохранялись на компьютер:

hackrf_transfer -r /dev/null

Будет использоваться скорость по умолчанию — 10 миллионов бит в секунду. Максимальная скорость HackRF равна 20 мегабитам в секунду, чтобы проверить эту скорость запустите команду с опцией -s, после которой укажите скорость в битах в секунду:

hackrf_transfer -r /dev/null -s 20000000

Некоторые устройства HackRF на некоторых компьютерах могут показывать предельную скорость равную 21500000. Чтобы проверить, поддерживает ли ваш компьютер такую скорость, выполните команду:

hackrf_transfer -r /dev/null -s 21500000

Главное, от чего зависит скорость — это USB разъём. На одном и том же компьютере скорость в разных USB гнёздах может быть разная. Как минимум ваш компьютер должен поддерживать скорость по умолчанию, то есть 10 мегабит в секунду.

Для передачи данных используется опция -t:

hackrf_transfer -t /dev/zero

С hackrf_transfer вы обычно будете использовать опцию -f, после которой нужно указывать частоту в Герцах. Допустимые значения с 0MHz до 7250MHz.
 

Vander

CodebyTeam
Gold Team
16.01.2016
1 420
4 351
BIT
0
Хорошая статья, только оформить бы немного получше, слишком сливается текст и команды.
Будут примеры практического использования?
 
N

neybivatebilla

Хорошая статья, только оформить бы немного получше, слишком сливается текст и команды.
Будут примеры практического использования?
Думаю да,но немного позже ибо сейчас занят другими проектами.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!