Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
firmware-mod-kit — 自动从 code.google.com/p/firmware-mod-kit 导出 | Kitploit
工具/GitHubGitHub/rampagex/firmware-mod-kit
嵌入式系统安全逆向工程硬件安全固件分析
GitHubrampagex/firmware-mod-kit

firmware-mod-kit

自动从 code.google.com/p/firmware-mod-kit 导出

查看仓库
99620746个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

免责声明

从 googlecode.com/p/firmware-mod-kit 自动导出

固件修改工具包

本工具包是一套脚本和工具,用于提取和重建基于 Linux 的固件映像。

  • 将固件映像提取为其组成部件
  • 用户对固件文件系统或 Web UI(webif)进行所需修改
  • 重建固件
  • 将修改后的固件刷写到设备上并使其变砖(哈哈)

警告:使用本工具包后你的设备将会变砖(也许不会,但最好还是说会)。变砖意味着设备实际上变成了一块无功能的“砖头”。有时无需硬件修改即可恢复。有时需要硬件修改(例如在 PCB 上焊接串行或 JTAG 接头)。有时根本不可行,或者总恢复成本超过设备本身价值。

如果你还没准备好让你的路由器变砖,请不要使用本工具包!

最终用户许可协议:下载或使用本工具包即表示你同意承担使用或滥用固件修改工具包的后果。这些后果包括设备变砖。本工具包的作者已正式警告你。本工具包仅供嵌入式系统软件工程师使用。

固件修改工具包

  • 简介
  • 前提条件
  • 使用工具包
    • 工具包可执行文件
    • 固件工作目录
    • 提取固件
    • 重建固件
    • 修改 DD-WRT 网页
    • 恢复到原厂固件
    • 示例
    • Linksys 固件
    • 工具/实用程序
  • 其他链接

简介

固件修改工具包允许轻松解构和重建各种嵌入式设备的固件映像。虽然它主要针对基于 Linux 的路由器,但应兼容大多数使用常见固件格式和文件系统(如 TRX/uImage 和 SquashFS/CramFS)的固件。

前提条件

要使用固件修改工具包,你需要一个 Subversion 客户端、标准的 Linux 开发工具(gcc、make 等)、python-magic 模块以及 zlib 和 lzma 开发包。如果你运行的是使用 apt-get 的 Linux 发行版,例如 Ubuntu 或 Debian,请使用:

对于 Ubuntu 18.04 及更早版本:

root@kitploit:~
sudo apt-get install git build-essential zlib1g-dev liblzma-dev python-magic autoconf

对于 Ubuntu 20.04 及更新版本:

root@kitploit:~
sudo apt-get install git build-essential zlib1g-dev liblzma-dev python3-magic autoconf python-is-python3

对于 RedHat:

root@kitploit:~
yum groupinstall "Development Tools"
yum install git zlib1g-dev xz-devel python-magic zlib-devel util-linux

对于 Arch Linux:

有一个 AUR 包 https://aur.archlinux.org/packages/firmware-mod-kit/

对于其他发行版,你应该使用发行版的包管理器安装等效的包。

root@kitploit:~
git clone https://github.com/rampageX/firmware-mod-kit.git
cd firmware-mod-kit/src
make

Binwalk 2.1.1

root@kitploit:~
[回到 firmware-mod-kit 目录]
cd src/binwalk-2.1.1
sudo python2 setup.py install

固件修改工具包仅支持 Linux 平台。经过少量修改,它应该可以在其他 POSIX 平台上工作。

使用工具包

Git 克隆固件修改工具包仓库。

工具包可执行文件

固件修改工具包包含一系列实用程序和 Shell 脚本。可以直接使用这些实用程序,也可以使用 Shell 脚本来自动化和组合常见的固件操作(例如提取和重建)。下面列出了用于固件操作的核心脚本。

主要脚本:

脚本描述
extract-firmware.sh固件提取脚本
build-firmware.sh固件重建脚本

次要脚本:

