2.4G无线遥控通讯协议破解—美嘉欣
      
准备做平衡车,缺个遥控器,又不想用手机App。刚好手中有个之前买的遥控直升机,配套的2.4G遥控器看着还行,就打算拿来用在平衡车上。于是就开始了破解。先看图吧!
       
经拆解发现(遥控器端2.4G模块是COB封装的看不出,只能在接收端看芯片型号)为BK2423(和nRF24L01兼容)。于是就可以nRF24L01为接收机接收遥控器数据。当然反过来,也可以用nRF24L01来遥控直升机。
                
查数据手册:(这里用nRF24L01数据手册BK2423多了一个BANK寄存器但是只有初始化时使用、其余通用)(BK2423的数据手册做的不好,毫无美感,看地眼痛心累)
1.     数据格式
2.     兼容模式(如何配置接收端)
3.     SPI时序(看懂时序图)
4.     指令(根据3看4、5)
5.     寄存器(部分)
   
   
抓数据通过遥控器的2.4G模块SPI接口获取配置信息,通讯协议跳频列表。
       工具: Saleae Logic 16 Clone(逻辑分析仪)、
                      Saleae Logic 1.2.10(官方软件)、
                  SigrokPulseView(开源软件)。
(逻辑分析仪这个不是必须的,例:Arduino SPI 来捕获数据,就是在确定引脚的时候会有点麻烦,因为发送端模块的引脚定义不明,但是可以通过单片机新唐N79E814AT20的SPI引脚来查,遥控器的主控用的这个单片机)
下面是硬件和软件的截图:
 
开整:
1.     连线:(做了个接头直接卡在模块的引脚上,共9个引脚)
 
2.     连接逻辑分析仪、打开软件开始捕获、打开遥控器电源、开始配对、配对成功、操控摇杆一段时间、终止。以25MHz的采样率采集15s,九个引脚对应九个通道。(把开机配置、对频、工作跳频的整个过程都采集下来进行后续的分析)
3.     根据SPI时序图找出MOSI、MISO、CS、CLK。

4.     用SPI协议进行分析
5.     查找关键数据:
         形式:指令:写指令(0x20) +寄存器地址(0xXX)
         数据:D7D6D5D4D3D2D1D0
       指令:
                 W_TX_PAYLOAD:                                 =    0xA0
               CRC                      0x20+ 0x00        =    0x20
               AutoAck:                 0x20+ 0x01       =    0x21
               地址宽度 :                0x20 + 0x03       =    0x23
               频道                      0x20 + 0x05       =    0x25
               数据速率               0x20+ 0x06        =    0x26
               数据位宽度:            没有查到,可通过0xA0查找W_TX_PAYLOAD查看入数据的字节数
               发送地址               0x20+ 0x10        =    0x30
       数据:
CRC0x0E : 0000 1110
                1.    开启CRC
                2.    2 Bytes
                3.    PWR_UP
AutoAck: 0x00 : 0000 0000
                1.     关闭所有
地址宽度0x03: 0000 0011
                1.    5 Bytes
数据速率0x05 : 0000 0101
                1.     1Mbps
发送地址0x6D 0x6A 0x73 0x73 0x73 : “mjsss”
                      
              注:右下角的Decoded Protocol 列表中配置命令有多个,如有两个则
                     下一个是BK2423独有的寄存器配置。多个有部分为数据。
频道:经检查发现有两个跳频列表
1.    配对未完成时:(至今也没搞明白这个是干什么的,猜测是对频的部分,但是不清楚对频的方式)
2.    配对成功后:
Cycle列表每个频道发送两次,循环管往复。
发送数据位宽度由W_TX_PAYLOAD:0xA0 发现:16 Bytes
所有必须的信息已经知道了:接下来开始接收数据进行验证!
Arduino 程序 RF24 Lib
这里有两个工程:Arduino & VS2013, 自行下载,篇幅超出范围不能贴出来了
pan.baidu.com/s/1jIBOXJC
由于不清楚对频过程所以可以不进行对频(漏洞:在对频过程中只要摇动任意摇杆就会打断对频直接进入工作状态)
连接硬件:
VCC     —>3.3V
GND    —>GND
CE       —>Pin 7
CSN    —>Pin 8
IRQ    —>Pin 2

  

开始接收数据!
自左向右依次:0:油门、1:左右转、2:前后飞、3:左右飞、4:左右转微调、5:前后飞微调、6:左右飞微调、14:操作模式/灵敏度、15:校验和。(其余数据含义未知)
至此全部工作已经完成。
总的做下来难道并不高,但是锻炼了自己。把它写下来一方面是总结一下自己所做的工作、步骤,另一方面希望能够对大家有所帮助。
附录:我在上文中提到了sigrok这个开源软件,但是并未提及(因为发现越写思路越清晰,就用不到了),这里作为补充。
Sigrok是一个开源跨平台信号分析软件、支持大量设备。它不仅能够提供通讯协议分析、更可以具体到具体的芯片,比如这里用到的nRF24L01+,它以SPI作为通讯接口,那么就可以应用SPI分析数据内容,进而解析其含义。
这里以一个数据传输过程为例:
sigrok支持大量的通讯协议和芯片解码,有需要的可以了解一下。注:暂不支持本文中的设备,折腾了很久,从win7到Ubuntu都试过了就是不行。我是通过官方软件导出为Raw Binary的形式再导入sigrok进行分析的,这个是最快捷的方法。 it依次为0~7Channel,在导入时选择的通道数n是指导入0~(n-1)。另外要填写采样率,单位为Hz。

