tcxo что это hackrf one

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Первое знакомство с HackRF и gqrx

Вопросы анализа радиоэфира, за пределами Wi-Fi, Bluetooth и BLE для меня довольно новые. Поэтому когда я получил на почте свой HackRF, то у меня возник вопрос — а что с ним, собственно, делать? Эта статья посвящена именно этому — как проверить и задействовать HackRF. Для наглядности мы просто будем слушать FM радио. Что-то более серьёзное будет в последующих инструкциях.

Если вы тоже начинающий, то HackRF это радио (Software-defined radio), прибор, которые может отправлять и получать радиоволны в очень широком диапазоне. А gqrx — это одна из программ для работы с получаемыми через HackRF (или другими аналогичными устройствами) данными. У этой программы графический интерфейс и она очень подходит для самого первого знакомства с SDR.

Настоятельно рекомендуется прочитать «SDR и HackRF для начинающих». Если не осилите всё, то хотя бы раздел «Как установить драйвер, инструменты HackRF и SDR утилиты». Также запомните, что HackRF не должен быть включён, а тем более передавать или получать данные, если к нему не подключена какая-либо антенна!

Где купить HackRF

Я купил у этого продавца. Особенность покупки HackRF в том, что имеется множество вариантов комплектаций:

Можно купить только плату, даже без USB кабеля питания, а можно купить вместе с корпусом и несколькими антеннами. Виды корпусов также различаются. Ещё нужно быть внимательным, и не перепутать корпус без платы с самой платой — некоторые корпусы (с экраничиком и встроенной батареей) могут стоить как сама плата.

Мне понравилось, что имеется несколько антенн под разные нужды.

Коробка мне пришла в весьма мятом виде и я пока шёл с почты довольно сильно волновался за плату:

К счастью, плата была уже в корпусе, а корпус довольно крепкий и на нём не было ни царапины.

Антенны на вид очень хрупкие, но они оказались в полном порядке — не погнутые и не сломанные. Не повезло только устройству «HackRF TCXO PPM0.1 GPS Clock module», при деформации коробки, ножки проткнули упаковку:

Сами ножки также были погнуты.

Я распрямил ножки плоской отвёрткой и установил этот модуль на плату HackRF. Я забыл сделать фотографию (а разбирать ещё раз лень) и к тому же я не уверен, что установил правильно. Поэтому про модуль HackRF TCXO PPM0.1 GPS Clock, для чего он нужен и как его использовать будет в какой-нибудь последующей статье.

Как проверить HackRF

При подключении HackRF к компьютеру с Linux практически ничего не происходит — только на плате загораются индикаторы. В самой системе нет каких-то встроенных аплетов для подключения к HackRF. Поэтому начнём с раздела «Быстрый старт с HackRF. Первый приём и передача данных в HackRF».

Во-первых, устройство обнаружено, и на нём установлена прошивка 2018.01.1. Версию последней прошивки можно проверить здесь: https://github.com/mossmann/hackrf/releases/. Там такая же версия, то есть обновление не требуется (если что, про обновление прошивки написано здесь).

Попробуем получить данные на максимальной скорости:

Попробуем отправить данные:

Как минимум базовые тесты пройдены — несмотря на мятую коробку, устройство не пострадало.

Пошаговая инструкция по обновлению прошивки HackRF

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

Для проверки версии установленного ПО и прошивки HackRF запустите команду:

Как можно увидеть, версия программного обеспечения, установленного на данный компьютер, теперь 2021.03.1:

А версия прошивки 2018.01.1:

Убедиться, что это последняя версия ПО можно на данной странице: https://github.com/mossmann/hackrf/releases/

Там же мы узнаём, что начиная с выпуска 2021.03.1, CPLD bitstreams теперь включён в прошивку и автоматически загружается вместе с ней при обновлении. Отдельно обновлять CPLD больше не нужно.

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

Файл прошивки поставляется вместе с libhackrf и hackrf-tools. Название конкретных пакетов может быть разным в различных дистрибутивах Linux. Подробности смотрите в разделе «Как установить драйвер, инструменты HackRF и SDR утилиты».

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

Файл с прошивкой называется hackrf_one_usb.bin, найдём путь до него в системе:

В моём случае это /usr/share/hackrf/hackrf_one_usb.bin.

Хотя обновлённые libhackrf и hackrf-tools должны означать, что файл прошивки тоже новый, проверим, что у файла свежая дата создания.

Для запуска процесса обновления используйте команду вида:

Чтобы изменения вступили в силу, выключите и включите HackRF (отсоедините от USB кабеля).