ddwrt-gui-extract.sh从已提取的 DD-WRT 固件中提取 Web GUI 文件。
ddwrt-gui-rebuild.sh将修改后的 Web GUI 文件恢复到已提取的 DD-WRT 固件中。

固件工作目录

固件修改工具包使用一个“硬编码”的工作目录 'fmk'。提取脚本将数据提取到此文件夹,重建脚本从此文件夹重建。某些操作支持使用其他工作目录,但不是全部。我们将来会扩展这一功能。目前,如果你有多个工作目录,建议重命名当前不操作的那些目录。

提取固件

自动固件提取通常适用于大多数使用 uImage/TRX 固件头且采用 SquashFS 或 CramFS 文件系统的固件映像。目前,extract-firmware.sh 是首选的提取方法,因为它支持比旧版 old-extract.sh 脚本更多的固件类型。不过,old-extract.sh 仍被包含在内,并且适用于多种固件格式。

extract-firmware.sh 和 build-firmware.sh 的使用方法都很简单:

root@kitploit:~
./extract-firmware.sh firmware.bin

默认情况下,extract-firmware.sh 的输出将位于 'fmk' 目录中,而 old-extract.sh 会将提取的数据放入指定工作目录。

重建固件

使用哪个重建脚本取决于使用哪个提取脚本。如果你使用 extract-firmware.sh 提取了固件映像,那么必须使用 build-firmware.sh 来重建它。同样,如果使用了 old-extract.sh,那么重建映像时必须调用 old-build.sh:

root@kitploit:~
./build-firmware.sh [-nopad] [-min]

build-firmware.sh 生成的新固件将位于 'fmk/new-firmware.bin',而 old-build.sh 会生成多种不同格式的固件映像并保存到指定的输出目录。

可选的 -nopad 开关将指示 build-firmware.sh 不要将固件填充到原始大小。

可选的 -min 开关将使用最大 1MB 的 squashfs 块大小。这会减小固件映像大小,但会消耗目标设备上更多的 CPU 和 RAM 资源。除非必要,否则不要使用此开关。对于嵌入式系统来说,这是一个非常大的块大小。重建时会保留原始固件的 squashfs 块大小,除非你确信自己知道在做什么,否则应使用原始块大小。块大小过大可能表面上运行正常,但固件的运行时性能可能会在所有或某些负载下受到影响。

修改 DD-WRT 网页

固件修改工具包的一个非常独特的功能是能够提取和重建 DD-WRT Web GUI 中的文件。这通过 ddwrt-gui-extract.sh 和 ddwrt-gui-restore.sh 脚本自动完成。

使用 extract-firmwware.sh 提取 DD-WRT 固件映像后,你可以通过运行以下命令来提取 Web 文件:

root@kitploit:~
./ddwrt-gui-extract.sh

这将在当前目录下创建一个名为 'www' 的目录,并将 Web 文件提取到其中。你可以按任意方式修改这些文件,但不能添加或删除文件。

编辑完成后,你可以通过运行以下命令重建 Web 文件:

root@kitploit:~
./ddwrt-gui-rebuild.sh

恢复到原厂固件

有时你会热情地刷写第三方固件(如 Gargoyle 或 DD-WRT),却发现它缺少你需要的功能、性能不如原厂固件,或者存在功能问题。在这种情况下,你可能想回到原厂固件,但不知如何操作!

以下是固件修改工具包如何帮助你恢复到原厂固件的方法。过程如下:

  1. 提取原厂固件。然后重命名 'fmk' 目录。
  2. 提取第三方“升级”固件(例如 Gargoyle-sysupgrade)
  3. 将提取的第三方固件的 rootfs 和 image_parts 替换为原厂固件的对应部分。
  4. 重建固件映像
  5. 刷写原厂固件映像(现在已按照第三方固件期望的方式打包)。
  6. 如果一切都成功,你现在又回到了原厂固件。

一旦你回到原厂固件,它就能再次接受原厂固件映像。

示例

以下示例演示如何提取固件映像,将其现有的 telnet 守护进程替换为自定义构建的版本,然后构建新的固件映像:

