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转发, 中间人攻击模拟, 低功耗广域网, 内存执行, 奇偶校验, 完整性检测, 嵌入式安全, 数据包重组, 无后门, 物联网安全, 物联网防御, 网关验证, 逆向工具