首页
社区
课程
招聘
[原创]省钱版----查找 IoT 设备TTL线序__未完待续
2018-8-22 10:14 18302

[原创]省钱版----查找 IoT 设备TTL线序__未完待续

2018-8-22 10:14
18302

省钱版----查找 IoT 设备TTL线序__未完待续

缘由

在IoT固件调试分析的过程中,建议首先在IoT设备的板子上焊接调试线,这是能够提高效率的一步。如果你的能力够高,直接使用热风枪拆下 Flash 存储芯片读取或者写入固件,这是最好不过的了。笔者自然没有那么高的能力水平,只能做些苦力,查找 IoT 设备板子的 TTL 线序,然后苦兮兮地焊接调试。

 

焊接调试的第一步是查找IoT设备的PCB板(下文统一称为板子)的调试接口 ,分别是GND、TX、RX,对应地线、写入、读取。在网上查找如何确定TTL线序方面的资料,发现少之又少,很多牛人抑或是不屑于说这方面的信息,又或者这方面的能力默认大家已经精通,无奈和笔者不会,只有自己默默地分析,经过一些天的分析和总结,也算是小有心得,现总结出来供大家一起交流和探讨。查找TTL线序有很多种方法,最好的方案是使用逻辑分析仪,关键是这东西不是随便就能买到的,而且使用起来也是麻烦,笔者并没有这么一款设备,也是本篇文章的名字的由来,使用最少最省钱的设备来确认TTL的线序。

工具

万用表

万用表是必需的设备,可以用来确认GND地线。万用表可以有很多种选择,几十块钱到上千块钱不等,使用方法大同小异,看个人喜好选择,同时笔者在这里也不再介绍万用表的使用方法,知道如何用来使用查找GND接口就可以啦。

放大镜

放大镜的作用是用来观察 IoT设备板子上的线路,因为PCB板太小,各个焊接的电路用肉眼观察起来非常吃力,有一个放大镜要好用的多。

手电筒

如果你想完全的看清设备电路板,这就需要借助其他的亮度了,例如手电筒、LED灯或者是手机的手电筒功能也是ok的。就我自己来讲比较倾向于手电筒,毕竟LED灯贵,同时手机还要用来接业务电话,不过具体选哪种要看自己的喜好,只要能够达到看清设备电路板目的的都是好工具。

 

万用表、放大镜、手电筒,这些就是查找 IoT 设备TTL线序中用到的全部工具,这里最贵的要数万用表了,是不是很省钱呢?此处应该有掌声。

查找方法

下面就来聊一聊查找 IoT 设备TTL线序的方法。由浅入深,从易到难,这是我们每个人学习的正常梯度。那我今天要跟大家交流的是最简单最快捷地查找到 IoT 设备TTL的线序。
到底是什么方法呢?就是看IoT设备板子上已经给出的TTL 的线序。
什么?你没有遇到过这么好的事情?那是因为你没有见到足够多的板子。

板子已标记线序

烽火光纤猫的某些型号的板子上默认就给出了GND、TX、RX 、VCC等接口,剩下的就是焊接杜邦线啦!
非常的省时省力。

 

fengh__ttl

 

DLink的某款摄像头也对应的标记出了相关的TTL线序,不过调试接口之间空隙太过狭小,焊接的时候容易导致各种粘连,如果VCC和RX粘连在一起,板子就会烧毁,那IoT设备也就废掉了,人生悲剧也不过如此啊!

内事问百度,外事问google

虽然百度有各种黑历史,但就国内的搜索引擎使用频率来说,还是很高的,特别是路由器的魔改、硬改、调试之类的内容资料是非常丰富的,分析TTL线序之前不妨在百度google上查找一下。

 

netgear_ttl

 

热心网友细心的给出了 TTL线序,给他1024个赞。

 

