freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

一个关于无线信号中继的非严谨不科学实验
2024-11-23 15:43:32
所属地 四川省

简介

无线信号中继一般用于扩展无线信号覆盖范围、增强信号强度。目标是通过接收无线信号并将其重新传输到更远的地方,延长其作用距离。一般来说,无线信号中继时中继器首先接收来自无线信源的信号,增强后的信号被重新发射,覆盖更大的区域。
虽然使用GNU Radio等工具可以轻松实现无线信号中继,但本文打算以玩乐的方式来实现中继方法。
注:本实验仅供娱乐和观赏,因为本实验不未解决延迟问题,也无法保证中继效果,请以非严谨态度和非科学精神继阅读下文。
实验编写的代码已整理到RF-Relay,请勿做非法用途。
RF-Relay 使用 HackRF 设备进行中继无线信号实验的概念验证,无法保证通信效率。
client-rxserver-tx两个程序主题构成。其中client-rx接收无线信号通过 TCP 发送到server-txserver-tx接收数据通过 HackRF 发送出去。

注意事项

  • 需确保client-rxserver-tx运行在可互通的网络环境,即server-tx的 IP 和端口可被client-rx访问,先运行server-tx后运行server-tx

  • 运行程序时需要使用sudo权限。

  • 可以通过修改client-rxserver-tx中的hackrf命令频率参数在不同频率工作。

实验原理

server-tx

  1. server-tx程序启动后,首先解析命令行参数获取监听的 IP 和端口。

  2. 创建一个命名管道/tmp/pipetx.ipc,用于存储从客户端接收到的数据。

  3. 启动一个 Goroutine 执行hackrf_transfer命令,将命名管道中的数据通过 HackRF 设备发送出去。

  4. 主线程打开命名管道并监听指定的 IP 和端口。

  5. 接受客户端连接,从 TCP 连接读取数据,并写入命名管道。

client-rx

  1. client-rx程序启动后,首先解析命令行参数获取服务器的 IP 和端口。

  2. 创建一个命名管道/tmp/piperx.ipc,用于存储从 HackRF 接收到的数据。

  3. 启动一个 Goroutine 执行hackrf_transfer命令,从 HackRF 设备接收无线信号,并将数据写入命名管道。

  4. 主线程打开命名管道并连接到服务器。

  5. 从命名管道读取数据,并通过 TCP 发送到服务器。

client-rx接收到的无线信号通过 TCP 传输到server-tx,再通过 HackRF 设备重新发送,实现信号的中继。

硬件需求

需要以下硬件设备:

  1. 两台PC或虚拟机:一台用于运行client-rx,另一台用于运行server-tx,需要在同一个网络(网络互通即可)中。

  2. 两台 HackRF One 设备:每台PC或虚拟机各连接一台,用于接收和发送无线信号。

安装步骤

1. 安装基础软件环境

在每台PC或虚拟机上,安装下列基础软件:

  1. Go:需要安装 Go 1.18 或更高版本。

  2. HackRF Tools:可通过以下命令安装:

sudo apt update
sudo apt install hackrf
  1. Git:用于克隆代码仓库

sudo apt install git

2. 克隆代码

代码仓库存放于:

git clone https://github.com/quark9981/RF-Relay.git

3. 验证 HackRF 安装

验证各主机或虚拟机 HackRF 设备是否就绪。

  1. 检查 HackRF 工具是否已安装

hackrf_info

若环境就绪,上述命令将分别打印 HackRF 设备的信息。

  1. 检查 HackRF 设备连接

lsusb

若环境就绪,上述命令将输出 HackRF 设备接口信息。

4. 启动 RF-Relay

分别构建client-rxserver-tx

构建client-rx

cd client-rx
go build -o client-rx main.go

构建server-tx

cd server-tx
go build -o server-tx main.go

使用

启动server-tx

server-tx所在目录下,运行以下命令:

sudo ./server-tx -i <server-ip> -p <server-port>

例如:

sudo ./server-tx -i 192.168.1.2 -p 8080

启动client-rx

client-rx所在目录下,运行以下命令:

sudo ./client-rx -i <server-ip> -p <server-port>

例如:

sudo ./client-rx -i 192.168.1.2 -p 8080

需保证两台PC在同一个网络中。

5. 测试

如果一切正常,client-rxserver-tx会在稍后显示OK输出。

  • client-rx中继完成后显示类似如下的输出:

RX OK
  • server-tx中继完成后显示类似如下的输出:

TX OK

6. 数据

实验拓扑图如下
拓扑图-1.png

实验时将两个HACKRF One工具分别连接至两台虚拟机,运行效果如下图
f1362bee9e93a8324de93da4c93a51c.png

为确认信号中继是否完成,实验时对433.92MHz频段信号数据中继至315MHz频段(仅用于证明效果,十分不严谨)。
691e8937c712088ee86d063112d8832.jpg
中继效果如下

2q1oh-zfj6n.gif

实验代码存放位置
https://github.com/quark9981/RF-Relay

# 网络安全 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录