Hotdry.

Article

AutoProber:基于 CNC 与计算机视觉的硬件黑客自动化探测系统

深入解析 GainSec 开源的 AutoProber 项目,探讨如何利用旧摄像头、示波器与 3018 CNC 机床构建安全的自动化硬件探测流水线。

2026-04-16systems

在硬件安全研究与漏洞挖掘领域,对未知芯片进行引脚探测始终是一项耗时且充满风险的工作。传统方式依赖工程师手动操作探针台,配合显微镜逐帧定位目标,不仅效率低下,还存在误触短路、探针偏移等安全隐患。AutoProber 项目的出现改变了这一局面 —— 它将消费级 CNC 机床、USB 显微镜与示波器整合为一套完整的自动化探测栈,由 AI 代理驱动实现从目标发现到引脚探测的全流程闭环。

硬件架构与选型逻辑

AutoProber 的核心硬件栈经过精心选型,兼顾了成本控制与功能完整性。项目采用经典的 3018 风格 CNC 机床作为运动平台,这是一款在爱好者群体中广泛存在的入门级数控设备,价格低廉且社区资源丰富。控制器层面使用 GRBL 固件,通过 USB 串口与上位机通信,这种架构的优势在于软件生态成熟,Python 社区已有大量可直接调用的串口控制库。

视觉系统选用 USB 显微镜作为主要成像设备,配合 mjpg_streamer 进行视频流推送。显微镜的分辨率要求并不苛刻,项目文档中提到的型号具备 1080P 输出能力,足以满足引脚与焊盘特征的识别需求。值得注意的是,显微镜不仅用于目标定位,还需要与探针建立空间映射关系 —— 在探测前必须精确测量显微镜视野中心与探针尖端的 XY 偏移量,这一参数将直接影响后续所有探测坐标的准确性。

安全监控是整个系统设计中最值得关注的环节。项目选用 Siglent SDS1104X-E 四通道示波器作为安全监控的核心设备,通道 4 专门用于监听独立光学限位开关的状态。这种设计理念将安全监控与运动控制解耦 —— 即使 CNC 控制器本身出现故障或软件层面失去响应,示波器仍能独立检测到异常触发并立即通知上位机执行急停。通道 1 则用于实际的探针测量,可捕获目标引脚的电平信号或进行简单的电阻测量。

代理驱动的自动化工作流

AutoProber 的核心创新在于将整个探测流程抽象为代理可执行的工作流序列。操作者只需向代理描述任务目标(如「我们需要分析这块芯片的 SPI 接口引脚分布」),系统即可自主完成后续全部步骤。

工作流的第一阶段是目标发现与建图。代理控制 CNC 将目标 PCB 移动到显微镜视野下,然后按照预设的网格策略逐帧采集图像。每帧图像采集时,示波器通道 4 处于持续监控状态,任何异常触发都会立即暂停运动并进入安全停止状态。完成所有帧采集后,系统利用图像拼接算法生成完整的目标俯视图,并使用计算机视觉模型自动标注焊盘、走线、元件丝印等特征。这一阶段生成的标注地图将作为后续探测的基准参考。

第二阶段是探测目标筛选与确认。代理根据建图结果生成若干探测候选点,这些候选点可能是电源引脚、地引脚、数据信号线等。生成的候选点会推送到 Web 控制面板供人工审核,操作者可以 approve 或 deny 特定点位。这一设计体现了人机协同的安全理念 —— 即使代理的识别算法出现误判,最终的探测决策仍由具备领域知识的人员做出。

第三阶段是精确探测执行。通过审核的探测点位需要经历坐标转换才能执行 —— 原始图像坐标需要减去之前测定的显微镜 - 探针偏移量,转换为 CNC 机床的机械坐标系坐标。探测执行前,系统还会再次验证通道 4 的基线状态,确保运动路径上不存在意外的限位触发。探针接触目标后,通道 1 捕获的信号会上传至控制面板并记录到日志中,形成可追溯的测量数据。

安全模型的设计哲学

将 CNC 机床用于精密电子测量,安全设计是首要考量。AutoProber 的安全模型建立在几个核心原则之上,这些原则看似保守,实则必要。

