首页
论坛
课程
招聘
[翻译]HG533路由器分析教程之一:找到硬件调试接口
2016-12-19 16:40 7162

[翻译]HG533路由器分析教程之一:找到硬件调试接口

2016-12-19 16:40
7162
HG533路由器分析教程之找到硬件调试接口
原文作者:Juan Carlos Jiménez
翻译者:光棍节
原文地址:http://jcjc-dev.com/2016/04/08/reversing-huawei-router-1-find-uart/

排版好的下载:
HG533路由器分析教程之找到硬件调试接口.pdf


本系列教程以华为HG533路由器为例,开展的一系列逆向研究,包括查找调试接口,搜寻固件,数据流跟踪,flash内容提取以及对固件的漏洞挖掘等。

图一 华为HG533外观
在设备开发的过程中,串口是开发人员保留在电路板上的供调试或者支持未来可扩展的接口,寻找串口也是硬件逆向工程的最基础的工作之一。
在商业产品中,大部分的UART串口都是4引脚或6引脚的存在于设备中,由于串口的设计并不是为最终的用户服务的,所以通常并没有焊上引针或连接器。
通过查找HG533路由器的主板接口,我们发现了2组未使用的接口,如图二所示的UART1和UART2,其中的排针是后来焊上去的。

图二 主板图片
  由上图二可以知道,设备提供了两套不同的串口用于与不同的集成电路的通信,根据在电路板上的位置以及分析他们的线路连接,我们能够分析出哪一个串口是连接到主集成电路上,从主集成电路上的串口才能获取更多的数据。
1、  识别无用的引脚
在发现了2组接口后,首先要判断其中是否有无用的引脚,最简单的方法就是从背面用强光照射电路板,然后从正面看电路板上引脚环的样子来判断引脚的链接情况。如图三所示。

图三 背面照射电路板图
以图中的中间串口为例,从左至右(1--5)代表的意思是:
1:与某层电路板连接
2:空接口,没有连接任何引线
3:100%的很厚的连接,一般是与电源相关,如Vcc或接地
4:与多层电路板都有连接,很可能是其他的电源引脚,一般情况下,调试接口上的引脚没有必要与4层以上的不同电路板连接。
5:与1相似,与某层电路板连接

2、  焊上排针方便与线连接
由于这些接口的垫圈**而且熔点很高,垫圈会穿透整个电路板,中间有一个小孔,第一个串口,我用排针一起焊上,费了好大的力气才完成,对于第二个串口,我采用一个个的排针穿过垫圈,然后在pcb板的背面焊上焊锡,立刻好看多了。如图四所示。

图四 焊上引针后图片
3、  分析引脚意义
在步骤1中,我们得到了每一个可能串口接口上仅有三个有用的引脚。但是还不清楚是否是使用了串口协议,但是当前的接口数量与位置排列非常像UART串口。
串口的协议,以6引脚为例:
Tx:发送引脚,与调试设备的接收引脚相连
Rx:接收引脚,与调试设备的发送引脚相连
GND:接地,与调试设备的接地相连
Vcc:电源高位,一般为3.3v或者5v,一般不连接
CTS:通常不使用
DTR:通常不使用
所以总结上面步骤一的引脚,得出如下的结论:
1、3个未确定的引脚分别对应着Tx、Rx和GND
2、有两个引脚非常像Vcc和GND
3、Tx一般会被默认接上高电平
4、Rx也会被默认接上高电平,当我们给这个引脚提供低电平的时候,才会变成0

通过上述的分析,我们似乎已经可以使用USB转串口设备进行组合测试,但是不清楚的盲目测试很容易导致设备被烧坏。
所以我们接着利用电压表或者逻辑分析仪来详细的分析引脚,当然用示波器将会得到更好的效果。

图五 示波器测试图
  在用示波器测试引脚后,我们得到了如下的结论,引脚情况如图六所示:

图六 UART接口详细图
1:GND和Vcc分别对应于引脚4和引脚3(此处的翻译与原文有点不一致,判断原文描述应该有点问题),其中电压值为3.3v
2:Tx验证,那个正在发送信息的导致电平值一直变化
3:Rx验证,示波器显示电平值始终不变化

  接下来就是要获取串口通信的波特率,我们可以通过测试常用的几个波特率猜测获取,也可以通过示波器或者逻辑分析仪测试获取。如图七所示,当测试了正确的波特率时,就可以得到可读取的串口通信数据。

