首页
社区
课程
招聘
[求助]固件加解密问题
发表于: 2019-5-28 18:14 13264

[求助]固件加解密问题

2019-5-28 18:14
13264

最近遇到了一个加密的固件:Dlink的DIR-878,感觉这方面的资料不是很多。只找到了这一篇:b62K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2A6N6r3y4G2k6r3g2E0L8$3&6C8k6i4W2Q4x3X3g2U0L8$3#2Q4x3V1k6S2M7Y4c8A6j5$3I4W2i4K6u0r3x3e0x3$3x3K6q4Q4x3X3g2Z5N6r3#2D9i4@1f1K6i4K6R3H3i4K6R3J5i4@1f1$3i4K6W2o6i4K6R3&6i4@1f1#2i4K6R3%4i4@1p5H3i4@1f1%4i4K6R3J5i4@1t1&6i4@1f1&6i4K6V1%4i4@1q4q4i4@1f1&6i4@1p5J5i4K6V1^5i4@1f1$3i4K6R3K6i4@1t1K6i4@1f1^5i4@1q4r3i4@1t1%4i4@1f1$3i4K6V1#2i4K6V1&6i4@1f1#2i4K6V1H3i4K6R3@1i4@1f1@1i4@1u0p5i4K6S2p5i4@1f1#2i4@1p5@1i4@1p5%4i4@1f1@1i4@1u0p5i4@1q4o6i4@1g2r3i4@1u0o6i4K6W2m8

  1. 这个固件的加密是从路由器中提取之后加密的,还是说本身运行在路由器中就是加密的,需要自身解密之后才能运行的呢?我看1.12之前没加密的版本,路由器服务启动的时候要运行/etc/rcS,如果这些都是加密的,那究竟是什么时候解密的呢?
  2. 看上面那篇博客提到,在负责对 http 请求进行处理与响应的cgibin中找解密流程,以此类推,DIR-878的http服务是由lighttpd处理的,分析bin/lighthttpd是否正确呢?
  3. 如果dlink的加解密大体相似,按照上面博客的思路在lighttpd里搜索“xor”这个操作码,没有类似的结果,不知道这个解密函数应该怎么找?
 for (j = 0; j < len; j++) {                                                                                               
    buffer[j] ^= (i + j) % 0xFB + 1;                                                                            
    buffer[j] ^= key[(i + j) % kl];
 }

固件链接:ftp://ftp2.dlink.com/PRODUCTS/DIR-878/REVA/


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 2019-5-30 11:08 被oguri编辑 ,原因:
上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 1106
活跃值: (106)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
【一点点进展】:上面那个1.01版本并不是中间版本,它里面并没有解密程序。真正加解密中间版本的是1.04,也就是下载链接里的1.10B05,解压之后里面就是未加密的“middle_fw_unencrypt”中间版本。之所以会错过这个版本,是因为看教程里用binwalk -E 查看文件的熵来初步判断是否是加密或者压缩的数据,但是实际上我对其他没有加密的bin文件进行binwalk -E ,出来的图像也是一条直线,想一想这些bin文件也都是打包后的,可能熵值都比较高。后来是下了878型号的所有固件,每个都直接binwalk,定位到了这个中间版本。又通过在未加密的1.04版本中查找“encrypt”字符串,定位到了bin目录下的imgdecrypt程序。
最后于 2019-5-30 11:04 被oguri编辑 ,原因:
2019-5-30 11:04
0
雪    币: 5325
活跃值: (206)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不懂》》》》》》》》》》》》》》》
2019-6-22 08:44
0
雪    币: 47
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
1. 加密的固件是从官网下载的时候或者在线升级获取的固件是加密的,一般来说,设备会首先解密固件,然后替换掉现有的文件系统中的内容,之后运行的时候就是解密后的了
2. 原本之所以定位到cgibin,是因为在线升级的处理逻辑在那个程序里吧
3. 追溯在线升级的逻辑就可以了吧,在线升级过程基本就是先校验再解密再加载的过程,可能是自身程序处理,也可能是调用外部的可执行文件处理
2020-2-12 17:27
0
游客
登录 | 注册 方可回帖
返回