下面就是重头戏了,很多IoT设备并不会给出TTL线序,恨不得把调试接口隐藏的越深越好,也是为了保护设备不会被黑掉,这点也要理解设备厂商。笔者的目标是分析和调试固件,就要与厂商对着干,找到设备厂商隐藏的调试接口。

从0到1

拿到一个IoT设备板子,首先要找到有可能是调试接口的地方,寻找调试接口的依据主要有2点:一:一般而言,IoT设备板子上有规律的并排连续的接口就是调试的接口,有些接口的特征是并排连续的接口突出出来可以直接连接杜邦线的,比如上节图中的调试接口,有些接口的特征是中空的圆点,更有的是已经被焊死的调试接点,这些需要我们仔细观察;二是,调试接口RX和TX都要与CPU芯片进行交互。通过这两点就可以大致地判断出调试接口的位置。
下面就以一款TP_Link的路由器为例分析。

调试接口

如下图所示:

 

wr_2041n

 

按照上述的判断依据,先寻找有规律的连续并排的接口,可以发现上图左下中部和右上都可能是调试的TTL接口。
依据上述第二点进行分析,观察两个红框处的线路走向,我们知道,调试接口RX和TX分别表示接收和发送,这两个接口需要与CPU芯片进行交互,这就要保证与CPU 芯片在电路上相通才行。基于此理论,我们观察一下这两个怀疑是调试接口的地方。

 

第一部分
右上部分线路走向

 

左下部分

 

左下部分线路走向
右上红框部分只有一个接口连接了线路,电路走向并没有连接到 CPU 芯片,而左下红框部分有两个接口有线路连接到 CPU 芯片,基于此基本可以断定左下部分就是调试接口。

查找GND

确定了调试接口之后,接下来就是要找到GND、RX、TX等具体的TTL线序,这时万用表就该登场啦!笔者使用的万用表的型号是UNI-T UT70B,大家测试的时候需要注意根据自己的万用表进行适当的调整。
使用万用表的第一步就是要确保万用表是可以正常工作的,也就是校表。首先将万用表的红黑表线插到相对应的位置,将万用表调整到欧姆档,然后将万用表的红黑表笔对接,如果万用表有数值(很小,可以忽略不计),这就说明万用表可以正常工作。确认万用表可以正常工作后,将万用表调整到通断档位,也叫蜂鸣档,如下图所示,将黑色表笔接到IoT设备板子上的电路接口上固定不动,红色表笔依次在四个接口上进行通断测试,如果万用表有蜂鸣声,我们就可以判断此接口是GND接口。经过笔者测试,图中第二个接口为GND接口。此为第一种方法。

 

通断性
万用表-通断性档位

 

find_gnd
左起第二个为GND

 

第二种方法:路由器通电之后,将万用表调整到电压档位,红黑表笔按照第一种方法进行测量,如果万用表的读数为0 ,由此可以判断接口为GND,如下图所示:
电压确定GND
GND接口的万用表测量电压读数为0

 

第三个方法:同样将万用表调整到电压档位,红黑表笔任选两个接口进行触探,万用表显示有电压值,并且电压为正的时候,红色表笔测量的接口VCC,黑色表笔测量的接口为GND。

确认RX/TX或VCC

“调试接口”章节中已经确认路由器PCB板上左下部分为调试接口,同时RX和TX在上节中有过描述,两个接口必须要跟CPU 芯片有电路上的连通,观察路由器PCB板,四个接口中只有右边两个接口的电路线与CPU 芯片连接,因此可以确认右边两个为通信接口,但具体哪个是RX哪个是TX未知,需要连接TTL调试线在计算机上进行测试确认。
用杜邦线连接路由器PCB板的GND、RX、TX,并与USB2TTL设备一端连接,USB2TTL设备另一端接入计算机,计算机中使用putty或者xshell连接com调试口,路由器通电后查看是否有输出,没有输出的话,调换一下RX和TX接口的杜邦线,如果有相应输出,我们就可以明确与USB2TTL设备RXD相连的接口为TX,与USB2TTL设备TXD相连的接口为RX。
连接规则

 

