-
-
[未解决,已结帖]
[求助]stm32芯片程序有xtea加密算法,但是数据排序的问题研究不明白
200.00雪花
-
发表于:
2022-5-18 00:28
5583
-
[未解决,已结帖] [求助]stm32芯片程序有xtea加密算法,但是数据排序的问题研究不明白
200.00雪花
最近在学习stm32逆向分析,找了身边一个实物做测试
我先介绍一下环境:stm32f103rct6->can收发器->can总线->某一个can设备,简称A设备
MCU控制A设备有一个鉴权过程,鉴权通过后才能继续后续的控制指令,但是A设备的开发文档没有写明加密数据的具体过程,只标注了是XTEA加密算法,无奈只能提取MCU的芯片固件bin文件,目前bin文件已经取到手里,也按照论坛各位前辈的教程使用IDA逆向,找到了加密过程,但是加密过程之前有can数据的排序规则,生成的密文又是一个排序规则,无奈基本功不扎实,无法研究明白,特来求助各位前辈
目前已经抓到MCU到A设备的明文、密文,秘钥也已确定,想弄懂具体的加密过程,或者是能够提供出加密过程,我只要那个加密函数,能够吧明文变成密文,经过验证即可(手里有抓到的多组明文密文,可以验证看是否正确)
在学习IDA逆向的过程中,有几个问题弄不明白,烦请前辈指点一二
Q1:由于从芯片提出来的是bin文件,当我在IDA导入bin文件并设置处理器、加载地址后,并找不到加密函数,但是将bin文件使用bin2hex导出hex文件,然后再将hex文件导入到IDA就能发现加密函数,在这个过程中,我一直理解为bin文件是没有基地址,而hex文件是将地址填充进去,但是bin2hex生成过程中也没有需要填写地址,为什么两者有很大的差别,最主要的是,bin文件提取的文件大小是256k,而生出来的hex文件居然达到700多k,此处相当不能理解。。。
Q2:bin文件当中我遍历了所有函数并未发现类似XTEA的加密函数,而hex文件能够一眼确定类似XTEA的加密函数,两者之间是发生了什么变化..
下边贴上从hex文件找到的类似XTEA的加密函数
这个是网上找的C的XTEA加密算法
两者有百分之90的相似之处,所以此处断定数据就是通过它加密生成
MCU和A设备之间的通讯过程是这样
MCU通过#4D1发起鉴权请求,标准8位的数据帧为全00
0x000004D1 数据帧 标准帧 0x08 00 00 00 00 00 00 00 00
A设备会返回#5F5的明文数据帧
0x000005F5 数据帧 标准帧 0x08 10 BE 62 F8 E8 DC 34 46
此时MCU通过排序数据和加密算法计算出密文后继续通过#4D1发送
0x000004D1 数据帧 标准帧 0x08 8C 79 F5 D1 5E A9 46 2D
A设备校验密文,通过后会通过#5F6返回正确数据帧
0x000005F6 数据帧 标准帧 0x08 01 00 00 00 00 00 00 00
(为01时正确,非01时是其他错误码)
再提供另一组的数据帧来验证结果
0x000004D1 数据帧 标准帧 0x08 00 00 00 00 00 00 00 00
0x000005F5 数据帧 标准帧 0x08 0E 77 50 C8 C6 27 E1 BF
0x000004D1 数据帧 标准帧 0x08 36 0A 1A 6E 6E FE F0 84
0x000005F6 数据帧 标准帧 0x08 01 00 00 00 00 00 00 00
秘钥是BA2F96A9
秘钥是MCU注册时需要填写的唯一数据,所以秘钥是百分百这个,具体在MCU内部怎么变化就不得而知了,希望前辈能够找出过程...
发帖是求助各位能够帮助找到正确的加密过程,以及数据的排序方法,bin文件和hex文件会在附件中提供,如果有能力者可以帮助找到,可以付费请求帮助,请发站内信(此处不敢留其他联系方式,怕版主收拾我 - -)
在此谢过观看此贴并留下宝贵意见的所有前辈
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2022-5-21 22:56
被wx_Vae luo编辑
,原因: 附件丢失,已重新上传