Вновь выполним проверку версии ПО:

Теперь прошивка HackRF обновлена!

Как принимать сигнал с HackRF

Установим программу gqrx, для этого в Kali Linux, Debian, Linux Mint, Ubuntu и их производных выполните команду:

В BlackArch и Arch Linux выполните команду:

Запустите gqrx:

При первом запуске появится окно настройки, в нём можно выбрать источник принимаемых данных и устройство вывода звука. В качестве Device (Устройства) я выбрал HackRF, также увеличил Input rate до максимального значения 20000000.

Для запуска приёма сигнала нажмите кнопку «Start DSP processing», а для смены частоты можно указывать её в окне «Frequency», либо устанавливать на панели с цифрами. Панель можно передвигать за нижний ряд цифр:

Для остановки приёма сигнала нажмите кнопку «Stop DSP processing» (бывшая кнопка «Start DSP processing»). Если вы хотите отключить HackRF (например для смены антенны), то лучше выйти из gqrx, т. к. у меня после переподключения HackRF эта программа зависала.

Читайте также:  Что такое лмк в медицине

Во время приёма сигнала довольно высокая нагрузка на центральный процессор, возможно, из-за того, что я выбрал высокий Input rate:

Как слушать FM радио с HackRF

Диапазоны FM это 92.1-107.1 MHz. Поскольку частота в окне «Frequency» указана в kHz (килогерцах), то нам нужно перейти примерно к 100000 kHz:

Вы можете увидеть, что в этом диапазоне много пиков — это и есть эфиры радиостанций.

В качестве «Mode» выберите «WFM (stereo)».

Увеличьте значение «Gain», иначе будет слишком тихо.

Нажимая на кнопку Bookmark можно сохранять частоты в закладки.

Если нажать на кнопку Rec, то можно записывать аудио.

Небольшое видео, на котором я осваиваю интерфейс gqrx:

Это только самое начало! Далее мы с вами будем разбираться с источниками сигнала и методами их декодирования. С помощью HackRF можно обнаруживать самые разные устройства: от беспроводных дверных звонков до жучков, скрытых камер и радаров. Некоторые виды сигналов возможно расшифровать: рации, устаревшие телефонные стандарты и т. п. Некоторые виды сигнала можно только фиксировать: Wi-Fi, современные телефонные стандарты и т. п. В любом случае, мир радио волн очень обширный и интересный!

Источник

Передача радиосигналов с помощью HackRF

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

Уникальность HackRF в его технических параметрах — при цене около 300$, устройство позволяет не только принимать, но и передавать радиосигналы в диапазоне 1МГц-6ГГц с шириной полосы до 20МГц. Использование HackRF практически не освещалось на Хабре и Гиктаймс, пора восполнить этот пробел.

Что касается приема радиосигналов, то тут все просто, и практически не отличается от популярного 10-долларового RTL-SDR, о котором не писал только самый ленивый. Ставится нужная DLL, запускается программа, в общем-то и все. Кто еще не слышал о таком “чуде”, могут почитать здесь же на сайте:
habrahabr.ru/post/149698
habrahabr.ru/post/149702
habrahabr.ru/post/280454
habrahabr.ru/post/200914

С приемом все достаточно просто и тривиально, технология дешевая и давно отработанная. С передачей все немного сложнее. Чем мы сейчас и займемся.

Низкий уровень — С/С++

Первый способ — общение напрямую с устройством. HackRF имеет библиотеку с открытым API, пример его использования можно посмотреть на сайте автора в утилите hackrf_transfer: github.com/mossmann/hackrf/blob/master/host/hackrf-tools/src/hackrf_transfer.c. Для тех, кто хоть раз работал со звуковой картой, принцип будет понятен — определенное число раз в секунду вызывается callback-функция, буфер для которой надо заполнить данными. Казалось бы все просто, но есть одно “но” — HackRF это SDR. Software Defined Radio. Это значит, что просто отправить WAV-файл в буфер не выйдет, ничего не передастся. Мы программно должны сформировать комплексный (IQ) сигнал для всей требуемой полосы приемника, чтобы его ЦАП в свою очередь, отправил “это” в эфир. Также необходимо задать ряд настроек (частота, усиление, полоса пропускания), что тоже можно посмотреть в исходнике.

HackRF поддерживает работу с различной шириной полосы пропускания, от 1 до 20МГц, и эту полосу необходимо сформировать программно. Мы этим заниматься не будем. Математика нужна достаточно серьезная, так что перейдем сразу ко второму способу — использованию пакета GNU Radio.

