UART串口调试
时间:2022-09-11 15:30:00
转载自:https://www.secpulse.com/archives/157847.html
UART串口调试
脉搏文库 TideSec
2021-04-23 4,356
0x00前言
前段时间陆陆续续的对光猫、路由器、摄像头等硬件接口调试进行了学习,但都没有进行记录,所以在此把学习过程简单记录下来,方便后续查阅。
0x01所需工具
1、TTL转USB版 2、万用表 3、TTL转USB版 4、SecureCRT连接工具 5.电烙铁(可选) 6.公母杜邦线 7.路由器、光猫等设备
0x硬件接口简介
例如,硬件接口UART、JTAG、I2C、SPI ,用于设备制造商在设计时的前期调试,生产时的程序烧录,以及诊断测试使用。
保持板上调试端口开启可能造成的危害,如设备与云和移动应用软件的通信协议泄露、信息完整性验证算法泄露、加密过程中使用的密钥泄露,然后使用对这些信息的理解,从而影响更多相同类型的设备。
0x介绍03部分通信接口
通信界面介绍-UART(通用异步接收器发送器)
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,它是一种异步收发传输器,是计算机硬件的一部分。它在串行通信和并行通信之间转换要传输的数据。将并行输入信号转换为串行输出信号的芯片,UART通常集成在其他通信接口的连接上。
UART 允许两个硬件外围设备之间的异步串行通信。它们可以位于同一个电路板上(如微控制器和电机或LED屏幕通信)也可以位于两个不同的设备之间(如设备微控制器和PC通信)。它可以通过串行读取/写入设备。
在许多物联网设备中,板上UART端口保持开放,任何人都可以通过串口连接和访问获得shell,当我们连接到微控制器时,日志输出等。UART RX和TX引脚时,可用于发送和接收串行数据。
UART引脚介绍:
VCC:供电pin,一般是3.3v-5v,正极
GND:接地,负极
RXD:接收数据引脚
TXD:发送数据引脚
通信界面介绍- JTAG(微控制器调试接口)
JTAG属于微控制器调试接口。微控制器在运行过程中使用指定的引脚进行调试,这些引脚与电路板相连。这些引脚(端口)由开发人员和设计人员调试,读写固件和微控制器内部存储器,生产后控制/测试微控制器引脚。由于它为攻击者提供了强大的功能和访问权限,调试端口成为最关键的攻击面之一。除了JTAG还包括cJTAG、SWD。
通信接口介绍- I2C、SPI
I2C
集成电路总线是串行通信总线。内部集成电路是同一板芯片之间的短距离通信协议。I2C连接到微控制器I2C引脚,通常存储数据或代码。典型的攻击包括篡改数据、提取敏感信息、破坏数据等。EEPROM芯片上的静态数据,通过嗅探I2C运行时通信分析可以了解安全隐患。
SPI
串行外设接口也是同一板芯片之间的短距离通信协议。I2C相比,具有更高的吞吐量。
用于与各种外围设备通信。EEPROM芯片也使用SPI。测试测试和分析的方法I2C类似。
0x04芯片识别
不熟悉的芯片可以通过芯片上的型号直接查询数据:
1.https://www.21icsearch.com 2https://www.datasheets.com/zh-cn 3.http://www.datasheetlocator.com/zh 4.https://www.datasheetpdf.com 5.https://www.ifixit.com 6.https://fccid.io
0x05寻找UART串口方法
调试UART在设备之前,首先在板上找到相应的引脚:
如果有明确标记引脚的板,可以直接使用USB转TTL工具按下图连接方式连接:
1、GND引脚对应TTL的GND
2、RXD引脚对应TTL的TXD
3、TXD引脚对应TTL的RXD
若PCB板子上没有明确标识出引脚的设备,还需要通过其它方法确定UART接口:
可以在PCB在板上寻找并排焊点或通孔。一般来说,大约3-5个通孔可以用作UART调试串口的初步定位。
1、定位GND
将万用表扭转到蜂鸣档,将一支表笔抵住电源焊锡点,另一支表笔抵住通孔位置进行测试,发出蜂鸣声的通孔可初步判断为GND。
2、定位VCC
因已知VCC电压为3.3V,将万用表扭到20V上面,放一支表笔GND上面,另一个表笔依次测试其他通孔,看哪个是电压3.3V,发现两个引脚均为3.3V。
因为两只脚同时是3.3V或5V,所以我们用它VCC GND 正负相连短路最终确定VCC引脚,我们连接插线GND,另一个端对两个端对三.5V测试通孔,发现连接到第二个孔时,电源灯熄灭,因此确定通孔为VCC引脚。
3、定位TXD
根据经验,每次启动数据传输时,引脚电压都会发生变化来判断TXD将表笔放入剩余未确定的口中,重启设备,观察电压变化。
4、定位RXD
其他三个引脚定位完成,剩下的就是RXD引脚...
定位后使用USB转TTL工具可以按顺序接入电脑
打开SecureCRT-选择Serial-COM口-波特率可以连接到UART串口
成功连接
0x06问题排查
连接设备时乱码:
一是接线松动,线序接反。
根据上述步骤,可以重新检查通孔位置,检查是否有接触不良,重新焊接引脚。
二是波特率设置不当造成的问题,可以尝试更换常用的波特率。
目前常用的波特率为115200,但根据设备不同,遇到时可根据情况判断合适的波特率。
1.波特率:
每秒传输的二进制位数
国际上规定了标准波特率系列:
110、300、600、1200、1800、2400、4800、9600.4Kbps、19.2Kbps、28.8Kbps、33.Kbps、56Kbps等
2.波特率因子
在波特率指定后,输入移位寄存器/输出移位寄存器在接收时钟/发送时钟控制下,按指定的波特率速度进行移位
连接设备时可读不可输入问题:
SecureCRT , Session Options -> Connection -> Serial -> Flow Control,将默认选中的 RTS/CTS 取消掉即可正常输入。
0x07参考致谢
https://www.jianshu.com/p/36540b602ef6
https://blog.csdn.net/oyaseng/article/details/81207999
https://paper.seebug.org/506/
E
N
D
本文作者:TideSec
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/157847.html