PaulvHopkins/LoRaWAN-gateway-level-parity-byte-check
GitHub: PaulvHopkins/LoRaWAN-gateway-level-parity-byte-check
基于奇偶校验的 LoRaWAN 位翻转攻击检测系统,在网关层实现轻量级实时完整性验证。
Stars: 0 | Forks: 0
# 使用奇偶校验和网关验证的 LoRaWAN 翻转检测
## 概述
本项目实现了一种使用基于奇偶校验的方法在 LoRaWAN 网络中检测位翻转攻击的轻量级方法。系统使用 SX1276 收发器捕获 LoRa 数据包,附加奇偶校验字节,模拟位翻转攻击,并在网关处执行验证,然后再将数据转发到网络服务器。
其目的是演示一种适用于资源受限 IoT 设备的低开销、实时完整性检查。
## =======
## 系统架构
Dragino LHT65 → SX1276 嗅探器(添加奇偶校验) → SX1276 位翻转器 → RAK 网关 → UDP 转发器 → 网关验证 → ChirpStack → MQTT 订阅者
## 功能
- 使用 SX1276 模块进行数据包嗅探
- XOR 奇偶校验字节的生成与验证
- 位翻转攻击模拟
- 网关端过滤损坏的 payload
- UDP 数据包转发与处理
- 基于 MQTT 的数据监控与解码
## 文件
### `sniffer_parity.py`
捕获 LoRa 数据包,计算 XOR 奇偶校验字节,将其附加到 payload 中,并重传增强后的数据包。
### `bitflipper.py`
接收带有奇偶校验的数据包,并通过在重传前修改 payload 位来模拟位翻转攻击。
### `gateway.py`
充当自定义网关端验证层。执行奇偶校验,剥离有效的奇偶校验字节,并将干净的数据包转发给 ChirpStack。
### `subscriber.py`
订阅 MQTT 上行消息,解码 payload,并提取传感器数据以及传输参数。
## 使用的硬件
- Dragino LHT65 LoRaWAN 传感器
- 2 × SX1276 (Ra-02) LoRa 模块
- Raspberry Pi 4
- RAK WisGate Edge Lite 2 网关
## 技术
- Python
- LoRa / LoRaWAN
- MQTT (ChirpStack)
- UDP Packet Forwarder
- SX127x 库
## 工作原理
1. 传感器发送标准 LoRaWAN payload
2. 嗅探器捕获数据包并附加奇偶校验字节
3. 位翻转器修改 payload 以模拟攻击
4. 网关脚本检查奇偶校验:
- 有效 → 转发
- 无效 → 丢弃
5. 订阅者解码并记录接收到的数据
## 示例检测逻辑
- 奇偶校验值 = 所有 payload 字节的 XOR
- 如果发生奇偶校验不匹配 → 检测到潜在的位翻转
## 目的
本项目通过在网络更早的阶段(网关层)检测 payload 损坏,演示了一种传统完整性机制(例如 MIC、HMAC)的轻量级替代方案。
## 注意事项
- 专为实验和教育目的而设计
- 侧重于检测而非预防
- 在 LoRaWAN 约束条件(低功耗、小 payload)下工作
## 作者
Paul Hopkins
Paul Hopkins
MEng Electronic & Computer Engineering (IoT)
Dublin City University
标签:Bit-Flipping Attack, ChirpStack, Dragino, LoRaWAN, LPWAN, Python, Raspberry Pi, SX1276, UDP转发, 中间人攻击模拟, 低功耗广域网, 内存执行, 奇偶校验, 完整性检测, 嵌入式安全, 数据包重组, 无后门, 物联网安全, 物联网防御, 网关验证, 逆向工具