软件无线电安全之HackRF One初探

HackRF介绍

HackRF是一款开源软件无线电(SDR)平台,由Great Scott Gadgets公司推出。它具有广泛的频率覆盖范围,从1 MHz到6 GHz,支持大部分常见的无线通信频段。采用软件定义无线电技术,HackRF提供了自定义和控制无线信号处理的能力,包括接收、发送、解码和干扰。配备高速ADC和DAC,它能够实现各种无线应用,并通过USB接口与计算机连接,方便集成到各种软件和开发平台中。作为一个功能强大且灵活的平台,HackRF为安全研究人员、软件无线电从业者和爱好者提供了一个开放的环境,用于探索和实验无线通信技术和安全应用。

HackRF功能

HackRF可实现的功能可简要分为如下几点:

  1. 接收和解码无线信号:HackRF可以接收并解码各种无线信号,如无线电广播、无线电通信、无线电定位等。用户可以使用HackRF来监听和分析无线信号,了解无线通信的工作原理。

  2. 发送和模拟无线信号:HackRF可以生成和发送各种无线信号,如无线电广播、无线电通信、无线电干扰等。用户可以使用HackRF进行无线通信实验、无线信号干扰测试等。

  3. 破解和分析无线协议:HackRF可以用于破解和分析各种无线协议,如无线门禁系统、汽车遥控器、无线键盘鼠标等。用户可以使用HackRF来分析无线协议的加密算法和通信流程,从而进行安全评估和漏洞分析。

  4. 定位和跟踪无线信号:HackRF可以用于定位和跟踪无线信号的发射源。用户可以使用HackRF来进行定位和跟踪无线设备,如无线摄像头、无线麦克风等,从而实现无线设备的定位和监控。

在这一小节中,我们主要了解HackRF 接收和发送信号的功能,并在后续小节逐渐深入HackRF的各个功能。

注意:在使用HackRF设备时,在特定频率和特定功率广播需要执照,某些情况下甚至是非法的。请各位安全人员严格遵守相关无线电法规!

HackRF信号接收

Windows环境搭建

SDRsharp官网下载后,解包执行 install-rtlsdr.bat 自动下载 zadig.exe程序与此SDRsharp软件同级目录。SDRSharp.exe 为SDRsharp主程序,在运行SDRsharp.exe程序前需进行以下步骤:

将 HackRF One 连接计算机 USB,此时电脑无法识别HackRF One,我们需要打开 zadig 选择Options->Lists All Devices->HackRF One,并点击下图中按钮进行驱动安装。

图片

安装成功后在设备管理器显示如下图,说明驱动安装成功:

图片

信号收听

1.收听FM广播

FM频率:

在全世界范围内,FM 广播波段属于无线电频谱的VHF部分,通常使用 87.5到108.0 MHz。

打开 SDRsharp后先将Source设置为HackRF后再进行其他操作。

图片

HackRF Controller 为配置面板,DEVICE 下为设备名称,LNA Gain 与 VGA Gain 分别是 AFE 增益控制,AMP 为 RX AMP 启用/停止, PPM 为频率误差补偿。

通常在 FM 频率 LNA 设置在白天设置为 16或24,晚上设置为 8 即可正常工作,VGA 可根据信号进行调节,这里我设置为 24,AMP 也要勾选。设置完成后点击 CLOSE 或直接关闭即可。点击启动按钮显示如下图所示,出现的波峰为HackRF接收信号经SDRsharp解析识别到的可能信号源。

图片

此时鼠标点击不同波峰处进行收听,即可切换至相应频率的FM电台。

2.收听对讲机

将频率设定到440MHz附近,设置如下图所示,图中Radio选择 NFM,并将 Correct IQ 勾选去除,点击开始收听后,在波形窗口中偶尔出现的波峰即是对讲机发出的信号,即瀑布图中偶尔出现的红线。

图片

3.收听GSM信号

GSM 信号有两个频率 870MHZ,950MHZ。下图为收听870MHz的波形图。

图片

4.收听其他信号

除了接收以上信息外,在指定频率下,HackRF还可收听航空、WiFi等信号。这里不再演示,大家感兴趣可自行查找频率范围并测试收听进行学习。

HackRF信号发送

1.ubuntu环境安装

