open路由器固件-(open路由器固件升级)

路由设置 次浏览手机阅读
open路由器固件 (open路由器固件升级)


免拆芯片提取固件

最近做项目,用芯片夹对 MCU 免拆提取固件。客户很感兴趣,会后负责人特意找到了我,想让我给他发一些相关资料学习。我以为网上有很多,搜索不是很满意,大多数固件提取方法,即没有基本知识介绍,也没有详细的操作步骤。既然没有自己动手,今天就有这篇文章了。

为什么要免拆提取,直接用热风枪吹下来,用 Flash 读取编程器,不香吗?免拆,一个是懒,吹下来也焊接,动手能力要求更高;第二,像我们在外面做项目,不一定有热风枪电烙铁等,出差不能随声携带(下面是我出差携带的一些设备)。在某些情况下,客户不允许拆卸芯片。

另一点是,大多数信息将如何从? Flash 很少谈论如何从中提取固件 MCU 固件中提取。下面将介绍一些知识,然后演示如何从 Flash 和 MCU 免拆提取固件。


基础知识芯片包装和针脚定义

可以用芯片夹实现 SOP、QFP 封装等针脚外露提取芯片免拆除固件,但对 QFN、BGA 等待封装方式无能无力。

SOP8/16SOP(Small Out-Line Package,小外形封装) 针脚从封装两侧引出海鸥翼(L 字形),一般用于针脚不多的芯片 。SOP8/16 封装的 Flash 路由器、摄像头等 IOT 设备厂比较常见。针脚有8个或16个,一个角有一个小圆点(每个芯片都有一个小圆点,小圆点的位置是第一针脚,然后逆时针排列第二针脚、第三针脚等)号代码一般从24或25开始。SOP8/16 SPI Flash 针脚的一般定义如下。

引脚定义/CS片选DO数据输出/WP写保护GND电源地VCC电源正极/HOLD输入保持/RESET复位CLK时钟DI数据输入

QFPQFP(Plastic Quad Flat Package,方形扁平包装技术)针脚从四个侧面引出海鸥翼(L)型。芯片针脚之间的距离很小,管脚很细,一般采用这种包装形式的大型或超大型集成电路,针脚数量一般在64以上。在小型IOT可作为设备中的主控或协处理器。下图中的芯片是使用的 QFP 封装。

由于针脚数量不固定,没有统一的标准,这种封装一般由厂家自行定义,引脚定义见芯片手册。

GBABGA(Ball Grid Array Package,球栅阵列包装) 封装的 I/O 端子以圆形或柱形焊点的形式分布在包装下,体积小,散热性能和电性能好。由于 I/O 端子在封装下方,需要使用提取固件BGA拆下返修台读取,无法实现免拆提取。BGA 一般用于封装 CPU 大容量存储。此类封装同 QFP 与包装芯片相同,引脚定义需要查看相应的芯片手册。芯片夹

一般使用三种夹子。第一种是SOP8/16脚测夹常用于 SPI 闪存固件提取;二是芯片通用测试夹测试钩,常用于SOP QFP 固件提取或协议分析封装芯片;三是ECU 探针主要用于汽车 ECU 固件提取。

SOP8/16脚测夹

SOP8/16脚夹适用于 SOP8 以及 SOP16 包装芯片。

芯片通用测试夹测试钩

芯片通用测试夹测试钩此类钩子淘宝上有好几种在售。如下图所示,只适用于针脚较少的芯片,如使用 SOP8 包装芯片。钩式为单钩钩取,平式为双钩夹取。这个价格比较便宜。

下面的夹子比较细,可以用在针脚芯片上,比如针脚芯片越来越细。 QFP 封装的 MCU。这种夹子比上面的更贵。

这种夹子比较小,需要连续夹针脚有一定的困难,需要反复尝试。另外,由于没有支撑,刚夹上就可能弹开,这种情况可以使用ECU 探针连接。

ECU 探针

ECU 探针常用于汽车行业,是动力调教等汽车玩家的必备单品。当然,其也可用于固件提取。由于这种支架,只需将探针放在相应的芯片针脚上即可使用。


从 Flash 中提取固件

免拆读取 Flash,一般读取 SOP8 封装的 SPI Flash较多,使用SOP8/16脚测夹更方便。提取所需的软硬件如下。

软件flashrom: flashrom 开源跨平台烧录工具, 芯片支持和编程器支持提供了大量的支持. 用于识别、 读、写、写 验证和擦除各种 Flash 芯片。硬件测试夹:SOP上面详细介绍了8/16脚测夹。编程器:CH341A 编程器/树莓派/CJMCU FT232H等等(任选一)

在这里,我用树莓派做演示,以前用过 CH341A 编程器 提取速度慢,建议使用树莓派或 FT232H 等调试器。

安装flashrom使用 apt 直接安装。sudo apt-get intall flashrom使用树莓派 SPI使用树莓派配置命令rasp_config,依次选择 “Interfacing Options” -> SPI -> YES 开始树莓派 SPI 接口。加载 SPI 树莓派应用于模块 SPI 接口也需要加载 spi_bcm2835 与 spidev 模块。pi@raspberrypi:~ $ sudo modprobe spi_bcm2835 pi@raspberrypi:~ $ sudo modprobe spidev首先找到板上的接线。 Flash,然后找到 Flash 的 datasheet 树莓派的引脚定义,根据 flashrom 连接上面给出的使用说明,如下图所示。

