本文主要是介绍通过USRP B200软件无线电SDR方式解码无人机坐标飞手坐标,实现无人机探测侦测监控,继而实现反制压制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
实验平台
环境 | 详情 |
---|---|
电脑 | 联想 |
系统 | Windows |
gnuradio | gnuradio-3.7.5 |
uhd | UHD-Mirror-release_003_009_002 |
USRP 型号 | USRP-B200-mini |
一、摘要
无人机的应用领域越来越广泛,但是其目前大范围广泛使用给安全、安保和隐私带来了许多风险。例如,攻击方可能会使用无人机进行监视、运输非法物品,或通过侵入机场上方的封闭空域造成经济损失。为了防止恶意使用,无人机制造商采用多种对策来强制安全可靠地使用无人机,例如对速度和高度施加软件限制,或使用地理围栏实施禁飞区。
但对应临时的重要会议,临时的考试会场,重要的安保现场,隆重的体育赛事等则无法使用有效的手段对无人机进行监管侦测。
有没有一种有效的办法可以对无人机的位置可以直接的获取呢?我们研究了目前市场上占用率最高的大疆无人机。大疆无人机和遥控器之间使用了一种类似于WIFI协议的通信技术进行数据回传。既然有数据发出,遥控器能正常接收,那么我们可以用一种无线电接收设备来接收这些数据。
本次使用的无线电接收机是网上购买的 USRP-B200-mini,它是一种通用的无线电接收设备也叫通用软件定义无线电简称SDR。
二、无人机相关原理和基础及数据图传相关技术研究
本次主要研究了目前主流的航拍机器
• DJI Mini 2,RC:RC231
• Mavic Air 2,RC:RC231
• Mavic 2 Pro / Zoom, RC: RC1B
通过研究他们的遥控器发现,通过 C2 链路控制无人机和相机。来自控制器和智能手机的用户输入被发送到收发器,收发器调制信号并通过 OcuSync 协议传输。此外,RC 接收无人机的下行链路数据,其中包括遥测数据和视频馈送,然后将其传递给智能手机。RC231 也使用 S1 SoC 作为收发器,支持最新的 DJI 无人机,如 DJI Mini 2、Mavic Air 2、Mavic Air 2s 和 Mavic 3。这些无人机使用 OcuSync 传输协议进行 C2 和下行链路。选择的OcuSync版本以实际无人机机型为准 - 可以是 OcuSync 2.0、3.0 或 3+。收发器结合了用于无线电通信的发射器和接收器,是无人机的重要组成部分。它通过专有协议或无线标准(如蓝牙或 WiFi)工作。一些最新的 DJI 无人机使用所谓的 Sparrow S1 收发器进行 OcuSync 传输。该收发器是基于 ARM Cortex-M CPU 的专有 SoC,可以在 Mini 2 和 Mavic Air 2 中找到。Mavic Air 2s 和 Mavic 3 使用所谓的 P1(Pigeon)SoC 作为收发器。
三、无人机频谱分析
无人机的图传一般使用WIFI或者LTE协议。目前无人机的图传协议远比WIFI协议和LTE协议距离远,大疆也使用过wifi图传协议,例如精灵系列。后来大疆推出了自有的图传协议Lightbridge,例如精灵4,Lightbridge传输距离超过了wifi,但是最大只能到5km。之后大疆所有机型都采用最先进的Ocusync图传协议,现在已经演进到了Ocusync3.0版本,距离达到10公里以上。
根据分析,很明显Ocusync这些协议使用与 LTE/WIFI 类似的调制技术和参数。逐步对所有后续参数进行逆向工程。下图显示了单个 DroneID 无线电帧的频谱。一个数据包包含九个标志,包括两个 Zadoff-Chu (ZC) 同步标志(列 4 和 6)。其他标志是 OFDM 数据标志,具有 601 个子载波(600 个数据和 1 个 DC),子载波间隔为 15 kHz。载波被填充到2的下一个幂次数,以在下一步中应用快速傅立叶变换 (FFT);这给出了总共 1024 个子载波,总带宽为 15.36 MHz(包括保护频带)。
记录显示数据包每 640 毫秒重复广播一次。注意到一些无人机(Mavic 2 和更早的 OcuSync 无人机)不发送第一个标志(标志 1),这导致更短的帧持续时间为 576 µs。其他参数保持不变。
四、无人机信号解调
将无线电信号转换为比特和字节需要多个步骤:
a) 时间同步以找到 OFDM 标志的边界和频率同步以与承载有效载荷的 OFDM 子载波对齐;
b) 信道估计考虑无线电传输期间的失真;
c) 子载波的解调制(即,将 OFDM 子载波映射到位)。
通过循环前缀的时间同步:Symbol 不能一个接一个直接追加,而是需要在它们之间进行填充以减少标志间干扰。对于 DroneID,标志之间的间隙由循环前缀 (CP) 填充:每个标志末尾的副本附加在相应标志的开头。这能够应用 Schmidl-Cox 时间同步 - 将移动一个标志长度并具有循环前缀宽度的两个块相关联。原理如下图所示。循环前缀长度为72个样本,标志1和9除外,它们具有80个样本的扩展循环前缀。下图中相关性的峰值显示时域中的标志开始。有了关于确切标志开始的信息,可以使用 FFT 将标志转移到频域 - 来自时域的 1024 个样本导致频域中的 1024 个子载波。同步后,循环前缀不再需要并被丢弃。
通过 Zadoff-Chu 序列进行频率偏移校正:发现标志 4 和 6 总是包含根为 600 和 147 的 ZC 序列。将本地生成的 ZC 序列与实际标志相关联,产生任何载波频率偏移,并应用 用于校正的频移。
副载波解调和比特分配:OFDM 副载波是正交相移键控 (QPSK) 调制的。即,载波信号相移四个可能角度之一,以将信号的消息调制为两位。下图显示了四种不同的相移,产生了四个簇(如果绘制为复数表示)及其各自的位表示。同步和纠错越好,分组越清晰。以下解码步骤将显示位分配是否正确。
五、无人机信号解码
前面的步骤将无线电信号转换为比特流,可以对其进行解码以检索实际的 DroneID 有效载荷。通过分析 S1 固件,发现数据 用Gold序列加扰,确定了底层线性反馈移位寄存器 (LFSR) 的种子。此外,它使用与 LTE 规范中相同的子块交织置换表使用turbo编码器进行编码。
使用比特流的解扰和涡轮解码,并将生成的数据映射到如上的DroneID 结构,通过逆向工程在无人机的固件中找到了它。每个数据包中包含的 CRC 校验和与计算相匹配,表明正确恢复了数据。下图显示了成功恢复 DroneID 负载的示例。
解码出来的无人机数据结构
typedef struct {
int index;
uint16_t packet_type;
uint16_t seq_num;
uint16_t state_info;
uint8_t drone_serial_num[17]; // 唯一序列号
double drone_longitude; //无人机经度
double drone_latitude; //无人机纬度
float altitude;
float height; //barometric mearsure
float north_speed;
float east_speed;
float up_speed;
int16_t pitch_angle; // only for ver1
int16_t roll_angle; // only for ver1
int16_t yaw_angle;
uint64_t gpstime; //GPS时间
double pilot_longitude; //飞手经度
double pilot_latitude; //飞手纬度
double home_longitude;//返航点经度
double home_latitude; //返航点纬度
uint8_t product_type;//产品型号数字代号
char product_type_str[32]; //产品型号字符串
uint8_t uuid_length;
uint8_t uuid[18];
uint8_t license[10];
SYSTEMTIME detect_time;
double detect_freq;
double uav_distance;
double pilot_distance;
double home_distance;
}PlaneInfo;
六、测试结果
通过实测 DJI Mini 2,Mavic Air 2, Mavic 2 Pro等型号,都可以实时解码出无人机唯一序列号。无人机精确的经纬度,返航点经纬度和飞手经纬度。
这篇关于通过USRP B200软件无线电SDR方式解码无人机坐标飞手坐标,实现无人机探测侦测监控,继而实现反制压制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!