com口波特率设置常见的为115200,但是具体数值由路由器PCB板型号确定,本次使用的路由器型号为 TP_WR2041n V3,波特率为 117500
com_config

 

TTL线序正确与USB2TTL设备连接之后就可以看到正常的输出:

Connecting to COM5...
Connected.
~
U-Boot 1.1.4 (Jul  4 2014 - 11:13:11)
cus249 - Dragonfly 1.0
DRAM:  16 MB
Top of RAM usable for U-Boot at: 81000000
Reserving 130k for U-Boot at: 80fdc000
Reserving 132k for malloc() at: 80fbb000
Reserving 44 Bytes for Board Info at: 80fbafd4
Reserving 36 Bytes for Global Data at: 80fbafb0
Reserving 128k for boot params() at: 80f9afb0
Stack Pointer at: 80f9af98
Now running in RAM - U-Boot at: 80fdc000
Flash Manuf Id 0xef, DeviceId0 0x40, DeviceId1 0x15
flash size 4MB, sector count = 1024
Flash:  4 MB
Using default environment

In:    serial
Out:   serial
Err:   serial

明确RX、TX接口之后,剩下的最后一个接口自然就可以确定是VCC。
验证一下VCC接口。VCC接口的确认仅需要万用表即可。
VCC的接口电压一般为3.3V或者5V。将万用表调整到电压档位,黑色表笔(Com线)连接GND接口,红色表笔连接VCC接口,如果万用表的读数是3.3V左右,至此可以确认前面的分析判断是准确的。
注意:在分析和调试的过程中VCC接口不要随意接入USB2TTL设备,否则有很大的几率烧坏板子,这是笔者结合实际操作得出的血的教训,说多了都是泪啊 !!!

 

vcc
验证VCC接口

 

至此,接口在无任何提示的情况下,我们仅使用万用表、放大镜、手电筒等“乞丐套装”找到了VCC、GND、RX、TX四个TTL调试接口,确定了TTL线序,是不是很省钱呐?

 

线序

总结

通过上述的分析,可以总结出以下几个要点:

1. IoT设备一般情况下都有调试接口

有的明显,有的隐秘,需要花时间找到,也可以根据经验来判断,没有调试接口我们也要创造调试接口。

2. VCC 是用来连接电源的接口,它在PCB板上电路线一般较粗

3. RX和TX 需要与CPU 和Flash 芯片进行交互,会有连向CPU芯片的电路线一般较细

4. GND 的确认方法有三种:

  1. 万用表蜂鸣档测量有蜂鸣声
  2. 万用表直流电压档测量接口有正值电压
  3. 万用表交流电压档测量接口读数为0

举一反三

现在来测试下学习的成果,拿到一个新的光猫板子来试一试

 

hg260gs

 

纵观整个板子基本可以确认,右下角的五个接口为调试的TTL接口,再来具体分析

 

hg260gs
笔者进行了标号,方便进行分析,如果想要确认结果可以与笔者联系,如果你有更好的判断方法,也可以与笔者联系交流。
扫描下方二维码就可以找到笔者:
二维码

结语&致谢

笔者不是专科出身,有些专业术语描述不够准确,还望读者多多见谅,希望能与大家多多学习探讨。
感谢@马良不厌其烦的指导,确实学到了不少硬件方面的知识。
感谢某位不可说的领导,整篇文档编写花了一天,审核改正花了半天。

参考信息

WR2041N TTL,怎么输入TPL让它停住?

http://www.right.com.cn/forum/thread-131357-1-1.html

如何确定TTL线序

http://www.chinadsl.net/forum.php?mod=viewthread&tid=80747


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞4
打赏
分享
打赏 + 2.00雪花
打赏次数 1 雪花 + 2.00
 
