在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等接口,剩下的就是焊接杜邦线啦!
非常的省时省力。
DLink的某款摄像头也对应的标记出了相关的TTL线序,不过调试接口之间空隙太过狭小,焊接的时候容易导致各种粘连,如果VCC和RX粘连在一起,板子就会烧毁,那IoT设备也就废掉了,人生悲剧也不过如此啊!
虽然百度有各种黑历史,但就国内的搜索引擎使用频率来说,还是很高的,特别是路由器的魔改、硬改、调试之类的内容资料是非常丰富的,分析TTL线序之前不妨在百度google上查找一下。
热心网友细心的给出了 TTL线序,给他1024个赞。
下面就是重头戏了,很多IoT设备并不会给出TTL线序,恨不得把调试接口隐藏的越深越好,也是为了保护设备不会被黑掉,这点也要理解设备厂商。笔者的目标是分析和调试固件,就要与厂商对着干,找到设备厂商隐藏的调试接口。
拿到一个IoT设备板子,首先要找到有可能是调试接口的地方,寻找调试接口的依据主要有2点:一:一般而言,IoT设备板子上有规律的并排连续的接口就是调试的接口,有些接口的特征是并排连续的接口突出出来可以直接连接杜邦线的,比如上节图中的调试接口,有些接口的特征是中空的圆点,更有的是已经被焊死的调试接点,这些需要我们仔细观察;二是,调试接口RX和TX都要与CPU芯片进行交互。通过这两点就可以大致地判断出调试接口的位置。
下面就以一款TP_Link的路由器为例分析。
如下图所示:
按照上述的判断依据,先寻找有规律的连续并排的接口,可以发现上图左下中部和右上都可能是调试的TTL接口。
依据上述第二点进行分析,观察两个红框处的线路走向,我们知道,调试接口RX和TX分别表示接收和发送,这两个接口需要与CPU芯片进行交互,这就要保证与CPU 芯片在电路上相通才行。基于此理论,我们观察一下这两个怀疑是调试接口的地方。
右上部分线路走向
左下部分线路走向
右上红框部分只有一个接口连接了线路,电路走向并没有连接到 CPU 芯片,而左下红框部分有两个接口有线路连接到 CPU 芯片,基于此基本可以断定左下部分就是调试接口。
确定了调试接口之后,接下来就是要找到GND、RX、TX等具体的TTL线序,这时万用表就该登场啦!笔者使用的万用表的型号是UNI-T UT70B
,大家测试的时候需要注意根据自己的万用表进行适当的调整。
使用万用表的第一步就是要确保万用表是可以正常工作的,也就是校表。首先将万用表的红黑表线插到相对应的位置,将万用表调整到欧姆档,然后将万用表的红黑表笔对接,如果万用表有数值(很小,可以忽略不计),这就说明万用表可以正常工作。确认万用表可以正常工作后,将万用表调整到通断档位,也叫蜂鸣档,如下图所示,将黑色表笔接到IoT设备板子上的电路接口上固定不动,红色表笔依次在四个接口上进行通断测试,如果万用表有蜂鸣声,我们就可以判断此接口是GND接口。经过笔者测试,图中第二个接口为GND接口。此为第一种方法。
万用表-通断性档位
左起第二个为GND
第二种方法:路由器通电之后,将万用表调整到电压档位,红黑表笔按照第一种方法进行测量,如果万用表的读数为0 ,由此可以判断接口为GND,如下图所示:
GND接口的万用表测量电压读数为0
第三个方法:同样将万用表调整到电压档位,红黑表笔任选两个接口进行触探,万用表显示有电压值,并且电压为正的时候,红色表笔测量的接口VCC,黑色表笔测量的接口为GND。
“调试接口”章节中已经确认路由器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
。
TTL线序正确与USB2TTL设备连接之后就可以看到正常的输出:
明确RX、TX接口之后,剩下的最后一个接口自然就可以确定是VCC。
验证一下VCC接口。VCC接口的确认仅需要万用表即可。
VCC的接口电压一般为3.3V或者5V。将万用表调整到电压档位,黑色表笔(Com线)连接GND接口,红色表笔连接VCC接口,如果万用表的读数是3.3V左右,至此可以确认前面的分析判断是准确的。
注意:在分析和调试的过程中VCC接口不要随意接入USB2TTL设备,否则有很大的几率烧坏板子,这是笔者结合实际操作得出的血的教训,说多了都是泪啊 !!!
验证VCC接口
至此,接口在无任何提示的情况下,我们仅使用万用表、放大镜、手电筒等“乞丐套装”找到了VCC、GND、RX、TX四个TTL调试接口,确定了TTL线序,是不是很省钱呐?
通过上述的分析,可以总结出以下几个要点:
有的明显,有的隐秘,需要花时间找到,也可以根据经验来判断,没有调试接口我们也要创造调试接口。
现在来测试下学习的成果,拿到一个新的光猫板子来试一试
纵观整个板子基本可以确认,右下角的五个接口为调试的TTL接口,再来具体分析
笔者进行了标号,方便进行分析,如果想要确认结果可以与笔者联系,如果你有更好的判断方法,也可以与笔者联系交流。
扫描下方二维码就可以找到笔者:
笔者不是专科出身,有些专业术语描述不够准确,还望读者多多见谅,希望能与大家多多学习探讨。
感谢@马良不厌其烦的指导,确实学到了不少硬件方面的知识。
感谢某位不可说的领导,整篇文档编写花了一天,审核改正花了半天。
http://www.right.com.cn/forum/thread-131357-1-1.html
http://www.chinadsl.net/forum.php?mod=viewthread&tid=80747
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)