树莓派引脚SPI Flash 引脚25GND24/CS23SCK21DO19DI17VCC 3.3V ( /HOLD, /WP)

一般情况下 SPI Flash 的 VCC、/HOLD、/WP 都需要连接树莓派 3.3V 的 VCC 上。

按上表接线,连接效果图如下。

按上表接线,连接效果图如下。使用编程器、调试器等设备时,接线也类似。

提取接线后,使用 flashrom 提取固件。-p 选项指定了使用树莓派的设备类型 spi 并设置读写速度;-r 选项指定读取后保存的路径;从文件中写回 flash 使用的选项是 -w。固件提取成功并保存在当前目录中 w25q_rasp.bin 文件中了。pi@raspberrypi:~ $ flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=1000 -r w25q_rasp.bin flashrom on Linux 4.19.57-v7 (armv7l) flashrom is free software, get the source code at https://flashrom.org Using clock_gettimefordelay loops (clk_id: 1, resolution: 1ns). Found Winbond flash chip "W25Q128.V" (16384 kB, SPI) on linux_spi. Reading flash...

done
.

从 MCU 中提取固件

从 Flash 在某些情况下,固件不存储在外部 Flash 上,而是在 MCU 的内置 Flash 中。此时需要调试接口(SWD/JTAG等)提取固件,也可态调试。此时需要调试接口(SWD/JTAG等)提取固件,也可态调试。

对 MCU 提取上固件时,首先需要根据芯片手册找到调试接口。在某些情况下,可能会导出调试接口。下图是我研究过的智能设备,从板上引出 SWD 调试接口。

但随着硬件制造商对安全的重视,MCU 导致调试接口的情况越来越少。但在这种情况下,试着直接操作芯片针脚。以下演示使用芯片测试夹 MCU 提取内置固件。提取所需的软硬件如下。

硬件测试夹:芯片通用测试夹测试钩。FT232H:多功能 USB to JTAG SWD/UART/FIFO SPI/I2C 模块。也可以使用 JLink、STLink 等调试器。软件OpenOCD: OpenOCD(Open On-Chip Debugger)它是一种开源片上调试器,旨在为嵌入式设备提供调试、系统编程和边界扫描功能 GDB 配合动态调试。以下以某 IOT 设备 MCU (STM32f030 RCT6) 以测试夹为例 OpenOCD 提取固件。STM32f030 RCT6采用 QFP 64 封装。

OpenOCD 安装使用简单 apt 直接安装。sudo apt-get install openocd 如有特殊需要,也可安装源码。一些芯片制造商是对的 OpenOCD 适配,如新唐 OpenOCD-Nuvoton。OpenOCD 运行需要两个配置文件,一个是调试器配置文件,另一个是目标芯片配置文件。 openocd -f interface/ft232h-module-swd.cfg -f target/stm32f0x.cfg OpenOCD 运行后,使用 telnet 连接本地的 4444 端口与芯片交互。连接后,输入 help 查看不同芯片支持的命令。一般来说,提取固件使用 dump_image命令。GDB 动态调试监听当地 3333 端口,进入GDB 后通过 target remote localhost:3333连接。根据芯片丝印连接 STM32f030 RCT下载相应的芯片手册。在手册中找到调试接口,使用该芯片 SWD 进行调试。STM32f030 RCT6有 64 针脚,对应下图 46 号针脚 SWDIO,49 号针脚 SWCLK,63 号针脚 VSS,7 号针脚 RESET。然后,使用连接杜邦线的测试夹连接SWD 接口,依次 7 号针脚(RESET)、 46 号针脚(SWDIO)、 49 号针脚(SWCLK)、 63 号针脚(VSS) ,如下图所示。

然后,按下图连接 FT232H。注意 AD2(DO) 需要串联一个电阻,然后与 AD1(DI) 合并组成 SWDIO。

最后将 FT232H 通过 USB 接口连接计算机。忘记拍上面的全景图,放张读取其他芯片作为参考。连接效果图与下图相似。

根据芯片手册的内存映射(如上图所示)查看芯片手册,找到固件的位置 dump固件。固件地址在 0x0000 0000 – 0x2000 0000 中,0x0000 0000 – 0x0004 0000 为 Flash Memory/System Memory/SRAW depending on BOOT configuration、0x0804 0000 – 0x0800 0000 为 Flash memory、0x1FFF xx00 – 0x1FFF FFFF 为 System memory等。System Memory: 从系统存储器开始,该模式的程序功能由制造商设置。System Memory: 从系统存储器开始,该模式的程序功能由制造商设置。一般来说,这种启动方法使用较少。系统存储器是芯片内部的一个特定区域,STM32 出厂时,由 ST 在该区域内预置一段时间 BootLoader, 也就是我们常说的 ISP 程序, 这是一块 ROM,出厂 后无


喜欢 ()