一个无线遥控通讯协议破解实例相关推荐

  1. html网络通信协议设计,智能家居无线网络通讯协议设计方案

    "智能家居"(smart home)又称智能住宅,它利用先进的计算机技术.嵌入式系统技术.网络通讯技术与传感器技术等,把家中的各种设备有机的结合起来,优化用户生活方式,方便用户管理 ...

  2. modbus通讯协议编程实例_三菱PLC CC-LINK通讯编程实例分享,看完你就会了

    前言:小蓝上次分享了三菱PLC编程指令文章,有一位粉丝说还有标签,FB模块,以太网通讯,MODBUS,TCP通讯这些有的学的.所以今天就给大家带来CC-LINK通讯编程实例.如果看完还是不太明白怎么办 ...

  3. xk3190串口通讯JAVA开发包_常用品牌plc通讯协议汇总学习

    一.美系厂家Rockwell ABRockwell的PLC主要是包括:PLC2.PLC3.PLC5.SLC500.ControlLogix等型号,PLC2和PLC3是早期型号,现在用的比较多的小型PL ...

  4. 游戏开发中网络通讯协议对比

    在网络游戏开发中,通讯协议是一个无法被避免的问题,无论对于客户端开发中还是服务器开发程序猿而言,制定一个合适的通讯协议是很有必要的 游戏联网需求有弱联网游戏,即时互动类游戏 选择通讯协议的时候主要关注 ...

  5. tlv c语言,浅谈自定义通讯协议——TLV | 求索阁

    所谓通讯协议就是指通信双方对数据传送控制的一种约定.约定中包括对数据格式,同步方式,传送速度,传送步骤,纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守,倘若一方不遵守,便会直接导致数 ...

  6. 欧姆龙OMRON PLC之HostLink通讯协议(五)- CP1H以太网FINS/TCP通讯实例

    //写在前面: 自2010年起,本人陆续在新浪博客上面发了几篇OMRON PLC的应用笔记,曾经很疑惑阅读量异常增加,后来发现原来是这里有人转载.现将原文照发在这里,希望能帮到做工控的同行朋友们. C ...

  7. 【科普贴】I2C通讯协议详解——偏软件分析和逻辑分析仪实例分析

    一. I2C标准协议流程 1. I2C协议--规定命令 开始:当SCL为高电平时,SDA从高电平向低电平切换 停止:当SCL为高电平时,SDA从低电平向高电平切换 应答(ACK):发送侧发送完8bit ...

  8. AMF3通讯协议实例

    为什么80%的码农都做不了架构师?>>>    服务端: import java.io.BufferedOutputStream; import java.io.BufferedRe ...

  9. adprw指令通讯案例_实例 | 三菱FX3U485无协议通讯程序详解(含程序)

    三菱FX2N PLC串行通讯指令(FNC 80 RS) 串行通讯指令(FNC 80 RS) 1.指令格式:[RS D0 K8 D10 K8] 发送数据帧起始地址和数目 ↓ 接收数据帧起始地址和数目 2 ...

最新文章

  1. 过度封装的ZeroMQ
  2. python重启程序代码_重启python程序
  3. 作者:冯仕政(1974-),男,中国人民大学社会与人口学院教授、副院长。
  4. 修改了xml要不要重新起服务器,关于设置:Eclipse每次运行项目时都会修改server.xml(运行-在服务器上运行)...
  5. 【ElasticSearch】Es 源码之 RestController 源码解读
  6. 并发编程(进程与线程)
  7. python定时器毫秒_Python实现定时精度可调节的定时器
  8. CodeForces 489A SwapSort (选择排序法)
  9. 计算机网络基础应用课程标准,王建波《计算机网络基础》课程标准.doc
  10. 想把PDF论文里面的图片导出来,有什么办法
  11. java大华监控_JAVA实现大华摄像头WEB方式实时显示视频,H5界面展示方式思路。
  12. 为什么C++开发不需要安装STL库
  13. html设置鼠标指针的形状,CSS - 鼠标指针样式详解(cursor光标样式、自定义指针图片)...
  14. ECCV 2022 | 石溪大学联合小鹏汽车提出先验知识指导的无监督领域自适应
  15. 使用OBS屏幕录制时色彩错误问题解决方案
  16. 对扫描出的图片进行纠偏
  17. java 废弃方法_在Java中使用Deprecated方法或类是错误的吗?
  18. 【华为OD机试真题2023 JAVA】不含101的数
  19. 跑酷游戏-第13届蓝桥杯Scratch国赛真题第3题
  20. 云中漫步,做个公众号方便生活、取悦自己

热门文章

  1. Atitit r2017 r1 doc list on home ntpc.docx
  2. Linux - 自动同步网络时间
  3. 指针--指针的创建和指针的大小
  4. 房间类游戏后台框架(一)—介绍
  5. 自制紧张刺激的滑雪游戏,来一把?
  6. sass详细知识点介绍(环境配置)
  7. jmeter连接数据库查询获取多个参数, 并通过参数化传值,实现jmeter造数
  8. 自己做一个属于自己的论坛html网站
  9. STM32F411 Discovery学习笔记(二)点亮你的第一个LED
  10. php vendor bin phinx,数据库Seeding