赞赏  junkboy   +2.00 2018/08/22
最新回复 (31)
雪    币: 126
活跃值: (4632)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
wsc 2018-8-22 10:17
2
1
前来顶贴
雪    币: 26435
活跃值: (18467)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2018-8-22 10:30
3
0
感谢分享!
仙果非常的好学,IOT是未来的方向,大家赶紧加强这方面的知识。提升自身的竞争力!
雪    币: 6767
活跃值: (4417)
能力值: (RANK:600 )
在线值:
发帖
回帖
粉丝
gjden 14 2018-8-22 10:38
4
0
仙果也转IOT了,欢迎,感谢分享。关于路由器逆向方法devttys0上的资料挺不错,可参考一下
最后于 2018-8-22 10:44 被gjden编辑 ,原因:
雪    币: 6
活跃值: (980)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lookzo 2018-8-22 11:17
5
0
iot的这种帖子很少,感谢小仙果的分享
雪    币: 612
活跃值: (736)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
zzage 1 2018-8-22 11:34
6
0
感谢分享,某宝上有免拆烧录夹子,不用拆,直接夹上Flash芯片,再用编程器读
最后于 2018-8-22 11:40 被zzage编辑 ,原因:
雪    币: 1385
活跃值: (376)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
晨曦风海 2018-8-22 11:36
7
0
看主芯片型号,找到对应的PDF文档,不就可以确定引脚了吗
雪    币: 1474
活跃值: (955)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
仙果 19 2018-8-22 11:53
8
0
晨曦风海 看主芯片型号,找到对应的PDF文档,不就可以确定引脚了吗
具体如何操作呢?没有尝试过这种方法
雪    币: 1474
活跃值: (955)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
仙果 19 2018-8-22 11:54
9
0
zzage 感谢分享,某宝上有免拆烧录夹子,不用拆,直接夹上Flash芯片,再用编程器读
这属于另外一种方法啦,后面说不定会补充上去
雪    币: 416
活跃值: (152)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
蓝色淡风 2 2018-8-22 12:58
10
0
持续关注中...
雪    币: 7072
活跃值: (3462)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
bxc 6 2018-8-22 13:53
11
0
晨曦风海 看主芯片型号,找到对应的PDF文档,不就可以确定引脚了吗
很多设备用的自家IC,根本不暴露任何数据,这种没法查pdf。比如华为光猫,用的自家海思处理器。
雪    币: 1385
活跃值: (376)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
晨曦风海 2018-8-22 14:08
12
0
bxc 很多设备用的自家IC,根本不暴露任何数据,这种没法查pdf。比如华为光猫,用的自家海思处理器。
学习了,我工作的经验主要是ST,ATMEL,RENESAS之类的
雪    币: 11716
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
junkboy 2018-8-22 14:33
13
0
支持
雪    币: 1385
活跃值: (376)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
晨曦风海 2018-8-22 18:20
14
0
仙果 具体如何操作呢?没有尝试过这种方法
一般芯片都有配PDF文档,有引脚封装说明,楼下bxc大神说的也是一种情况,我还没接触过。再者,还取决于板的封装,有些看不到比如BGA
雪    币: 133
活跃值: (233)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
不追浮云的人 2018-8-22 21:08
15
0
看了之后猜测搜索chipcell光猫板线序: 1:VCC, 2:TX, 3:RX, 4:GND, 5:Undefine