root@kitploit:~
./extract-firmware.sh firmware.bin
cp new-telnetd fmk/rootfs/usr/sbin/telnetd
./build-firmware.sh

下面是一个示例,展示如何提取 DD-WRT 固件映像、修改 Web 索引页面并构建新的固件映像:

root@kitploit:~
./extract-firmware.sh firmware.bin
./ddwrt-gui-extract.sh
echo "HELLO WORLD" > www/index.asp
./ddwrt-gui-rebuild.sh
./build-firmware.sh

Linksys 固件

Linksys 具有带校验和检查的自定义尾部,因此编写此脚本来尝试自动化计算映像校验和并相应修改尾部的过程。新映像将写入 modified_checksum.img。在修改和运行 build-firmware.sh 后运行此脚本。

root@kitploit:~
./linksys_footer.sh modified_firmware.img

工具/实用程序

固件修改工具包包含一系列在处理嵌入式固件映像时有用的工具。这些工具包括下面列出的,但还有更多未在此列出。

其他链接

论坛

下载工具
工具描述
AsusTRXASUSTRX 的扩展版本,可以构建“标准”TRX 文件,也可以选择性地构建带有 ASUS addver 风格头部附加的 TRX 文件。它还可以独特地强制设置 TRX 中的段偏移(使用 -b 开关),以便与 Marvell ASUS 设备(如 WL-530g)兼容。此工具取代了“标准”trx 工具和 addver。当前包含的版本:0.90 beta。
AddPattern用于在 TRX 前面添加 Linksys 风格 HDR0 头部的实用程序。
AddVerASUS 实用程序,用于向 TRX 映像附加包含版本信息的头部。ASUSTRX 包含此功能。当前版本:无版本号。
Binwalk扫描固件映像以识别已知文件类型(固件头部、压缩内核、文件系统等)。
CramFSCKCRAMFS 文件系统映像检查器和提取器。当前包含的版本:2.4x。
CramFSSwap用于交换 CramFS 映像字节序的实用程序。
CRCalc用于修补给定固件映像中所有 uImage 和 TRX 头部的实用程序。
MkSquashFS构建 squashfs 文件系统映像。当前包含的版本:2.1-r2、3.0。
MkCramFS构建 cramfs 文件系统映像。下一版本将添加。当前包含的版本:2.4x。
MotorolaBin用于在 TRX 映像前添加 8 字节头部以用于 Motorola 设备 WR850G、WA840G、WE800G 的实用程序。当前版本:无版本号。
Splitter3用于扫描和提取固件映像组件部分的实用程序。
Tpl-tool用于操作 TP-Link 供应商格式映像的实用程序。
UnCramFS提取 cramfs 文件系统映像的替代工具。尽可能使用 cramfsck,因为它似乎更可靠。当前包含的版本:0.7(用于 cramfs v2.x)。
UnCramFS-LZMA提取 LZMA 压缩的 cramfs 文件系统映像(例如 OpenRG 使用的)的替代工具。
UnSquashFS提取 zlib squashfs 文件系统映像。当前包含的版本:用于 3.0 映像的 1.0 和用于 2.x 映像的 1.0(我自己的混合版本)。
UnSquashFS-LZMA提取 lzma squashfs 文件系统映像。当前包含的版本:用于 3.0 映像的 1.0 和用于 2.x 映像的 1.0(我自己的混合版本)。注意:并非所有 squashfs-lzma 补丁都是相互兼容的。我正在努力增加对所有常见 squashfs-lzma 变体的支持。
UnTRX将 TRX 风格固件拆分为其组件部分。还支持预先添加的 addpattern HDR0 风格头部。此工具是专门为此工具包开发的。当前包含的版本:0.45。
WebDecomp从 DD-WRT 固件映像中提取和恢复 Web GUI 文件,允许修改网页。
WRTVxImgTool用于为 WRT54G(S) v5 系列生成 VxWorks 兼容固件映像的实用程序。