GNU Radio

GNU Radio — это открытый и бесплатный пакет программ, предназначенный для цифровой обработки сигналов в научных, образовательных или коммерческих целях. Система состоит из большого числа готовых блоков, имеющих интерфейс на языке Питон, сами блоки написаны на С++. В GNU Radio входит также визуальный редактор GNURadio Companion, позволяющий визуально соединять блоки в готовое “устройство”, вообще не используя язык программирования.

Итак, устанавливаем драйвера для Hack RF, устанавливаем GNU Radio (он может быть поставлен на Linux или Mac OS, либо скачан как Linux Live CD), запускаем в консоли “gnuradio-companion”. Теперь все готово, можно приступить к передаче.

Формально HackRF может передать что угодно в пределах своей полосы пропускания, например зная протокол передачи данных, можно рулить радиоуправляемой машинкой или управлять дверным звонком. Рассмотрим самые тривиальные примеры: амплитудную (AM) и частотную (FM) модуляцию.

Частотная модуляция

Для передачи в режиме FM запустим gnuradio-companion и создадим в программе такой граф.

Его структура довольно проста. В качестве источника был выбран WAV-файл с частотой дискретизации 44100, блок Multiply Const умножает сигнал на 2 (исходный звук был довольно-таки тихий), следующий блок WBFM Transmit и делает всю “магию” — преобразует наш вещественный сигнал с частотой 44100 в комплексный сигнал с частотой дискретизации 88200. Следующий блок Resampler повышает частоту дискретизации до выбранных для этого примера 2.4МГц. Частота передачи установлена на 87.5МГц, это была самая низкая частота FM-радио, поддерживаемая моим смартфоном, и она была свободна от FM-станций.

Результат — запускаем граф в GNU Radio, на HackRF загорается красный светодиод TX, в смартфоне слышен наш файл.

Его содержимое — готовая программа на Питоне, реализующая нашу передачу!

Ее можно сохранить в отдельную папку и использовать как угодно, модифицировать и пр. Это достаточно удобно, т.к. позволяет например, дописать свой UI, сделать запуск по расписанию, в общем, все ограничено только фантазией программиста.

Немного модифицируем граф, чтобы запускать программу в режиме “узкой ЧМ”, которая используется в рациях и радионянях:

Отличие небольшое — мы установили блок NBFM, а частоту передачи установили в 433.075МГц — первый канал LPD-диапазона. Включаем рацию, и слышим звук. Кстати, GNU Radio позволяет использовать в качестве источника не только WAV-файл, но и микрофон, так что программу легко переделать для передачи голосовых сообщений.

Читайте также:  какие форматы читает магнитола болеро
Амплитудная модуляция

Для тех у кого остался бабушкин приемник КВ-диапазона (хотя лучше конечно хотя бы Degen 1103 или IC-R9500), будет интересно попробовать режим AM. Для этого создаем следующий граф:

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

Еще больше SDR

Напоследок покажем, что HackRF может куда больше, чем просто рация из «Связного» ценой в 1000р. Это ведь полноценное Software Defined Radio, на котором можно передать что угодно. Чтобы показать легкость работы с “цифрой” в GNU Radio, дополним граф FM-трансляции так, чтобы HackRF передавал информацию одновременно на 2х частотах.

Здесь мы добавляем второй файл, повторяем ту же самую структуру. Но полученные данные умножаем на комплексный синусоидальный сигнал с частотой 125КГц, что эквивалентно сдвигу частоты на эти 125КГц, в итоге второй поток данных будет транслироваться на частоте 433075+125 = 433200, что соответствует 6му каналу LPD. Теперь HackRF передает одновременно 2 звуковых файла на 2х разных частотах. Можно добавить и 3й, все ограничено лишь шириной полосы пропускания и мощностью компьютера.

На этом все. Заинтересовавшиеся темой GNU Radio могут найти туториалы в сети, их довольно-таки много.

Напоследок. HackRF не является полноценной радиостанцией, его мощность слишком мала и составляет около 20мВт, да и КПД штатной антенны менее 1%. Это скорее устройство для экспериментов с сигналами в «ближней зоне», в пределах офиса или квартиры. Если же кто-то захочет экспериментировать с более мощными сигналами, обязательно стоит соблюдать правила распределения радиочастотного спектра, чтобы не мешать другим.

Источник

HackRF: Первое знакомство с виновником торжества

Содержание статьи

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

Откуда у нас HackRF

