telecommunication - 如何在 LoRaWAN 中重新创建加入接受下行链路消息?
问题描述
在过去的几个月里,我正在写我的博士论文,其中涉及以几种方式破坏 LoRaWAN(我正在研究网络安全),我离我的目标还差 1 毫米,但我很困在一件愚蠢的事情上。我正在使用安装了 Microchip RN2483A lora 芯片的 libellium 板,我正在使用它。我已经设法向真实的网关/网络服务器发送任意预制加入请求,现在我终于嗅到了我周围的下行链路数据包(我花了两天时间弄清楚下行链路消息是使用反向极化完成的,我因此而发疯)。我需要的下一步是使用我的主板重新创建一个下行链路数据包,特别是一个加入接受数据包。
在板上使用我的自定义代码,我可以发送自定义加入请求并嗅探相关的加入接受,但是当我使用相同的传输参数发送数据包时,我的板似乎忽略了它。会是什么?
加入请求(由我发送)参数:频率 868.1,无线电功率 15,扩频因子 12,编码率 4/5,带宽 125Khz,crc 模式开启
加入接受接收配置(工作):相同,但使用频率 869,525 和反向极化
所以我假设我只需要使用与从真实网关接收真实数据相同的配置发送假加入接受数据包,但它不起作用。我错过了什么?
注意我可以访问真实且已经接受的加入接受,我可以重置我的板,所以我确定这不是板的完整性或内存问题
编辑:我发现我的电路板无法使用反极性发送帧,所以这是现在的问题,我正在寻找具有这些功能的不同电路板,所以一旦我得到新的我会更新答案设备
解决方案
您不能使用以前捕获的加入接受消息作为对新加入请求的响应。终端设备不会接受它。每个加入请求都包含一个不同的 devnonce,这使得每个加入请求(和加入接受)都是唯一的。破解 LoRaWAN 安全性的唯一方法是从 LoRaWAN 终端设备中读取 AppKey。如果您知道 AppKey 并且可以捕获加入请求,则可以创建有效的加入接受。如果您无法从设备中读出 AppKey(因为它没有存储在其闪存中,而是存储在安全元件上),则您无法创建有效的加入接受。
推荐阅读
- azure-service-fabric - 如何监控 Service Fabric Actor
- spring-cloud - 使用 Spring Cloud Data Flow 2.0.1 时出现 Oracle 11.2 不支持的错误
- jenkins - Jenkins - Bitbucket PR 构建器没有建立正确的分支
- c# - 如何制作一个简单的进度条
- reactjs - Laravel-mix (Reactjs & Laravel) 中组件的未解析图像路径
- c# - IdentityModel:通过 IdentityServer 从访问令牌中获取 UserInfo
- python - 如何在 python blessed/blessings/ncurses 中有 2 个“区域”
- c++ - C++20 range-v3 和 zip_with 视图适配器
- c# - 有没有更好的方法将多个头文件从输入文件映射到类模型?
- python - 如何在 Pytest 执行期间使用标准输出进行调试