最后于 2018-8-22 21:10 被不追浮云的人编辑 ,原因:
雪    币: 1143
活跃值: (778)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
ycmint 5 2018-8-23 08:54
16
0
晨曦风海 看主芯片型号,找到对应的PDF文档,不就可以确定引脚了吗
这个 确实可以找到,但一般都会被抹掉的吧,这相当于软件的debug 模式。。。。
雪    币: 1385
活跃值: (376)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
晨曦风海 2018-8-23 10:09
17
0
ycmint 这个 确实可以找到,但一般都会被抹掉的吧,这相当于软件的debug 模式。。。。
对,抹掉的情况也有啊,我也遇到好多
雪    币: 6767
活跃值: (4417)
能力值: (RANK:600 )
在线值:
发帖
回帖
粉丝
gjden 14 2018-8-23 10:44
18
5
仙果 这属于另外一种方法啦,后面说不定会补充上去
硬件分析/固件提取:
1.板子上有串口就找串口,没有看板上串口有没被抹掉,有抹掉的可以恢复,有的会把rx/tx线电阻给抹去(有的会把板上的引线切断,这种基本靠看是看不出来的,可以万用电表找出来),这种好办,找到问题恢复就行。
如果连引线也找不到,就找找芯片手册看引脚说明,再看引线,如果芯片手册找不到,就只能凭借经验来看引线,如果经验也无效,那就用第三种终方法。另外需要说的是很多时候即使找到串口也是无法进入设备的,需要路由器设置有boot密码,找不到密码就进不去。这个还需要用dump固件的方法。
2.板子上如果有jtag/swd,找的思路如上,可以用jtagfinder确定调试口,不过现在很多芯片都有熔丝保护或者设置芯片保护位,jtag/swd会无法用,如果这样需要用侧信道攻击,如电压注入法、或者电磁脉冲等方法(有便宜设备买)。
3.对于用flash存储固件的(应该说大部分都是吧),用编程器能解决的,我就不说了,如果编程器无法解决。有2种方法,第一种也是错误电压注入法,国外有人用过,可以完全dump出固件,但是也挺麻烦;第二种,我用过,有效,我们知道FLASH也是有自己的数据读写指令的,而且大部分似乎都差不多,所以,为了能够直接对FLASH进行读写,可以用USB转UART/FIFO IC(比如FT2232H)来做,这样简化工作,省了很多事儿。不过这里读取的数据都是物理数据,里面包含有OOB区域、ECC以及错误块标识,需要自行处理,工作量较大。
4.其他开脑洞的方法就不说了,过于猥琐另类。
最后于 2018-8-23 10:48 被gjden编辑 ,原因: 错别字
雪    币: 279
活跃值: (3053)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
囧囧 2018-8-24 13:22
19
0
赞,thx to share~
雪    币: 1474
活跃值: (955)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
仙果 19 2018-8-24 19:29
20
0
不追浮云的人 看了之后猜测搜索chipcell光猫板线序: 1:VCC, 2:TX, 3:RX, 4:GND, 5:Undefine
线序确实如你所说,非常准确。
chipcell网站的账号特别难申请到,吐槽一下,哈哈
雪    币: 1474
活跃值: (955)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
仙果 19 2018-8-24 19:59
21
0
gjden 仙果 这属于另外一种方法啦,后面说不定会补充上去 硬件分析/固件提取:1.板子上有串口就找串口,没有看板上串口有没被抹掉,有抹掉的可以恢复,有的会把rx ...
非常感谢版主补充,回头我补充上去
雪    币: 249
活跃值: (346)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hackevil 2018-8-26 06:13
22
0
gjden 仙果 这属于另外一种方法啦,后面说不定会补充上去 硬件分析/固件提取:1.板子上有串口就找串口,没有看板上串口有没被抹掉,有抹掉的可以恢复,有的会把rx ...
版主,这信息量真大
雪    币: 43
活跃值: (388)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
malokch 2 2018-8-26 15:19
24
0
你这还不够省钱,还要用到万用表。其实判断很简单,接覆铜的一般是地,粗连线的一般是vcc,两根接细线的是rx或者tx。判断tx也很简单,随便找个led,负极接地,正极接未知的两个点,然后开机,看到灯闪的一般就是tx了。当然像18楼说的,断线抹电阻的,就不好识别了。也有的板子只引三根线,缺的一根一般是vcc,判断方法同上。
雪    币: 229
活跃值: (191)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fighter 2018-8-27 20:44
25
0
都是大神,学习了
游客
登录 | 注册 方可回帖
返回