简介
无线信号中继一般用于扩展无线信号覆盖范围、增强信号强度。目标是通过接收无线信号并将其重新传输到更远的地方,延长其作用距离。一般来说,无线信号中继时中继器首先接收来自无线信源的信号,增强后的信号被重新发射,覆盖更大的区域。
虽然使用GNU Radio等工具可以轻松实现无线信号中继,但本文打算以玩乐的方式来实现中继方法。
注:本实验仅供娱乐和观赏,因为本实验不未解决延迟问题,也无法保证中继效果,请以非严谨态度和非科学精神继阅读下文。
实验编写的代码已整理到RF-Relay,请勿做非法用途。
RF-Relay 使用 HackRF 设备进行中继无线信号实验的概念验证,无法保证通信效率。
由client-rx
和server-tx
两个程序主题构成。其中client-rx
接收无线信号通过 TCP 发送到server-tx
,server-tx
接收数据通过 HackRF 发送出去。
注意事项
需确保
client-rx
和server-tx
运行在可互通的网络环境,即server-tx
的 IP 和端口可被client-rx
访问,先运行server-tx
后运行server-tx
。运行程序时需要使用
sudo
权限。可以通过修改
client-rx
和server-tx
中的hackrf命令频率参数在不同频率工作。
实验原理
server-tx
server-tx
程序启动后,首先解析命令行参数获取监听的 IP 和端口。创建一个命名管道
/tmp/pipetx.ipc
,用于存储从客户端接收到的数据。启动一个 Goroutine 执行
hackrf_transfer
命令,将命名管道中的数据通过 HackRF 设备发送出去。主线程打开命名管道并监听指定的 IP 和端口。
接受客户端连接,从 TCP 连接读取数据,并写入命名管道。
client-rx
client-rx
程序启动后,首先解析命令行参数获取服务器的 IP 和端口。创建一个命名管道
/tmp/piperx.ipc
,用于存储从 HackRF 接收到的数据。启动一个 Goroutine 执行
hackrf_transfer
命令,从 HackRF 设备接收无线信号,并将数据写入命名管道。主线程打开命名管道并连接到服务器。
从命名管道读取数据,并通过 TCP 发送到服务器。
client-rx
接收到的无线信号通过 TCP 传输到server-tx
,再通过 HackRF 设备重新发送,实现信号的中继。
硬件需求
需要以下硬件设备:
两台PC或虚拟机:一台用于运行
client-rx
,另一台用于运行server-tx
,需要在同一个网络(网络互通即可)中。两台 HackRF One 设备:每台PC或虚拟机各连接一台,用于接收和发送无线信号。
安装步骤
1. 安装基础软件环境
在每台PC或虚拟机上,安装下列基础软件:
Go:需要安装 Go 1.18 或更高版本。
HackRF Tools:可通过以下命令安装:
sudo apt update
sudo apt install hackrf
Git:用于克隆代码仓库
sudo apt install git
2. 克隆代码
代码仓库存放于:
git clone https://github.com/quark9981/RF-Relay.git
3. 验证 HackRF 安装
验证各主机或虚拟机 HackRF 设备是否就绪。
检查 HackRF 工具是否已安装
hackrf_info
若环境就绪,上述命令将分别打印 HackRF 设备的信息。
检查 HackRF 设备连接
lsusb
若环境就绪,上述命令将输出 HackRF 设备接口信息。
4. 启动 RF-Relay
分别构建client-rx
和server-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-rx
和server-tx
会在稍后显示OK输出。
client-rx
中继完成后显示类似如下的输出:
RX OK
server-tx
中继完成后显示类似如下的输出:
TX OK
6. 数据
实验拓扑图如下
实验时将两个HACKRF One工具分别连接至两台虚拟机,运行效果如下图
为确认信号中继是否完成,实验时对433.92MHz频段信号数据中继至315MHz频段(仅用于证明效果,十分不严谨)。
中继效果如下