纽创信安 17小时前
硬件安全研究入门:工具与接口详解
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文详细介绍了硬件安全研究领域所需的各类工具和关键硬件接口。文章从基础的PCB板知识讲起,包括直插元件、表贴元件、过孔等,并阐述了不同封装方式(DIP, SOP, BGA)的特点。文中重点推荐了螺丝刀、撬棒、万用表、稳压电源、电烙铁、热风枪、编程器、USB转串口板、JTAG调试器、逻辑分析仪/示波器等常用工具,并提供了购买关键词和使用技巧。此外,文章深入讲解了UART、JTAG、SWD等硬件接口的定义、查找方法和利用方式,为硬件安全研究者提供了全面的实践指南。文章还提及了Jtagulator、PowerShorter、EMPulser、UartGuarder等专业故障注入设备,并推荐了相关书籍。

🧰 **硬件研究基础与工具箱:** 文章首先阐述了PCB板的基础概念,包括元件类型(直插、表贴)、布线中的过孔作用,以及DIP、SOP、BGA等不同封装方式的特点,为后续深入理解硬件打下基础。随后,详细列举并介绍了进行硬件研究必备的工具,如螺丝刀、撬棒用于拆解,万用表用于测量通断与电压,稳压电源用于稳定供电,电烙铁及周边工具用于焊接,热风枪/加热台用于芯片拆焊,以及测试夹、FlexHolder柔性探针台等辅助设备,并提供了实用的购买关键词和操作建议,强调了工具的实用性和重要性。

🔌 **关键硬件接口解析与利用:** 文章深入剖析了UART、JTAG和SWD三种重要的硬件接口。UART(串口)被详细讲解了其TX/RX定义、查找方法(利用万用表测电压、识别GND)以及连接USB转串口板进行交互的步骤,并强调了电压匹配的重要性以防损坏设备。JTAG和SWD接口则被重点介绍其在固件提取和调试方面的作用,分别阐述了JTAG的TMS, TCK, TDI, TDO引脚以及SWD的SWDIO, SWCLK两根线,并提及了常用的调试器(如JLINK, FT2232)和配合OpenOCD软件的使用。

💡 **高级工具与安全攻防:** 文章还介绍了用于更专业硬件安全研究的先进设备,包括Jtagulator用于探测JTAG、SWD、UART接口,PowerShorter和EMPulser用于电压和电磁故障注入,以及UartGuarder用于协议触发故障注入,这些工具能够帮助研究者绕过固件读保护、密码等安全机制。最后,文章推荐了《The Hardware Hacking Handbook》中文版《硬件设备安全攻防实战》,为读者提供了进一步学习的资源,体现了从基础工具到高级攻防技术的完整进阶路径。

yichen 2025-08-22 10:30 广东

这篇文章在语雀躺了一年多,最近整理整理发出来,文中所有工具都补上了淘宝/闲鱼搜索关键词;关键技术点也

    这篇文章在语雀躺了一年多,最近整理整理发出来,文中所有工具都补上了淘宝/闲鱼搜索关键词;关键技术点也配了 B 站视频二维码,可扫码观看作为补充~

后续更新可关注语雀~

https://www.yuque.com/hxfqg9/iot/sc9fmkwdgihkzm2a

◆◆基础概念◆◆

PCB板    印刷电路板,又称印制电路板,常用英文缩写 PCB(Printed circuit board)在印制电路板出现之前,电子元件之间的互连都是依靠电线直接连接而组成完整的线路。现在面包板只是作为实验工具存在,而印刷电路板在电子工业中已经成了占据绝对统治的地位

    PCB 板上会焊接各种各样的元器件,主要分为直插元件(引脚穿过电路板,从另一侧焊接)和表贴元件(直接贴附在板面,无需穿孔),下图可以直观看出直插元件(左)与表贴元件(右)的区别

    电路板上的布线也是有考量的,在 PCB 布线过程中,如果某条走线受到已有导线的阻挡,无法在同一层直接连通,就需要打过孔将信号引到另一层,从而绕过阻碍,就像修一条立交桥或地下通道,绕过障碍后再回到原来的方向,下图就展示了过孔在 PCB 板中到底是怎么穿过去的