apt-get install HackRF libHackRF-dev libHackRF0

HackRF连接计算机,运行HackRF_info命令会输出以下信息。

图片

我们可以使用HackRF_transfer命令来接收或发送信号。

图片

-d 表示要使用的HackRF的ID,如果你只插了一台HackRF,·这个参数就可以忽视
-r 启用该参数需要指定文件名称,该参数是指将接收的音频保存到指定文件中,以便后期采用
-t 启用该参数需要指定文件名称,该参数是指从文件读取音频
-w 此参数是指自动保存文件为WAV,此参数是为了和SDR#(一款无线电软件,支持windows)兼容
-f 此参数为设置发送/接收的频率,单位是Hz,范围从0MHz到7250MHz
-i 此参数为设置发送/接收的中频,单位是Hz,范围从2150MHz到2750MHz
-o 此参数为设按置前端本地震荡器的频率(LO),单位是Hz,范围从84MHz到5400MHz
-m 此参数是选择镜像抑制滤波器,0为旁路,1为低通,2为高通
-a 此参数为是否启用RX/TX射频放大电路,0为禁用,1为启用
-p 此参数为是否启用天线端口电源,0为禁用,1为启用
-l RX LNA(中频)增益,可以设置0-40db,8db间隔
-g RX VGA(基频)增益,可以设置0-62db,2db间隔
-x TX VGA(基频)增益,可以设置0-47db,1db间隔
-s 此参数为设置采样率,单位是Hz,范围从2-20Mhz,默认为10Mhz
-n 此参数为接收/发送的样本的个数,默认为无限制
-S 此参数为设置缓冲区大小
-c 此参数为设置CW信号源模式,振幅0-127(DC值到DAC)
-R 此参数为设置是否开启重复发送,默认为关闭
-b 此参数为以Hz为单位,设置基带滤波器的带宽,以下是可能的值:
    1.75/2.5/3.5/5.5/6/7/8/9/10/12/14/15/20/24/28Mhz,计算公式为:
    默认值<=0.75*采样率(Hz)
-C 此参数为将内部晶体、时钟设置为ppm
-H 此参数为设置设备使用GPIO引脚同步USB传输

2.信号发送

我们可以使用下面的命令录制信号。无线遥控设备通常是 315MHZ 和 433.92MHZ,这里指定录制频率为315MHz。运行后,手动触发遥控信号。

HackRF_transfer -r open.raw -f 315000000 -l 16 -g 20

图片

运行下面的命令重放刚刚录制的遥控信号。

HackRF_transfer -t open.raw -f 315000000 -x 40

图片

除了在linux中使用HackRF_transfer接收和发送信号外,在windows中也可通过Universal Radio Hacker软件进行接收和发送。我们可以利用HackRF接收和发送信号的能力,实现重放攻击。为了方便演示,下面以GPS欺骗实验为例,测试HackRF发送信号的功能。

实验:GPS欺骗

我们可以使用GPS-SDR-SIM生成GPS仿真数据,并使用HackRF_transfer命令发送欺骗GPS信号。这个项目的原理是gps-sdr-sim能根据指定的卫星信息文件、坐标信息、采样频率等参数输出二进制的信号文件,将这个二进制文件导入到USRP或者bladeRF之类的无线电射频设备上就可以实现GPS的伪造。

下载并编译 GPS-SDR-SIM。

git clone https://github.com/osqzss/gps-sdr-sim.git
cd gps-sdr-sim
gcc-mp-5 gpssim.c -lm -O3 -o gps-sdr-sim

图片

编译完成后./gps-sdr-sim运行程序,该程序参数详细解析如下。

Usage: gps-sdr-sim [options]
Options:
  -e <gps_nav>     卫星信息文件(必须)
  -u <user_motion> 用户定义的坐标文件 (动态的位置信息)
  -g <nmea_gga>    NMEA坐标文件 (动态的位置信息)
  -l <location>    坐标,维度-经度-海拔,例如:30.286502,120.032669,100
  -t <date,time> 模拟的开始时间 YYYY/MM/DD,hh:mm:ss
  -d <duration>    持续时间 [秒] (最大: 300)
  -o <output>      二进制文件的输出位置 (默认: gpssim.bin)
  -s <frequency>   采样频率 [Hz] (默认: 2600000)
  -b <iq_bits>     二进制文件格式 [1/8/16] (默认: 16)
  -v 更多细节信息

