Сканеры и передатчики радиочастот
Создано: 03 декабря 2019
Обновлено: 05 февраля 2023
Существуют два устройства: приемо-передатчик «HackRF One» в диапазоне «1МГц-6ГГц» и широтой пропускания «20МГц» в реальном времени, приемник «RTL 2832» в диапазоне «100кГц-1.7ГГц» и широтой пропускания «5МГц» в реальном времени. Для работы с ними можно воспользоваться «GQRX» и «GNURadio» для Linux» или «SDR# (SDRSharp)» для «Windows».
Программа «SDR# (SDRSharp)» имеет большое количество плагинов. Из них можно выделить следующие:
- «DSD+ (DSDPlus)» позволяет декодировать большинство цифровых раций.
- «SDRdue» позволяет из двух устройств создать линейный радар. Теоретически из двух вращающихся направленных антенн можно создать полноценный двухмерный локатор и, даже, трехмерный (с большим количеством антенн). Которые смогут строить карту мощности сигналов или определять расстояния до источников сигнала.
В «Linux» есть аналогичный интерфейс для работы с устройствами: «GQRX».
С прошивкой старше версии «2017.02.1» «HackRF One» способна осуществлять сканирование в диапазоне «1МГц-6ГГц» со скоростью «8ГГц в секунду». Для реализации данной возможности необходимо установить программу «QSpectrumAnalyzer». Лучшего всего сегодня работает версия для «Ubuntu». Необходимо убедиться в наличии установленного пакета «hackrf» в системе.
Вместо готовых пакетов «Linux» можно использовать сложную, но функциональную программу «GNURadio», которая умеет практически все, даже одновременно слать несколько сигналов на разных частотах в пределах полосы пропускания реального времени устройства (для режима передатчика в «HackRF One» это «20МГц»). Подробнее с возможностями «GNURadio» можно ознакомиться в статье «Передача радиосигналов с помощью HackRF». Для добавления блоков приема и передачи «HackRF One» в «GNURadio» необходимо установить пакет «gr-osmosdr». Наиболее стабильно на текущий момент данный комплекс работает в «Ubuntu».
В «GNURadio» возможно реализовать программы, как с «Графическим интерфейсом», так и без. Для освоения программы рекомендуется потренироваться на простых примерах. Попробовать послать «Модулированный сигнал» на различных частотах, меняя частоту в «Графическом интерфейсе». Рекомендуется, кроме посылки сигнала в «HackRF One», дублировать его на «График», но нужно учитывать, что в реальности сигнал будет отличаться из-за «Аппаратных» ограничений «HackRF One».
При этом, для ускорения передачи «Информации», рекомендуется задействовать не один сигнал, а несколько, используя всю полосу пропускания «HackRF One» («20МГц»). Часто бывает важным обеспечить безопасность помещения, для этого могут использоваться «Генераторы шума». В «HackRF One» есть и такая возможность, также, диапазон «Генерации шума» можно расширить при помощи «Cдвига» полосы пропускания «20МГц» со скоростью «8ГГц в секунду», что сделает практически невозможным получения «Информации» в «Радиоэфире» злоумышленнику в диапазоне «1МГц-6ГГц». Для получения спектра от «1кГц» стоит использовать преобразователь «Ham It Up v1.3 Barebones - HF Upconverter».
Для любой модели освоенной в «GNURadio» можно легко получить «Исходный код» и включить его в свою программу. Для этого стоит убрать все «Графические элементы» модели «GNURadio» и скомпилировать «Python» код. В результате будет получен файл кода, в котором четко видно все конфигурационные «Строки для управления» прибором по заданной структуре модели. Таким образом можно дополнительно разработать «Алгоритм сдвига полосы пропускания» для генерации шума в «1МГц-6ГГц» со скоростью «8ГГц в секунду».
Или, используя одну из многочисленных предложенных алгоритмов пакетированного обмена «Информацией», создать программу, а дальше доработать ее для осуществления получения через «Сеть» «Адресованных шифрованных пакетов» с целью «Продвижения» их в «Радиоэфир».
Внизу представлен код «Генератора шума», как можно увидеть он очень не большой по размеру.
#!/usr/bin/env python2 # -*- coding: utf-8 -*- ################################################## # GNU Radio Python Flow Graph # Title: Top Block # Generated: Sun Jan 28 17:43:35 2018 ################################################## from gnuradio import analog from gnuradio import eng_notation from gnuradio import gr from gnuradio.eng_option import eng_option from gnuradio.filter import firdes from optparse import OptionParser import osmosdr import time class top_block(gr.top_block): def __init__(self): gr.top_block.__init__(self, "Top Block") ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.osmosdr_sink_0.set_sample_rate(20e6) self.osmosdr_sink_0.set_center_freq(433e6, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(5, 0) self.osmosdr_sink_0.set_if_gain(50, 0) self.osmosdr_sink_0.set_bb_gain(30, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.analog_noise_source_x_0 = analog.noise_source_c(analog.GR_GAUSSIAN, 1, 0) ################################################## # Connections ################################################## self.connect((self.analog_noise_source_x_0, 0), (self.osmosdr_sink_0, 0)) def main(top_block_cls=top_block, options=None): tb = top_block_cls() tb.start() try: raw_input('Press Enter to quit: ') except EOFError: pass tb.stop() tb.wait() if __name__ == '__main__': main()
И это все только небольшая часть всех возможностей «HackRF One» и других аналогичных устройств. Рассмотрим еще одну, очень важную с точки зрения «Информационной безопасности автоматизированных систем», а именно, фиксирование утечек «Информации» по каналу «ПЭМИН».
Практически все «Электрические устройства», особенно, «Устройства» обрабатывающие «Информацию» (например, «Компьютеры» или «Смартфоны») в процессе ее обработки создают не один «Легальный информационный канал» («Электрический», «Проводной»), но и второй «Побочный канал» («Электромагнитный», «Беспроводной»), который дублирует «Информацию» из «Легального информационного канала».
«Побочный канал» позволяет сделать, например, следующие: поселиться с вами по соседству и на «Небольшом расстоянии» считывать данные, обрабатываемые на ваших «Устройствах», например, «Мониторе» или «Шифраторе». Это делает, в том числе, доступная практически всем для приобретения «HackRF One» при помощи «TEMPESTSDR».
Стоит сказать большое спасибо всем тем, кто разрабатывает подобные открытые технологии и кто доходчиво объясняет, как ими пользоваться.
Для передачи информации можно выделить два типа каналов: «Телеметрия», «Мультимедиа». Особенность первого способа заключается в отсутствии необходимости передачи на большой скорости. Он может быть использован в «Интернете вещей (IoT)» для обмена данными параметров и состояния, управления и изменения конфигурации. Для решения задачи беспроводной связи есть большой выбор трансиверов «CDEBYTE» с различными характеристиками. Для проводной части, можно использовать «Arduino Ethernet Shield».
Для передачи при помощи устройств «CDEBYTE» необходима управляющая микросхема, например, «Arduino». Если планируется передача не только по внутренним протоколам «Arduino» (Например, «UART», «I2C», «SPI» и т.п.), то можно использовать универсальный интерфейс «Интернета». Тогда, к управляющему элементу нужно добавить «открытую библиотеку стека TCP/IP» и адаптер «Arduino Ethernet Shield». Можно использовать следующие библиотеки: «ETHER_28J60 and EtherShield», «EtherCard», «UIPEthernet».
Библиотеки отличаются между собой функциональностью, стабильностью работы, размером. Первая библиотека не стабильна при большой нагрузке, имеет только основной функционал и самый небольшой размер. Вторая стабильная, но не имеет большого функционала. Первые две библиотеки могут быть использованы на «Микроконтроллерах», например, «Arduino Micro Pro». Последняя библиотека обладает самым полным функционалом, стабильна, но из-за размера может быть использована только на «Arduino Mega», «Arduino Due» и т.п. Более подробно о работе с библиотеками «TCP/IP» для «Arduino Ethernet Shield» можно узнать в статьях «Сетевой модуль для Arduino Nano ENC28J60» и «Web-Enable your Arduino with an Arduino ENC28J60 Ethernet shield».
Но для обеспечения передачи ресурсоемких мультимедия потоков предложенных скоростей будет недостаточно, потому что самым узким местом является скорость протокола «UART», в некоторых случаях, трансивера «CDEBYTE». Поэтому необходимо отдельное решение для передачи мультимедия. Существует множество вариантов, но главное - скорость внутреннего интерфейса. Из универсальных и повсеместно применяемых можно выделить: «USB ~30 МБ/с», «Ethernet ~125 МБ/с».
Но для обеспечения передачи ресурсоемких мультимедия потоков предложенных скоростей будет недостаточно, потому что самым узким местом является скорость протокола «UART», в некоторых случаях, трансивера «CDEBYTE». Поэтому необходимо отдельное решение для передачи мультимедия. Существует множество вариантов, но главное - скорость внутреннего интерфейса. Из универсальных и повсеместно применяемых можно выделить: «USB ~30 МБ/с», «Ethernet ~125 МБ/с».
Соответственно, есть платы «HackRF», «BladeRF», «UmTRX» и «USRP». Подробнее с характеристиками данных устройств можно ознакомиться в статье «Первое поколение доступных SDR-трансиверов». Обычно подобные решения разрабатываются для исследований и имеют широкий диапазон с небольшой мощностью передатчика. Для решения проблемы мощности можно использовать «Усилители сигнала», например, для разъема «SMA». В случае наличия универсального интерфейса «Ethernet» подключать дополнительные модули не будет необходимости, а при наличии «USB» понадобиться дополнительная плата, к примеру, «BeagleBone» с «Debian Linux» для обработки полученных данных в универсальный интерфейс «Ethernet». Ширина канала у подобных плат достаточно высока, но, дополнительно, есть возможность расширения при помощи подключения «MIMO антенны» с несколькими каналами различной поляризации одной частоты.