不同的封装方式    封装方式千奇百怪各式各样,但是对于我们最重要的是引脚是否暴露在外面,是否能够在不拆芯片的情况下使用编程器或者飞线提取固件、接入调试接口等,因此简单介绍几种代表性的封装方式

    DIP 双列直插:适合在 PCB 上穿孔焊接,操作方便;封装面积与芯片面积之间的比值较大,体积也较大

    SOP 双列表贴:比同类的 DIP 封装的减少占用的空间,和 DIP 封装有相同插脚引线

    BGA 球栅阵列封装:相比前面的封装方式,采用 BGA 封装的芯片引脚更多,焊点都在芯片下面,焊在 PCB 板上不会暴露引脚,每个焊接点非常小,容易出现虚焊的问题(

丝印    所谓丝印就是印在芯片或 PCB 板上的字符,可以通过丝印知道 PCB 的焊点/引脚 是什么用途;知道设备采用的芯片是什么型号,从而在网上找到芯片数据手册,确定芯片内存布局、引脚定义等信息,例如这颗芯片上写的 STM32F103ZET6

可以通过搜索关键词找到其手册:

一些搜索方法(欢迎补充):

直接谷歌或百度搜索:xxxx datasheet 或 xxxx 芯片手册 等信息

还有一些专门整合各种芯片信息的网站,比如:

半导小芯:https://www.semiee.com

芯查查:https://www.xcc.com

Flash/存储芯片    有些芯片为内置 Flash(例如 STM32),这种需要通过调试接口进行固件提取,有些芯片内部不会存储用户程序,需要外置 Flash(如 ESP32),这种就可以直接通过通用编程器提取(后文会提及)。一般主控芯片内部能存储的数据较少,所以涉及大量数据时仍然要用到外部存储芯片

    一些比较常见的存储芯片长这样,这些引脚之间还比较宽松,你可以自己焊接飞线把引脚引出来,然后使用通用编程器提取固件

    下面这些芯片想要飞线对焊接水平要求就比较高了,可以买个对应引脚的烧录座

◆◆常用工具◆◆

螺丝刀撬棒    研究一个设备不会直接就把 PCB 板暴露在你面前,需要自己动手拆解,螺丝刀、撬棒这类需要备好,可以在 B 站多看看拆解视频,了解一下各种奇怪的连接方式【购买关键词:螺丝刀、撬棒】

万用表    主要用来测量通断、电压

    万用表中有一个档位叫蜂鸣档,在这个档位万用表的两根表笔如果是联通的,万用表就会响,告诉你测试的这两个点是联通的,可以使用这个档位来测试设备的接地(GND):一般设备的金属外壳或者 PCB 板上焊接的模组金属外壳、比较大的焊盘是接地的,将万用表调到蜂鸣档,一只表笔放在这些地方,另一只表笔在焊盘或者芯片引脚按个碰触,如果万用表响了就说明这是接地的

    测量电压时调整至电压档,一般测试设备也就3.3v、5v、12v 这么几种,根据实际情况调整一下档位,使用黑表笔怼在刚才测出来的 GND 那里,红表笔触碰想要测试的焊盘或引脚,看显示的数值即可【购买关键词:万用表】

稳压电源    直流稳压电源,用来对设备进行供电,一般设备供电电压有 3.3V、5V、12V 等,稳压电源可以精准的调节供电电压【购买关键词:稳压电源】

电烙铁及周边    搞硬件难免焊个线、拆个元器件,焊接工具是必备的!包括【购买关键词:电烙铁、焊锡丝、高温海绵、助焊膏、洗板水、吸锡线、镊子】

    烙铁用完了不要直接就放那了,烙铁头氧化了下次用就不沾锡了,用完之后可以给烙铁头沾满锡,这样氧化的就是锡而不是烙铁头,下次用的时候加热后直接把锡蹭掉,烙铁头崭新锃亮!

    关于焊接的学习可以多在 B 站搜一些视频看看,看多了自然也就知道该怎么操作了,淘宝买点练习板或者拆点废旧电路板多练就是了【购买关键词:焊接练习】

贴片元件焊接教程:

热风枪/加热台    拆焊 BGA 芯片必备!热风枪要掌握好风量和温度,别把元器件吹飞了【购买关键词:热风枪】热风枪使用教程:

    加热台适用于那种单面的板子,拆焊芯片巨方便,还能双手操作【购买关键词:加热台】加热台使用教程:

测试夹    可以买些测试夹,直接夹到芯片的引脚上,这样就省得拆焊了,有些时候一个引脚要接多根线也可以把杜邦线的塑料头拆掉,用测试夹夹在杜邦线上达到分线的目的【购买关键词:测试夹/测试钩】

FlexHolder 柔性探针台    可以很方便的使用探针接触焊点/芯片引脚从而避免麻烦的焊接,探针有弹簧可以抵消回弹,每个探头可接两根杜邦线出来,用于连接目标和示波器监视。巨好用!强烈推荐!用过的都说好!【购买关键词:FlexHolder】

编程器    主要用来提取外置 Flash 芯片中的固件,配合上位机软件,对于其已有的芯片来说连接好引脚直接自动读取【购买关键词:编程器、RT809H】

    如果你把 Flash 芯片拆焊下来的话可以直接把芯片放到烧录座中,这种方式比较通用,只需要买不同封装类型芯片的烧录座就可以【购买关键词:烧录座】

    对于 SOP 封装的 Flash 芯片,如果不想拆焊,可使用烧录夹连接编程器

    直接用烧录夹夹住,接到编程器自动识别读取固件即可

    或者用这种直接按下去的烧录针,个人觉得比烧录夹好用,只是有时候 PCB 板上布局比较紧张,可能有其他元器件阻碍【购买关键词:贴片烧录针】

    对于 BGA 封装的 EMMC 芯片就只能用热风枪吹下来,通过烧录座连接编程器提取了,引脚没法在外面接触到,当然大佬可以飞线

USB 转串口板    用于 UART 串口通信,后文对于 UART 有介绍,在遇到不同的电平标准时要使用不同的串口板,可以直接在淘宝搜多合一的板子,一个顶三个【购买关键词:串口模块】

JTAG 调试器    前文说到 Flash/存储芯片 时提到,有些芯片例如 STM32 内置 flash,这种提取固件就需要用到调试器,具体使用看后文调试接口部分,一般来说 jlink、FT2232 这类比较通用,有些芯片需要自家特定的调试器就不提了【购买关键词:jlink、FT2232】

逻辑分析仪/示波器    逻辑分析仪淘宝上有十几块钱的,也能凑合用,主要是拿来抓一下芯片引脚的信号,配合上位机软件可以直接解析对应协议的数据【购买关键词:逻辑分析仪】

    示波器记录的信号比逻辑分析仪更详细,逻辑分析仪只能记录高低电平表示 0 或者 1,示波器记录是完整的波形,但缺点是记录时间比较短而且巨贵!协议解析能力也比逻辑分析仪差远了,主要是看波形及功耗,对芯片进行侧信道和故障注入攻击时必备【购买关键词:示波器】

Jtagulator    探测 JTAG、SWD、UART 接口的工具,把板子上的可疑引脚接到 Jtagulator 上,通过串口操控 Jtagulator 对引脚进行探测,最终确定引脚功能,可以看无序熵增的操作手册:

https://www.bilibili.com/opus/567296584885244651

【购买关键词:Jtagulator】

    但大多时候还是直接找芯片数据手册,分析引脚定义及走线,从而找出 JTAG 引脚比较靠谱,除非板子上有比较明显的一排的 JTAG 座,否则用这个测试感觉还是比较麻烦的,有些 JTAG 引脚可能在一些测试点或者电阻的一侧,你想用这个测试需要自己焊接飞线出来,飞多了浪费时间,飞少了还测不全。比如这个路由器的 JTAG 引脚

https://aggresss.blog.csdn.net/article/details/52335714PowerShorter 电压故障注入设备    PowerShorter 电压短路故障注入设备,在芯片执行关键安全检查时进行电压故障注入可以绕过芯片的固件读保护、密码/口令等访问控制机制PowerShorter 采用 Type-C 供电与交互,具有两路短路引擎,10ns 脉冲控制精度,配合 FlexHolder 使用效果更佳【购买关键词:PowerShorter】

设备 python 库已开源:

https://gitee.com/osr-tech/powershorter

    故障注入相关课程,虽然不是用 PowerShorter 讲解,但原理是相通的:

EMPulser 电磁故障注入设备    EMPulser 可以由 PowerShorter SMA-E1 和 SMA-E2 接口驱动,实现对芯片的电磁脉冲故障注入【购买关键词:EMPulser】

UartGuarder 协议触发器    故障注入(如安全启动)时,会遇到当特定 UART 数据输出后进行故障注入的场景,这时候 UART 协议触发器就比较有用了,可以将触发器的触发引脚接到 PowerShorter 的 Tri 引脚,达到特定 UART 数据触发故障的效果【购买关键词:UartGuarder】

◆◆硬件接口及利用◆◆

UART

    通用异步收发器(UART):一般就叫串口

    接口定义:TX:数据发送、RX:数据接收。因此两个设备的 TX/RX 是对着接的,我的发送 要给 你的接收,如下图

    一般在设备上找到串口后会使用 USB 转 TTL 的小板子接上,在电脑上打开串口工具,就可以与目标进行交互啦

    这里说的 USB 转 TTL 实际上是指 TTL 电平标准,类似的还有 RS232、RS485(具体参考:https://blog.csdn.net/ARM_qiao/article/details/125103127)但我实际测试过程中遇到的大部分都是 TTL 电平,只在车的零部件上遇到过 RS485

    至于找的方法嘛:如果有芯片手册或者引脚丝印直接接对应的引脚就好了,如果没有,看看有没有三四个相邻的过孔/焊点/排针

    先用万用表蜂鸣档找一下是否存在 GND,在目标不供电的情况下,一只表笔放在设备的负极(或设备边缘的金属片/金属屏蔽壳等)另一只表笔依次接触可疑的过孔/焊点/排针,听到万用表蜂鸣声就找到 GND 了

    设备上电,用万用表电压档,测试其他过孔/焊点/排针与 GND 的电压差,因为 TX 可能不断输出信息,所以若电压不断变化则可初步判断为 TX,剩下的可能是 VCC 或 RX(可以直接接上串口模块试试)

    在测试时一定要确认引脚的电压,我曾经就因为没提前测电压,直接将 12V 接到串口模块上,串口模块直接冒烟了,连接串口模块的电脑 USB 也坏了...

    举个实际的例子:很多路由器会直接将 UART 接口丝印标记在 PCB 板上,拿串口模块接到电脑上会发现有些直接就是 Linux 的 root shell,有些则需要密码才能登陆

    大部分单片机芯片里面跑的不是嵌入式 linux,所以也没有 shell 这个概念,可能接上 UART 之后也就看看 log 输出,或者开发者自己留下的一些交互功能

JTAG    在嵌入式开发中主要是用来下载固件和调试代码的,对于安全研究来说一大功能就是提取固件,主要有这么几根线:

引脚

说明

TMS

模式选择

TCK

时钟

TDI

数据输入

TDO

数据输出

    一般需要配套的编程器,大部分芯片可以用 jlink 或者 ft2232 配合 OpenOCD 来进行调试,部分芯片有自己的专属调试器就不提了

SWD    SWD 接口在安全研究中的作用和 JTAG 类似,也是用来提取固件和调试的,他主要用两条线:SWDIO(数据线)和 SWCLK(时钟线),SWD 接口是 ARM 公司定义的,因此基本是 ARM 核的芯片才会支持 SWD

最后推荐本书:《The Hardware Hacking Handbook》

中文版:《硬件设备安全攻防实战》

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

硬件安全 硬件研究 PCB UART JTAG SWD 故障注入 工具 接口 Hardware Security Hardware Research Fault Injection Tools Interfaces
相关文章