我们在世界地图中随意选取一个坐标与星历数据生成GPS仿真数据

./gps-sdr-sim -e brdc0010.22n -l 95.64899170484503,25.988308575432956 -b 8

图片

电脑连接HackRF后使用HackRF_transfer程序发射GPS数据。

HackRF_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0

图片

注 :其中1575420000指定的是发射的频率,而2600000是采样频率,并且HackRF 会在发送完300秒GPS信号后会自动停止。

我这里测试大概在2分钟后,手机高德地图被欺骗。

图片

总结

在这一小节中,我们初步了解了HackRF的接收和发送信号的功能。并通过指定操作进行了接收和发送,并以GPS欺骗实验为例,对HackRF One的信号发送有了一定程序的理解。在后续的小节中,我们会以GNU Radio相关实验为例深入了解HackRF One的信号接收和发送能力。

图片

物联网安全26

物联网安全 · 目录

上一篇无线网络安全之WiFi Pineapple初探下一篇软件无线电安全之GNU Radio基础 -上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/544546.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue快速入门(二十四)输入停顿再进行响应

注释很详细&#xff0c;直接上代码 上一篇 新增内容 使用侦听器监视数据变化情况使用clearTimeout与定时器实现停顿一段时间再操作内容 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"view…

【王道数据结构笔记】顺序表的动态分配代码分析

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;数据结构 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

docker 安装 nginx + httpd + php-fpm

原文地址&#xff1a;http://www.taoluyuan.com/index.php/archives/30/#2 展示 1.安装 1.1安装docker 1.2安装nginx 1.3安装apache-httpd 1.4安装php-fpm 2.配置nginx反向代理 httpdphp-fmp 1.安装 1.1安装docker 移除旧的版本&#xff1a; sudo yum remove docker 安装…

redis-plus-plus的安装与使用

本文参考自 redis-plus-plus 官方文档 一、安装 因为redis-plus-plus是基于hiredis封装的&#xff0c;所以需要先安装hiredis&#xff1b; 第一步&#xff1a;安装hiredis # 使用git下载源代码 git clone https://github.com/redis/hiredis.git # 进入源代码主目录 cd hired…

ChatGPT在线网页版

ChatGPT镜像 今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用ChatGPT吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像…

LangChain LangServe 学习笔记

LangChain LangServe 学习笔记 0. 引言1. LangServe 概述2. 特性3. 限制4. 安装5. 示例应用程序6. OpenAPI文档7. Python SDK 客户端8. Playground9. 聊天可运行页面 0. 引言 使用 LangServe 可以立即将您的LLM应用程序变成 API 服务器。 LangServe 使用 FastAPI 构建&#x…

5. Mysql的binlog介绍

参考&#xff1a;InnoDB学习&#xff08;三&#xff09;之BinLog 1. BinLog介绍 BinLog又称为二进制日志&#xff0c;是MySQL服务层的数据日志&#xff0c;MySQL所有的存储引擎都支持BinLog。 BinLog记录了MySQL中的数据更新和可能导致数据更新的事件&#xff0c;可以用于主从…

大数据深度学习:基于Tensorflow深度学习卷积神经网络CNN算法垃圾分类识别系统

文章目录 大数据深度学习&#xff1a;基于Tensorflow深度学习卷积神经网络CNN算法垃圾分类识别系统一、项目概述二、深度学习卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;简称CNN&#xff09;三、部分数据库架构四、系统实现系统模型部分核心代码模型训…

【C++】模板初阶——泛型编程、函数模板、类模板