Так получилось, что после прошлогоднего ZeroNights я посетил московский Hackspace Neuron и ушел оттуда не с пустыми руками, а с кодом на бету HackRF под честное слово, что девайс не будет пылиться на полке. Дальше было долгое ожидание старта бета-программы. И вот спустя без малого год обычной почтой прибыл долгожданный HackRF Jawbreaker. Большое спасибо Майклу Оссману (Michael Ossmann) за разработанный девайс и Александру Чемерису из Fairwaves за предоставленную возможность поучаствовать в программе бета-тестирования. Примечательно, что, судя по надписи на борту, плата была изготовлена в декабре 2012 года.

Обрезание

Итак, посылка вскрыта, фото сделано, приступим к делу. HackRF поставляется с плохонькой встроенной антенной на

900 МГц. При этом, несмотря на наличие уже распаянного SMA-разъема, просто подключить внешнюю антенну не получится, сигнал все равно будет браться с изогнутой дорожки с краю платы.

Внешне происходящее в GNU Radio похоже на программирование робота Mindstorms

Хакер #177. Радиохакинг: что такое SDR?

Чтобы задействовать желанный антенный разъем, необходимо отключить встроенную антенну. Для этого придется проделать небольшую хирургическую операцию, а именно разорвать одну токопроводящую дорожку. На плате место препарирования предусмотрительно отмечено стрелочкой, и на место будущего разрыва нанесена капля припоя, которую лучше предварительно удалить паяльником. После этого, вооружившись чем-нибудь тонким и острым, нужно разрезать (разорвать) токопроводящую дорожку. Осторожно, поблизости расположено несколько элементов, которые с платы удалять нежелательно, так что будь аккуратен :).

HackRF Jawbreaker — обрати внимание на дату производства

Перед тем как брать в руки скальпель, рекомендуем просмотреть инструкцию.

После успешного обрезания HackRF готов к подключению внешней антенны. Форма, размеры и конструкция созданных впоследствии антенн чрезвычайно разнообразны и зависят от рабочей длины волны и назначения антенны. Если под рукой не оказалось подходящей антенны с SMA-разъемом (как в нашем случае), можно обойтись парой метров медного провода, извлеченного из сетевого кабеля пятой категории aka «витая пара». Достаточно воткнуть один конец в центр антенного разъема на плате (не замкнув при этом на землю), а второй подвесить, например, к люстре. Нам же для начала вполне подойдет кусок провода подлиннее, легко выдираемый из любого сетевого кабеля. Вставляем провод в SMA-разъем, подключаем HackRF по USB к компу, и можно приступать к установке/настройке софтовой части.

Для экспериментов с радио вообще и HackRF в частности пригодны Linux и более-менее OS X. Про Windows по большей части можно забыть, так как под ней ничего, кроме SDR# и HDSDR, не работает.

Самый простой путь получить весь нужный софт в работающем виде — это воспользоваться уже готовым дистрибутивом RTL-SDR/HackRF Live DVD. Также буквально во время написания этой статьи вышел Kali Linux 1.05 с поддержкой RTL-SDR.

Для установки SDR утилит в Kali требуется выполнить следующие команды:

Пользователи OS X могут найти готовые формулы для Homebrew для большинства необходимого софта и собрать все ручками под себя. Однако без понимания и работы напильником не обойтись.

Для начала работы с HackRF потребуется следующий софт:

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

Baudline выглядит, конечно, винтажненько

В итоге интересующий нас файл — firmware-bin/hackrf_usb_rom_to_ram.bin. Берем его и прошиваем в недра Jawbreaker’а:

Читайте также:  альфа банк что нужно для получения кредитной карты

После чего для проверки работоспособности HackRF и корректности подключения опросим устройство стандартной утилитой из комплекта hackrf-tools:

Упражнение 1. Быстрый старт

Долго думать над применением девайса не придется, эфир в наше время буквально кишит различной информацией. Простейший способ ее оттуда достать — упомянутый программный приемник gqrx. А первым приходит в голову, что можно принять с помощью радио, как ни удивительно, — радио! Обычное вещание твоей любимой радиостанции с использованием частотной модуляции (FM).

Экран запуска gqrx

Запускаем gqrx, выбираем HackRF Jawbreaker в качестве устройства, оставив остальные пункты по умолчанию.

Остается только нажать на кнопку старта приема и лицезреть визуализацию радиоэфира. Ползущая водопадом вниз спектрограмма наглядно дает понять, на каких частотах ведется вещание, яркость полос соответствует интенсивности сигнала. Далее устанавливаем нужную частоту, демодулятор типа Wide FM, и вуаля, из аудиовыхода уже слышны осмысленные звуки.

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

