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

[求助]固件加解密问题

2019-5-28 18:14
12273

最近遇到了一个加密的固件:Dlink的DIR-878,感觉这方面的资料不是很多。只找到了这一篇:https://www.itcodemonkey.com/article/13631.html。有几点问题想请教各位大佬:

  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/


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-5-30 11:08 被oguri编辑 ,原因:
上传的附件:
收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 1106
活跃值: (76)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
oguri 1 2019-5-30 11:04
2
0
【一点点进展】:上面那个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编辑 ,原因:
雪    币: 5325
活跃值: (206)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
w霸气侧漏 2019-6-22 08:44
3
0
不懂》》》》》》》》》》》》》》》
雪    币: 47
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
沈园 2020-2-12 17:27
4
0
1. 加密的固件是从官网下载的时候或者在线升级获取的固件是加密的,一般来说,设备会首先解密固件,然后替换掉现有的文件系统中的内容,之后运行的时候就是解密后的了
2. 原本之所以定位到cgibin,是因为在线升级的处理逻辑在那个程序里吧
3. 追溯在线升级的逻辑就可以了吧,在线升级过程基本就是先校验再解密再加载的过程,可能是自身程序处理,也可能是调用外部的可执行文件处理
游客
登录 | 注册 方可回帖
返回