1. 泛型编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, double& right) {double temp left;left right;right temp; } void Swap(char& left…

双向链表的实现(详解)

目录 前言初始化双向链表的结构为双向链表的节点开辟空间头插尾插打印链表尾删头删查找指定位置之后的插入删除pos节点销毁双向链表 前言 链表的分类&#xff1a; 带头 不带头 单向 双向 循环 不循环 一共有 (2 * 2 * 2) 种链表 带头指的是&#xff1a;带有哨兵位节点 哨兵位&a…

关于部署ELK和EFLK的相关知识

文章目录 一、ELK日志分析系统1、ELK简介1.2 ElasticSearch1.3 Logstash1.4 Kibana&#xff08;展示数据可视化界面&#xff09;1.5 Filebeat 2、使用ELK的原因3、完整日志系统的基本特征4、ELK的工作原理 二、部署ELK日志分析系统1、服务器配置2、关闭防火墙3、ELK ElasticSea…

个人笔记目录

目录 一、lora 微调 alpaca 笔记 二、全量微调 Llama2-7b笔记 三、Huggingface trainer 与 from_pretrained简单介绍&#xff08;笔记&#xff09; 四、vscode调试launch.json常用格式 五、huggingface generate函数简介 六、Trl: llama2-7b-hf使用QLora 4bit量化后ds zer…

自动化收集Unity版本更新日志

自动化收集Unity版本更新日志 &#x1f365;功能介绍&#x1f96a;食用手册填写配置开始搜集 &#x1f368;数据展示 &#x1f365;功能介绍 &#x1f4a1;获取指定年份中所有的Unity版本更新日志。 &#x1f4a1;根据指定字符串过滤。 &#x1f4a1;.收集后自动保存成markdow…

Redis队列与Stream

Redis队列与Stream、Redis 6多线程详解 Redis队列与StreamStream总述常用操作命令生产端消费端单消费者消费组消息消费 Redis队列几种实现的总结基于List的 LPUSHBRPOP 的实现基于Sorted-Set的实现PUB/SUB&#xff0c;订阅/发布模式基于Stream类型的实现与Java的集成消息队列问…

OpenHarmony实战开发-FaultLoggerd组件。

简介 Faultloggerd部件是OpenHarmony中C/C运行时崩溃临时日志的生成及管理模块。面向基于 Rust 开发的部件&#xff0c;Faultloggerd 提供了Rust Panic故障日志生成能力。系统开发者可以在预设的路径下找到故障日志&#xff0c;定位相关问题。 架构 Native InnerKits 接口Sig…

向量 | vector;标量 | scalar;矩阵;张量

目录 什么是标量 什么是向量? 向量的3种表达方式 向量的矩阵表示 什么是矩阵 什么是张量 什么是标量 标量只有大小概念,没有方向的概念。通过一个具体的数值就能表达完整。 比如:重量、温度、长度、提及、时间、热量等都数据标量。

绝地求生:杜卡迪“PANIGALE V4 S”摩托车 最全六色测评 游戏内效果展示

PUBG最新联名的杜卡迪摩托车大家都抽到或者换到心仪的颜色了吗 或许有人还在纠结换什么颜色 那么今天给大家带来全网最全颜色测评供大家参考 看看你喜欢哪个吧~ 极速金 2500代币 叛逆玫瑰 2500代币 暮光粉 2500代币 翡翠绿 2500代币 杜卡迪红 1500代币 纯净黑 1500代币 那本期测…

Java开发从入门到精通(二十):Java的面向对象编程OOP:Stream流

Java大数据开发和安全开发 &#xff08;一&#xff09;Java的新特性&#xff1a;Stream流1.1 什么是Stream?1.2 Stream流的使用步骤1.3 获取Stream流1.4 Stream流常见的中间方法1.5 Stream流常见的终结方法 &#xff08;一&#xff09;Java的新特性&#xff1a;Stream流 1.1 …

GNU Radio创建Zadoff-Chu序列C++ OOT块

文章目录 前言一、ZC序列是什么&#xff1f;二、创建自定义的 C OOT 块1、创建 OOT 模块2、创建 OOT 块3、修改 C 文件4、编译及安装 OOT 块 三、测试1、grc 图2、运行结果①、时域图②、时域幅值模图③、IQ 曲线 四、其他五、资源自取 前言 本文实现在 GNU Radio 中创建 Zado…

银河麒麟之PaddleOCR模型部署

一、PaddleOCR简介 PaddleOCR是一个基于飞桨框架开发的开源OCR工具&#xff0c;提供了一系列强大的文本识别功能。PaddleOCR支持多种文本识别任务&#xff0c;包括文字检测、文字识别、文本方向检测等。它具有高效、准确的特点&#xff0c;适用于多种场景下的文本识别需求&…