随身上网设备把玩小记

一、拆机

之前在家里有台随身上网设备,放置很久没有使用了,索性拆机把玩一番,拆机比较容易,拆完后,可以看到主电路板上有很多金属触点,我们知道一般设备上可能会留有一些调试接口,如UART、JTAG、SWD等接口,这些接口都有着各自的作用。查询设备的CPU型号,找到对应的datasheet,发现其包含UART和JTAG接口。

二、接口识别

UART接口是比较好识别的,对于小型设备一般是TTL电平,通过穷举法,使用普通的万用表就能简单识别,一般识别三个信号即可:

  • GND,信号地,跟电源地连通,最好找;
  • TX,信号输出,开机会有2-3v电平波动,很可能就是TX;
  • RX,信号输入,一般在TX附近。

尝试几次之后,就能找到正确的序列,最终通过TTL转USB线连接之后,开机能够打印一些调试信息,提示如果需要继续操作需要输入密码。这个密码应该是设备厂商自定义的,我们不能通过管理后台网页的密码进入,当然如果运行内存能够“修改”,我们就能通过修改校验函数,达到任意密码登录的效果了,刚好JTAG协议就是用来控制CPU的,所以这个工作理论上是可以完成的。

JTAG接口涉及到的引脚会比较多,但通常最重要的是4个:

  • TCK:测试时钟输入;
  • TMS:测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式;
  • TDI:测试数据输入,数据通过TDI输入JTAG口;
  • TDO:测试数据输出,数据通过TDO从JTAG口输出。

除了以上4个引脚之外,如果要连接JTAG仿真器,一般还需要VTREF(参考电压)、GND、TRST(测试复位,输入引脚,低电平有效)、nSRST(系统复位)。

一般找JTAG引脚排序也是使用穷举法,有大神开源了一款工具JTAGULATOR,它支持UART、JTAG、SWD等接口的线序识别,官方提供电路图和软件,有条件的可以自己制作一套,如果没有可以购买别人做的成品。

通过这个工具,可以很容易就找到接口顺序。

三、绕过密码

找到线序之后,我们通过JLINK仿真器进行JTAG连接,打开J-MEM软件,我们把运行内存dump下来,找到“Password”登录密码有关的所有内容,最终找到一个运行的校验程序,通过爆破法修改对应的流程,我们就能轻易“绕过”密码校验,以下为Ghidra反编译的内容,我们只需要修改checkpass的返回值为0就能正常登录。

这里我们按回车就能正确登录,能够正常输入命令。

进入之后就相当于拿到了权限,可以进行一系列化的定制操作了。

四、参考链接

UART介绍

JTAG接口针脚定义及含义,区分TRST和SRST

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注