从LongRange1&2学习lora通信
字数 1151 2025-08-06 08:35:30

LoRa通信技术解析:从LongRange1&2学习LoRa信号处理

前言

本文基于LongRange1&2两道题目,深入解析LoRa通信技术的关键概念和实际应用。通过这两道题目,我们可以学习到LoRa信号处理的全过程,包括参数配置、信号解码以及Mesh网络通信分析。

工具准备

  1. gr-lora工具

    git clone https://github.com/rpp0/gr-lora.git .
    cd docker/
    ./docker_run_grlora.sh
    
  2. 文件处理:将附件放入docker的工作目录下

  3. 再次启动

    ./docker_run_grlora.sh
    gnuradio-companion 
    
  4. 查找工作目录

    docker inspect id //找到docker的工作目录
    

LoRa关键参数解析

1. 中心频率(Center frequency)

  • 滤波器允许或阻止一定的频率通过有一个过渡过程
  • 当输出信号下降3分贝时,称为半功率点或截止频率
  • 带通和带阻滤波器各自有两个半功率点,这两点的中心称为中心频率

2. 信道列表(Channel list)

  • 指LoRa信号的信道范围
  • 参考国际规定的LoRa信道规范标准

3. 带宽(Bandwidth)

  • 能携带的信号大小
  • 直观表现为信号波状图的信号变化范围的宽度
  • 与采样率存在整数倍关系:采样率 > 带宽的2倍

4. 扩频因子(Spreading factor, SF)

  • LoRa采用多个信息码片代表有效负载信息的每个位
  • 扩频信息的发送速度称为符号速率(Rs)
  • 码片速率与标称的Rs比值即为扩频因子(SF)
  • 范围通常为6-12

LongRange1题解

参数配置

  1. 中心频率:约500.500.500mHz(题目给出的500.512.5mHz不在波中心)
  2. 带宽:125kHz(满足整数倍关系)
  3. 扩频因子:在6-12范围内尝试

处理流程

  1. 数据类型转换:将原始数据转换为适合处理的格式
  2. 限流处理:防止进程负载过大
  3. LoRa解码:使用gr_lora插件进行信号解码

示例输出

4e 31 70 57 65 6c 63 6f 6d 65 2c 20 42 65 20 41 20 52 57 43 54 46 65 72 21 20 72 77 63 74 66 7b 47 72 33 33 74 5f 46 72 30 6d 5f 4c 6f 52 34 5f 32 36 39 33 32 38 30 32 66 32 36 61 38 63 39 62 34 35 31 39 65 62 36 66 39 30 30 66 36 37 36 66 7d 83 c3

LongRange2题解

WAV文件处理

当gnuradio的wavfilesource出现问题时,可使用以下Python脚本替代:

from scipy.io import wavfile
import numpy as np

samplerate, data = wavfile.read('./486_375MHz-1MSps-1MHz.wav')
signal = data[:,0] + data[:,1] * 1j
signal = signal.astype(np.complex64)
signal /= (2**32)//2
signal.tofile("./486_375MHz-1MSps-1MHzcomlex64")

参数配置

  1. 采样率: 1MHz
  2. 频段: 375MHz
  3. 带宽: 250kHz
  4. 扩频因子: 11(数据正确)

数据包结构分析

  1. 去除数据包前三个和后两个字节(参考LoRa数据包结构)
  2. 有效载荷示例:
bc4b6cfac4c06dfa6626d2020b08a792b378fb6377d7e054d74f671ec02df18c7d0466c931bb22400fc9ec25c8

Mesh网络分析

  1. 题目附件为meshtastic的dump文件
  2. 加密方式:AES256-CTR
  3. IV构造:ID + 00000000 + NodeID + 00000000
    iv:6626d20200000000c4c06dfa00000000
    
  4. 密钥位置:在flashdump的8000地址附近的分区表中

解密过程

  1. 密文:
ffffffffc4c06dfa8899c2020304a7925001502e35d73ab793c3e9ad6acc9da6a4955bc56b8054e9989d76f5355cf2868b90bffae321d51077be4e1774fc074f63a4c0af6ba38f33a829b0784bdadbcc738b16e930e741c48f4d6c0cab012e5605122dce40eaeb7b
  1. IV:
8899c20200000000c4c06dfa00000000
  1. 密钥:
cef8db8e8e6017fd6dcca21db8a1476d451480acd7f4f9f769a763f528c011f7

总结

通过这两道题目,我们系统学习了:

  1. LoRa通信的基本参数配置和信号处理流程
  2. 使用gr-lora工具进行LoRa信号解码
  3. Mesh网络通信的数据包结构和加密分析
  4. 实际问题的解决方法和调试技巧

这些知识不仅适用于CTF比赛,也对实际LoRa通信系统的分析和调试具有重要参考价值。

LoRa通信技术解析:从LongRange1&2学习LoRa信号处理 前言 本文基于LongRange1&2两道题目,深入解析LoRa通信技术的关键概念和实际应用。通过这两道题目,我们可以学习到LoRa信号处理的全过程,包括参数配置、信号解码以及Mesh网络通信分析。 工具准备 gr-lora工具 : 文件处理 :将附件放入docker的工作目录下 再次启动 : 查找工作目录 : LoRa关键参数解析 1. 中心频率(Center frequency) 滤波器允许或阻止一定的频率通过有一个过渡过程 当输出信号下降3分贝时,称为半功率点或截止频率 带通和带阻滤波器各自有两个半功率点,这两点的中心称为中心频率 2. 信道列表(Channel list) 指LoRa信号的信道范围 参考国际规定的LoRa信道规范标准 3. 带宽(Bandwidth) 能携带的信号大小 直观表现为信号波状图的信号变化范围的宽度 与采样率存在整数倍关系:采样率 > 带宽的2倍 4. 扩频因子(Spreading factor, SF) LoRa采用多个信息码片代表有效负载信息的每个位 扩频信息的发送速度称为符号速率(Rs) 码片速率与标称的Rs比值即为扩频因子(SF) 范围通常为6-12 LongRange1题解 参数配置 中心频率:约500.500.500mHz(题目给出的500.512.5mHz不在波中心) 带宽:125kHz(满足整数倍关系) 扩频因子:在6-12范围内尝试 处理流程 数据类型转换 :将原始数据转换为适合处理的格式 限流处理 :防止进程负载过大 LoRa解码 :使用gr_ lora插件进行信号解码 示例输出 LongRange2题解 WAV文件处理 当gnuradio的wavfilesource出现问题时,可使用以下Python脚本替代: 参数配置 采样率: 1MHz 频段: 375MHz 带宽: 250kHz 扩频因子: 11(数据正确) 数据包结构分析 去除数据包前三个和后两个字节(参考LoRa数据包结构) 有效载荷示例: Mesh网络分析 题目附件为meshtastic的dump文件 加密方式:AES256-CTR IV构造:ID + 00000000 + NodeID + 00000000 密钥位置:在flashdump的8000地址附近的分区表中 解密过程 密文: IV: 密钥: 总结 通过这两道题目,我们系统学习了: LoRa通信的基本参数配置和信号处理流程 使用gr-lora工具进行LoRa信号解码 Mesh网络通信的数据包结构和加密分析 实际问题的解决方法和调试技巧 这些知识不仅适用于CTF比赛,也对实际LoRa通信系统的分析和调试具有重要参考价值。