Упражнение 2. Нюхаем и запоминаем

В качестве подопытного возьмем бытовой беспроводной звонок. Данное устройство состоит из двух частей: передатчика с кнопкой звонка и приемника с мерзким динамиком-пищалкой. При нажатии кнопки звонка происходит передача данных (уникальных для каждой пары приемник/передатчик) «в цифре» на частоте 433,92 МГц, если верить инструкции. Наша задача отснифать сигнал передатчика и научиться повторять, чтобы можно было звонить соседу в дверь удаленно.

Для начала определимся с частотой и проверим наличие сигнала при помощи gqrx.

Как видно из картинки выше, при отправке сигнала четко заметен небольшой «всплеск», оставляющий на спектрограмме ярко-красный след. Итак, данные передаются, теперь запишем их в файл командой

Запустив снифер, «звоним в звонок». Количество данных, получаемых из АЦП при сэмплировании на 16 МГц, достаточно велико, и лишние минуты работы снифера могут вылиться в гигабайтные дампы, 99,9% которых — бесполезный шум, наследие бесконечного космоса. Сейчас же нас интересуют земные сигналы, а именно что же передала кнопка звонку.

Лучший способ ознакомиться с полученной информацией — использовать спектроанализатор. Тут нам на помощь придет старенькая, но до сих пор незаменимая программа baudline. Подгружаем наш файл в raw-режиме, вручную выставляя параметры интерпретации (см. рисунок), иначе чуда не произойдет.

Спектроанализатор позволит выявить нужный нам сигнал

WARNING

Также следует учесть, что baudline имеет дурное свойство падать при открытии больших файлов, так что если ты пишешь длительный по времени радиообмен, то следует воспользоваться командой dd и порезать полученный файл на кусочки. Например, так:

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

Что ж, раз сигнал есть, попробуем его воспроизвести в эфир.

Слушаем частоту нашего звонка Получи FM-тюнер за 300 долларов

Упражнение 3. Собственно реплей

Просто, не правда ли? Слишком просто! Жаль, что на данный момент hackrf_transfer опять поломали в части отправки. Поэтому для проигрывания записанного дампа будем использовать исключительный Инструмент с большой буквы И — GNU Radio.

Для нашей цели источником сигнала будет файл дампа, который мы только что инспектировали при помощи baudline. Для его подгрузки просто добавляем блок File Source и в его свойствах указываем путь до файла. Следует обратить внимание на то, что каждая точка соединения имеет свой тип (на самом деле это тип данных Python) и цвет. Наш первый блок будет отдавать данные типа Byte, что, впрочем, неудивительно для ресурса-файла.

Следующий блок в цепочке (Add Const) также требуется для приведения данных из нашего радио к виду, пригодному для дальнейшей работы, а именно для выравнивания сигнала относительно нулевого уровня сложением с вектором-константой. Теперь наши данные выглядят и имеют формат по всем правилам GR, и можно отправить их прямо в блок вывода (osmocom Sink).

Osmocom Sink как раз реализует прослойку между GR и множеством различных ресиверов и трансмиттеров, и HackRF в их числе. Sink-блок для нашего случая обладает практически теми же параметрами, что и hackrf-transmit. Для более удобного изменения частоты передачи и частоты дискретизации в дальнейшем, создадим переменные (вытащим из списка пару блоков Variable), назовем их freq и samp_rate и зададим соответствующие значения: 433 МГц и 16 МГц. Ведь с какими параметрами записывали, с такими и надо отдавать. При конфигурации блока вывода в соответствующих полях укажем не значения, а имена переменных. Так, при определении свойств блоков в полях можно указывать не только константы, но и переменные и даже целые выражения, что, по сути, дает огромные возможности.

Итак, преобразование данных описано, свойства блока вывода соответствуют исходным условиям, время запустить эту шарманку! По аналогии с IDE разработки, кликаем на кнопку компиляции, в результате получаем проект, собранный в виде Python-скрипта, пригодного для запуска отдельно от gnuradio-companion.

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

Итого

HackRF отлично вписывается в нишу бюджетных приемопередатчиков, да и само комьюнити SDR бурлит и развивается, выходят дешевые гаджеты, пишется софт, жизнь удалась. Уже есть проекты для работы со спутниками, ADS-B, GSM, LTE, Bluetooth, а то, чего еще не придумали, ты можешь реализовать сам в GNU Radio.

Источник

Информ портал о технике и не только