使用CH341a编程器提取固件的完整指南

本文详细介绍了如何使用CH341a编程器和1.8v适配器从SPI芯片中提取固件,包括硬件设置、软件配置、芯片识别和实际提取步骤,适合从初学者到有经验的硬件安全研究人员。

使用CH341a编程器提取固件

注意:本博客也将作为即将举行的Wild West Hackin’ Fest会议的一个实验内容。

在最近的一次任务中,我遇到了一个问题:我试图提取固件的SPI芯片是一个1.8v芯片。这本来不是问题,但Shikra和Bus Pirate都只支持3.3v芯片。我考虑创建一个分压器来降低电压,但在简单搜索后,我发现了带有1.8v适配器的CH341a。我决定订购它并选择次日达服务。在使用它成功从1.8v IC中提取固件,而无需将SPI芯片从电路板上移除后,我决定写一篇博客。本博客面向所有读者。对于已经使用其他工具提取过固件的中级或有经验的人来说,可能有些过于逐步,但我也想包括初学者,因为我们都是从某个地方开始的,对吧?

以下是我收到的CH341a套件的图片。我将在博客末尾附上我购买或参考的物品的链接。

CH341a非常容易设置。通常,我使用Linux变体操作系统进行任何测试。然而,根据以往经验,我知道AsProgrammer在Windows PC上运行更好。你只需要驱动程序和AsProgrammer软件,可以在以下链接找到。

在下载软件并安装到我的Windows笔记本电脑上后,是时候选择一个目标了。我翻遍了我的“车库销售”电子产品收藏,找到了一个Netgear WNDR3700路由器,它正合适。打开外壳并对设备芯片进行侦察后,我找到了一个目标SPI芯片。以下是电路板上标识出的SPI芯片的图片。

与任何侦察一样,你会想找到更多信息。因此,我获取了MX25L6445E SPI芯片的数据手册,查看了引脚图,并确定了安装在WNDR3700电路板上的封装类型。

检查数据手册后,我注意到这个特定芯片的VCC为3.3v,电路板上的实际封装类型是16引脚芯片。由于这些信息,我们知道不需要使用1.8v适配器。但似乎我们可能在16引脚芯片封装上遇到问题(注意中间的8个引脚未使用)。CH341a只附带一个8引脚芯片夹和接头。我可以将电线焊接到MX25L6445E的功能引脚上,并将其连接到CH341a的零插入力(ZIF)插座,但由于我可以在未来的任务中使用16引脚芯片夹,我决定购买一个。

快速互联网搜索后,我选择了一个16引脚芯片夹,它已经焊接了接头,用于与CH341a的ZIF插座接口。我将在博客底部放置16引脚芯片夹的链接,以及CH341a编程器的链接。16引脚芯片夹附带的接头包括一个8到16引脚和一个16到16引脚接头。我还用万用表检查了8到16引脚接头,发现它有正确的走线,可以直接与16引脚MX25L6445E芯片和CH341a ZIF插座接口。以下是芯片夹和接头的图片。

连接很容易,因为所有东西都有引脚标记、丝印或某种指示器来参考引脚1。例如,芯片在引脚1的角落有一个凹口标记。芯片夹的一根电缆是红色的,表示引脚1,接口板上有丝印数字表示引脚。最后,CH341a也有丝印,指示24xxx或25xxx芯片类型的引脚1位置。以下是指示引脚和丝印标记的图片描述。

CH341a的丝印有25xx和24xx的指示器,右边有小半圆。这个半圆表示引脚1在半圆旁边,将是右上角。ZIF插座有16个引脚,因此分为两半,右侧用于24xx芯片,左侧用于25xx芯片。在这种情况下,我们将使用ZIF插座的左侧,因为我们的芯片是MX25L6445E芯片。

上图显示了芯片夹电缆连接到接头板,引脚1指示器对齐。

接下来,我们将芯片夹连接到芯片上,红色引脚1指示器与MX25L6445E芯片的引脚1指示器对齐,如下所示。

最后,我们将带有芯片夹电缆的接头安装到CH341a ZIF插座上,如下所示。

现在一切连接完毕,我们可以从MX25L6445E芯片中提取固件。我们将CH341a连接到Windows PC的USB端口,并打开AsProgrammer。首先,我们必须在硬件菜单中选择CH341a作为硬件设备。

重要提示:CH341a为电路板供电,因此你不需要将WNDR3700插入墙上的插座。如果你这样做,可能会损坏你的CH341a。

接下来,你需要选择你将使用的SPI芯片类型。从主菜单中选择IC,然后选择SPI,接着选择供应商和IC。在这种情况下,我们想要MACRONIX MX25L6445E芯片。

一旦芯片被选中,它将在AsProgrammer的顶部菜单屏幕中显示。“Size”、“Page”和“SPI commands”也会自动填充,因此你不应该需要调整它们。你还需要确认SPI单选按钮被选中。以下是AsProgrammer应如何设置的截图。

一切看起来都好后,你将点击带有绿色箭头的框来读取芯片的内容。完成后,你还可以用软盘图标保存它。

这个特定芯片读取内容花了1.5分钟,可以在读取MX25L6445E芯片内容后的以下截图中显示。

现在我们有了提取的固件,我们可以评估它是否有任何有趣的内容。在这种情况下,我使用了“strings”或“strings.exe”(你需要为Windows操作系统下载它)来搜索“password”和“SSID”,如下所示。

如你所见,这个特定路由器看起来在停用和出售之前已被重置,因为它有看起来像默认值的值。

CH341a最好的地方是,与其他硬件(如Bus Pirate和Shikra)相比,我发现我需要将SPI芯片从电路板上移除才能与之交互,因为其他电路会干扰目标SPI芯片。然而,使用CH341a,我只需将芯片夹放在芯片上,就可以提取固件,而无需担心通过脱焊和焊接到分线板来损坏组件。

如果你喜欢这篇博客文章并想亲自动手,请来参加我们的Wild West Hackin’ Fest会议之一。我将提供这个和许多其他实验供与会者使用。

以下是我在博客文章中购买的物品的链接。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计