图七 逻辑分析仪数据图
4、    与串口通信
在获取了硬件端所有的信息之后,接下来就是研究与设备之间的通信,使用USB转串口工具测试,在实验中,我们同时测试两个串口,其中一个连接到示波器上,如图八所示。

图八 串口连接线图
与电脑相连的串口终端开始打印出有用的信息,如图九所示。

图九 串口通信数据
当然,也可以通过串口进行交互,如:
Please choose operation:
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
 0
当按下4的时候,就可以获取与设备bootloader交互的命令行接口。当按下3的时候,在设备启动完成后,将会得到Welcome to ATP Cli 和登录的提示。默认的账号和密码为admin:admin。登录之后,运行shell命令,将可以以root权限运行Linux命令。如下所示:
-------------------------------
-----Welcome to ATP Cli------
-------------------------------

Login: admin
Password:    #Password is ‘admin'
ATP>shell

BusyBox vv1.9.1 (2013-08-29 11:15:00 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

# ls
var   usr   tmp   sbin  proc  mnt   lib   init  etc   dev   bin
如果擅自修改这个默认的账号名和密码,将会导致设备无法正常的启动。

[公告]请完善个人简历信息,好工作来找你!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (15)
雪    币: 8148
活跃值: 活跃值 (319)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
bxc 活跃值 6 2016-12-19 16:51
2
0
一般这种板子,都是无铅焊锡,焊点的熔点高,不易开孔。
用排针插的话,容易在排针上挂锡,再和焊点粘在一起就不好取下来了。
最好是有专业工具,那种注射器针头就可以(粗一点的最好,不过不要粗于原PCB的过孔),不会轻易挂锡。捅起来也方便。
雪    币: 84
活跃值: 活跃值 (19)
能力值: ( LV8,RANK:135 )
在线值:
发帖
回帖
粉丝
光棍节 活跃值 2 2016-12-19 17:31
3
0
专业,我没有具体测试
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
和弦 活跃值 2016-12-19 17:55
4
0
这个可以有,学习了,谢谢
雪    币: 290
活跃值: 活跃值 (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yy虫子yy 活跃值 2016-12-19 18:56
5
0
解焊直接用吸锡器,简单高效
雪    币: 2549
活跃值: 活跃值 (119)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
option 活跃值 2016-12-20 07:06
6
0
专业人士,业余爱好者学习了!
雪    币: 245
活跃值: 活跃值 (11)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
xdxdxdxd 活跃值 3 2016-12-20 10:09
7
0
手动点赞
雪    币: 233
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
TF工作室 活跃值 2016-12-20 10:25
8
0
bash用的什么
雪    币: 16
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xuha 活跃值 2016-12-21 23:20
9
0
专业点赞
雪    币: 82
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
风亦映寒 活跃值 1 2016-12-27 10:10
10
0
freebuf上有翻译来着
雪    币: 84
活跃值: 活跃值 (19)
能力值: ( LV8,RANK:135 )
在线值:
发帖
回帖
粉丝
光棍节 活跃值 2 2016-12-27 12:47
11
0
好像是的,不过只有第一部分。。。
雪    币: 82
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
风亦映寒 活跃值 1 2016-12-29 10:30
12
0
原来如此,辛苦辛苦
雪    币: 389
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zys章鱼KID烧 活跃值 2017-1-8 14:35
13
0
这种路由器现在没卖的了?
雪    币: 17
活跃值: 活跃值 (14)
能力值: ( LV9,RANK:146 )
在线值:
发帖
回帖
粉丝
wendax 活跃值 2017-2-22 16:56
14
0
hen  qiang  shi  ,  bu  ming  jue  li
雪    币: 7377
活跃值: 活跃值 (97)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
聖blue 活跃值 2017-2-22 17:42
15
0
支持下!!!!
雪    币: 1
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
老烟枪 活跃值 2017-4-21 14:16
16
0
这篇文章应该配合FL064PIF芯片手册会更容易理解,只需要用万用表测量第八引脚和15引脚很容易就能找到串口的发送和接受端了
游客
登录 | 注册 方可回帖
返回