Hardware Hacking
JTAG
JTAG允许执行边界扫描。边界扫描分析特定电路,包括每个引脚的嵌入式边界扫描单元和寄存器。
JTAG标准定义了用于进行边界扫描的特定命令,包括以下内容:
BYPASS 允许您在不经过其他芯片的开销的情况下测试特定芯片。
SAMPLE/PRELOAD 在设备处于正常工作模式时,获取进入和离开设备的数据样本。
EXTEST 设置和读取引脚状态。
它还可以支持其他命令,例如:
IDCODE 用于识别设备
INTEST 用于对设备进行内部测试
当您使用类似JTAGulator的工具时,您可能会遇到这些指令。
测试访问端口
边界扫描包括对四线测试访问端口(TAP)的测试,这是一个通用端口,提供了内置在组件中的JTAG测试支持功能的访问。TAP使用以下五个信号:
测试时钟输入(TCK)TCK是定义TAP控制器将多久执行一次操作(换句话说,在状态机中跳转到下一个状态)的时钟。
测试模式选择(TMS)输入TMS控制有限状态机。在每个时钟节拍中,设备的JTAG TAP控制器会检查TMS引脚上的电压。如果电压低于某个阈值,则信号被视为低并解释为0,而如果电压高于某个阈值,则信号被视为高并解释为1。
测试数据输入(TDI)TDI是通过扫描单元将数据发送到芯片的引脚。每个供应商负责定义通过此引脚的通信协议,因为JTAG不定义此协议。
测试数据输出(TDO)TDO是将数据从芯片发送出去的引脚。
测试复位(TRST)输入可选的TRST将有限状态机重置到已知的良好状态。或者,如果TMS保持在1状态五个连续的时钟周期,它会调用一个重置,就像TRST引脚一样,这就是为什么TRST是可选的。
有时您可以在PCB上找到标记这些引脚的情况。在其他情况下,您可能需要找到它们。
识别JTAG引脚
检测JTAG端口的最快但最昂贵的方法是使用JTAGulator,这是专门为此目的创建的设备(尽管它也可以检测UART引脚布局)。
它有24个通道,您可以连接到板上的引脚。然后,它对所有可能的组合执行BF攻击,发送IDCODE和BYPASS边界扫描命令。如果收到响应,它会显示与每个JTAG信号对应的通道。
识别JTAG引脚的一种更便宜但速度较慢的方法是使用加载在兼容Arduino微控制器上的JTAGenum。
使用JTAGenum,您首先需要定义用于枚举的探测设备的引脚。您需要参考设备的引脚图,然后将这些引脚与目标设备上的测试点连接起来。
通过检查PCB以找到其中一个引脚布局是识别JTAG引脚的第三种方法。在某些情况下,PCB可能会方便地提供Tag-Connect接口,这清楚地表明该板有一个JTAG连接器。您可以在https://www.tag-connect.com/info/上查看该接口的外观。此外,检查PCB上芯片组的数据表可能会显示指向JTAG接口的引脚布局图。
SDW
SWD是一种专为ARM设计的调试协议。
SWD接口需要两个引脚:一个双向SWDIO信号,相当于JTAG的TDI和TDO引脚和一个时钟,即SWCLK,相当于JTAG中的TCK。许多设备支持串行线或JTAG调试端口(SWJ-DP),这是一个结合了JTAG和SWD接口的接口,使您可以将SWD或JTAG探针连接到目标设备。
最后更新于