首先,GRBL 固件内置的探针引脚不被信任。项目明确指出 Pn:P 探针信号不能作为安全停止的可靠依据,这是因为探针信号可能因接触不良、电磁干扰或控制器固件缺陷而产生误触发。因此,系统依赖独立的光学限位开关和示波器通道 4 来提供真正的安全监控能力。

其次,任何异常触发都意味着立即进入不可自动恢复的停止状态。当通道 4 检测到限位触发、电压异常、CNC 报警或任何轴的真实限位信号时,系统会立即执行 feed hold 并进入 STOP 状态。日志会记录触发时刻的电压值、机器状态和触发原因,但不会尝试自动撤回复位。这种设计避免了自动化系统在未知状态下继续运动可能造成的设备损坏或样品破坏。恢复运行必须由操作者人工确认现场安全后手动触发。

第三,示波器通道的采样频率要求不低于 10 赫兹。低于此频率的监控可能导致短脉冲触发被漏检,特别是在高速运动场景下。这一要求对示波器的数据吞吐能力提出了明确指标,Siglent SDS1104X-E 完全满足此需求。

关键配置参数与调试要点

部署 AutoProber 需要关注若干关键配置项,这些参数直接影响系统的可用性与安全性。

在环境配置方面,AUTOPROBER_SCOPE_HOSTAUTOPROBER_SCOPE_PORT 定义了示波器的 SCPI 端点,通常默认端口为 5025。显微镜快照端点 AUTOPROBER_MICROSCOPE_SNAPSHOT_URL 需要与 mjpg_streamer 的配置匹配,典型值为 http://localhost:8080/?action=snapshot。日志路径与运行时根目录的设置需要确保有足够的存储空间用于保存探测图像与测量数据。

探针偏移测量是系统调试的核心步骤。操作者需要先将探针移动到显微镜视野中心,记下机床坐标;然后下探使探针尖端恰好接触一个已知特征点(如 PCB 上的测试焊盘),再次记录坐标。两组坐标的差值即为显微镜 - 探针的 XY 偏移量,必须在后续所有探测任务前完成测量并保存到校准文件中。值得强调的是,校准文件必须在实际运行的机器上生成,不能从其他设备复制 —— 不同机床的几何误差会导致偏移量产生显著偏差。

运行时的 preflight 检查流程不可省略。系统启动时会执行通道 4 基线验证、光学限位开关状态检查、CNC 控制器通信测试等多项自检。任何一项自检失败都会阻止后续运动,必须排查解决后才能继续。

工程化落地的现实考量

AutoProber 作为一套源 available 的实验性系统,其工程化部署仍需考虑若干现实因素。硬件层面,3018 CNC 的定位精度通常在 0.1 毫米量级,对于引脚间距小于 0.5 毫米的 BGA 或 QFN 封装,可能需要考虑更高精度的运动平台。示波器的 LAN 控制需要稳定的网络环境,建议将示波器与控制主机置于同一 VLAN,避免跨路由带来的延迟波动。

软件层面,Web 控制面板基于 Flask 构建,默认运行在端口 5000。项目文档明确警告不要将控制面板暴露到不可信网络 —— 这是一个实验室控制工具,缺乏针对公共互联网场景的安全加固。运行时产生的数据(包括目标图像、测量日志、校准文件)应在任务完成后定期清理,避免敏感信息泄露。

对于希望复现该项目的研究者,项目文档中提供了详细的 BOM 清单,包含具体的型号链接与替代选项建议。入门级配置的硬件成本大约在 1500 元人民币左右,主要支出为 CNC 机床、示波器和显微镜。如果已有相关设备,成本可进一步降低。

小结

AutoProber 代表了一种将消费级硬件与开源软件组合用于专业硬件安全研究的可行路径。它展示的核心价值不在于使用了多么昂贵精密的设备,而在于构建了一套可复现、可扩展的自动化探测工作流。通过将安全监控内嵌到运动控制的每一帧中,项目在提升效率的同时始终将物理安全置于首位。对于硬件安全研究者而言,这套系统提供了一个从手工探测向规模化分析过渡的基础平台,其设计思路值得参考借鉴。

资料来源:GitHub - GainSec/AutoProber

systems