首先进入摄像头页面,没有发现ftp、telnet相关选项,拆机,查看电路板,发现UART引脚。
UART定位
UART至少包含4个引脚,分别是公共引脚(接地)GND、电源引脚VCC、输出引脚TXD、输入引脚RXD。一般情况下,四个引脚会并排的排列在一起。即下图这样的情况(其旁边的三根线是方便UART调试手工焊接上去的)。也存在四个引脚没有并排排列在一起或没有GND引脚、并排引脚多于4个等情况,遇到这样的情况则需要深入分析电路走线然后对可疑引脚进行一一尝试来进行定位。
常规UART四个引脚的区分方法
- 定位GND
GND至少和一根外接天线是连接相通的,将万用表的档位调整至蜂鸣档,一只表笔置于天线的焊锡点,一只表笔置于串口,如果发出蜂鸣声,就是GND。 - 定位VCC
给设备通电,VCC是供电引脚,设备的VCC电压始终保持3.3V不会变化,找到它可以帮助我们排除RXD、TXD。
将万用表调整到直流20V上。将一只表笔放在GND上,测试其他哪只引脚电压为3.3V, 该引脚就为VCC。 - 定位TXD
输出引脚TXD,每次有数据传输的时候该引脚电压都会发生变化。什么时候有数据传输呢?根据个人经验路由器开机的时候有启动信息会从这个引脚输出,这时候电压就会发生变化,此引脚即为TXD。 - 定位RXD
输入引脚RXD,每次有外部数据传输到路由器的时候,RXD的电压都都会发生变化。这里其他3个引脚都确定了就剩下一个很容易的确定了RXD。
有时候会遇见有多个引脚的情况,不能确定RXD,有个最笨,但有效的方法,GND和TXD引脚连接到TTL,然后插在电脑上,一个个测试不能确定的引脚(注意不要接入VCC),输入有回显的就是RXD引脚。
连接设备
在确定好UART四个引脚之后,使用TTL转USB连接电脑,通过putty软件(也可以使用其他工具),在Session选项卡,选择Serial,填写COM口(通过设备管理器查看)、填写波特率(一般情况下为115200,如果输出为乱码则说明波特率设置不对,需要修改)。
成功进入目标设备shell后,可看到以下输出信息:
发现有正常的启动信息输出,但输入却没有响应。经几次尝试后无果,遂放弃。
目前怀疑输入没有响应有两种可能:
- 该电路板的UART除了那几个常规引脚外,还需要另外一根引脚,比如之前提取某HK摄像头时,就需要一直按住reset按钮才可以输入,但此电路板并没有发现有reset按钮。
- 厂商在出厂时,将RXD到芯片的电路做了断路处理。
以后有时间再回过头来深入研究。
编程器直接读取flash芯片
目前还有最后一个方法,即使用编程器直接读取flash芯片获取固件,此方法读取过程简单,但有很多注意事项。首先一定要记得在flash芯片周围贴高温胶布!,下图为拆下来的flash芯片。
flash芯片上的字非常小,但通过仔细查看大致可看出关键信息有XMC和25xx128xx。
将拆下来的芯片放入烧录座(注意放置方向,方向不对则无法正确读取),插入编程器,如下所示,之后连接电脑。
打开编程器相应的软件,通过芯片上的丝印选择正确的厂商和名称,各个编程器的功能有所差异,我所使用的编程器可直接厂商选择common,名称选择25X128(通过芯片丝印看出)即可。之后点击读取,等左下角进度条到100%后点击保存,即可获得固件。