HackRF One

HackRF — відкритий SDR трансивер з широким діапазоном частот.

Огляд

Характеристики

Параметр Значення
Частоти 1 МГц - 6 ГГц
Ширина смуги до 20 МГц
ADC/DAC 8 біт
Потужність TX до 15 dBm
Інтерфейс USB 2.0
Режим Напівдуплекс

Особливості

  • Повністю відкритий (hardware + software)
  • Широкий діапазон
  • TX можливість
  • Зовнішній тактовий вхід
  • Trigger вхід/вихід

Аксесуари

Аксесуар Призначення
ANT500 Телескопічна антена
Opera Cake Антенний перемикач
Rad1o Портативна версія
PortaPack Автономний дисплей

Встановлення

Linux

# Залежності
sudo apt install hackrf libhackrf-dev

# Правила udev
sudo cp 53-hackrf.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules

# Перевірка
hackrf_info

Оновлення firmware

# Завантажити останню версію
wget https://github.com/greatscottgadgets/hackrf/releases/latest/download/hackrf-2023.01.1.zip
unzip hackrf-2023.01.1.zip

# Оновити
hackrf_spiflash -w hackrf_one_usb.bin

Windows

1. Zadig  WinUSB драйвер
2. Встановити hackrf-tools

Базове використання

Командна строка

# Інформація про пристрій
hackrf_info

# Прийом (RX)
hackrf_transfer -r rx.bin -f 100000000 -s 8000000 -g 40 -l 32

# Передача (TX)
hackrf_transfer -t tx.bin -f 100000000 -s 8000000 -a 1 -x 40

# Сканування спектру
hackrf_sweep -f 2400:2500 -w 100000

Параметри

-f frequency    Частота в Гц
-s samplerate   Частота дискретизації (2-20M)
-g gain         IF gain (0-40 dB)
-l lna          LNA gain (0-40 dB)
-a amp          Підсилювач TX (0 або 1)
-x txvga        TX VGA gain (0-47 dB)

Прийом

SDR

Встановити HackRF plugin:
1. Скопіювати SDRSharp.HackRF.dll
2. Додати в SDRSharp.exe.Config:
   <add key="hackRF" value="SDRSharp.HackRF.HackRFIO,SDRSharp.HackRF"/>

GNU Radio

#!/usr/bin/env python3
from gnuradio import gr, blocks
import osmosdr

class hackrf_rx(gr.top_block):
    def __init__(self):
        gr.top_block.__init__(self)

        self.source = osmosdr.source(args="hackrf=0")
        self.source.set_sample_rate(8e6)
        self.source.set_center_freq(100e6)
        self.source.set_gain(40)

        self.sink = blocks.file_sink(gr.sizeof_gr_complex, "rx.bin")
        self.connect(self.source, self.sink)

if __name__ == "__main__":
    tb = hackrf_rx()
    tb.run()

GQRX

Device: hackrf=0
Sample rate: 8000000

Передача

Увага!

⚠️ ПЕРЕДАЧА ТІЛЬКИ:
- На ліцензованих частотах
- В екранованому приміщенні
- З dummy load
- Для тестування

Незаконна передача = кримінальна відповідальність!

FM передавач (приклад)

#!/usr/bin/env python3
from gnuradio import gr, analog, blocks
import osmosdr

class fm_tx(gr.top_block):
    def __init__(self):
        gr.top_block.__init__(self)

        # Аудіо джерело
        self.source = blocks.wavfile_source("audio.wav", True)

        # FM модулятор
        self.fm = analog.wfm_tx(
            audio_rate=48000,
            quad_rate=240000
        )

        # HackRF sink
        self.sink = osmosdr.sink(args="hackrf=0")
        self.sink.set_sample_rate(2e6)
        self.sink.set_center_freq(100e6)
        self.sink.set_gain(14)

        self.connect(self.source, self.fm, self.sink)

Replay attack (дослідження)

# Запис сигналу
hackrf_transfer -r signal.bin -f 433920000 -s 2000000 -g 40 -l 32

# Відтворення
hackrf_transfer -t signal.bin -f 433920000 -s 2000000 -a 1 -x 40

PortaPack

Що це

Автономний дисплей + батарея для HackRF.

Функції

- Прийом/передача без ПК
- Спектроаналізатор
- Декодери (ADS-B, AIS, POCSAG)
- Replay attack
- Генератор сигналів

Firmware

Mayhem: https://github.com/eried/portapack-mayhem
- Розширений функціонал
- Активна розробка

Практичні проекти

Аналіз спектру

# Запис спектру
hackrf_sweep -f 400:500 -w 100000 -1 > spectrum.csv

# Візуалізація (Python)
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv("spectrum.csv", header=None)
plt.plot(data[2], data[6])
plt.show()

TPMS (датчики тиску шин)

Частота: 315 МГц (US) / 433 МГц (EU)
Модуляція: FSK/ASK
Протокол: manufacturer-specific

RF Jam Detection

# Моніторинг спектру
hackrf_sweep -f 2400:2500 -w 100000 | while read line; do
    # Аналіз anomalій
done

Обмеження

8-біт ADC

- Обмежений динамічний діапазон
- ~48 dB теоретично
- Сильні сигнали перевантажують

Напівдуплекс

- Не можна TX і RX одночасно
- Потрібен час на перемикання
- Не підходить для full-duplex протоколів

Фазовий шум

- Внутрішній осцилятор не ідеальний
- Проблеми з вузькосмуговими сигналами
- Використовуйте зовнішній clock для точності

Troubleshooting

"hackrf_info" не бачить пристрій

# Перевірити USB
lsusb | grep 1d50

# Перевірити права
ls -l /dev/bus/usb/...

# Перезавантажити udev
sudo udevadm control --reload-rules
sudo udevadm trigger

Низький TX рівень

1. Увімкнути amp: -a 1
2. Збільшити txvga: -x 47
3. Перевірити антену

Перегрів

- Не тримати TX тривалий час
- Забезпечити вентиляцію
- Зменшити потужність

Firmware brick

# Режим DFU
1. Затиснути кнопки
2. Підключити USB
3. Використати dfu-util

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

Шлях: sdr/hackrf.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications