命令行工具
o-gs/dji-firmware-tools avatar
o-gs/dji-firmware-tools

dji-firmware-tools:拆解、修改与重打包大疆固件的工程工具箱

项目速览:用于处理 DJI 产品固件的工具,重点是四轴飞行器。

2,216 个 Star518 个 ForkCGPL-3.0
GitHub

秒懂

它是什么?
dji-firmware-tools 是一组用于提取、解密、修改并重新打包大疆无人机固件的命令行工具,面向具备硬件与软件功底的工程师。它不提供傻瓜式教程,而是把格式解析与通信协议直接暴露在源码中,适合逆向研究、维修校准与参数调整。
适合谁用?
dji-firmware-tools 适合有嵌入式开发经验、熟悉串口协议与固件逆向的工程师,用于维修校准、参数调整或安全研究。不适合普通用户,也不适合试图绕过安全机制的人,项目作者明确拒绝提供逐步教程,并警告固件损坏风险。
能商用吗?
可以,但有条件。GPL-3.0 是 copyleft 许可证:如果你分发包含它的软件,就必须以同一许可证公开该软件的源代码。只在内部运行、不对外分发,则不会触发这项义务。
还在维护吗?
在维护。仓库最近一次提交在 59 天前。
用什么语言写的?
主要是 C(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月18日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题,谁该用它

大疆无人机的固件以专有容器和加密签名封装,普通用户无法直接查看或修改内部模块。dji-firmware-tools 提供了一组命令行工具,能从官方下载的 BIN 文件中提取模块,解密并去除签名,修改二进制内容后再重新打包。项目 README 明确说,这些工具是给具有大量硬件和软件知识的工程师用的,不是给脚本小子绕过安全机制用的。它解决的问题是:维修后需要触发校准、更换部件后需要重新配对、修改飞行参数、分析固件中的安全漏洞。适用人群是维修技师、逆向工程师、安全研究员,以及想深入了解大疆硬件与协议的人。

工作方式:从 xV4 容器到 IMaH 模块

固件处理流程分为两层。第一层是容器层,官方固件包以 xV4 开头,dji_xv4_fwcon.py 负责提取或合并其中的模块。第二层是模块层,单个模块可能以 IM*H 开头,dji_imah_fwsig.py 负责解密和去除签名。README 给出的例子是:先用 dji_xv4_fwcon.py 提取 Phantom 3 Pro 的固件包,再用 dji_imah_fwsig.py 对 Mavic Pro 的相机固件或 Phantom 4 Pro V2 的飞控固件进行解密。工具支持重新签名,但前提是拥有对应密钥的私钥部分。密钥版本随时间变化,当工具遇到多个可用密钥时,会显示警告并选择最近的版本。这种分层设计让用户能独立处理不同阶段的文件,也便于调试。

实际命令:提取、解密与重打包

运行工具时不带参数会显示支持的命令,带 --help 可以查看具体参数。提取 Phantom 3 Pro 固件的命令是:./dji_xv4_fwcon.py -vv -x -p P3X_FW_V01.08.0080.bin。解密 Mavic Pro 相机固件的命令是:./dji_imah_fwsig.py -vv -k PRAK-2017-01 -k PUEK-2017-07 -u -i wm220_0101_v02.00.55.69_20161215.pro.fw.sig。这里 -k 指定密钥版本,-u 表示去签名。重新签名 Mini 2 飞控固件需要 PRAK 的私钥部分,命令格式类似但参数不同。README 强调,如果出现警告,必须调查原因,否则最终固件可能损坏。这些命令直接来自项目文档,实际使用时需要根据文件路径和密钥版本调整。

通信工具:触发校准与发送自定义数据包

除了处理固件文件,项目还包含产品通信工具,通过串口(UART)和 I2C 与无人机连接。这些工具能触发某些设备的校准,特别是带霍尔传感器的云台。也可以向无人机发送任意自定义数据包,从而触发工厂功能,例如校准或配对,前提是你知道数据包的结构。这部分工具需要你有一台无人机并连接电脑,与固件处理工具不同,它们依赖实际硬件。README 没有给出具体的串口参数或数据包格式,只说运行工具时会显示细节。这意味着你需要从源码或测试文件中自行推断协议,门槛较高。

限制与失败模式:签名、密钥与损坏风险

最明显的限制是签名固件。许多固件包使用非对称加密签名,私钥很少公开。没有私钥,你只能解密和修改,但无法重新签名,修改后的模块无法通过固件刷写验证。即使能重打包,刷入修改后的固件可能需要 root 或其他额外步骤,这超出了工具本身的范围。另一个风险是密钥版本混淆。IM*H 文件可能引用多个密钥版本,工具会警告并选择最近的,但如果你需要旧版本对应的密钥,可能无法正确解密。还有固件损坏风险。修改二进制时,任何错误都可能导致设备变砖。README 明确警告,如果你不理解工具的工作原理,就不应该使用它们。

替代方案与差异

项目的起点是 phantom-licensecheck,一个用于检查 Phantom 许可证的工具。dji-firmware-tools 最初是它的替代实现,但后来扩展为支持多代产品,并增加了重打包能力。与 phantom-licensecheck 相比,后者更专注于单一功能,而 dji-firmware-tools 覆盖了解密、修改、重打包和通信。另一个相关方向是 DJI Assistant 软件,它是官方工具,允许修改参数,但功能受限,且不开放源码。dji-firmware-tools 提供了命令行版本,可以修改官方软件锁定的高级参数,但需要手动构造命令。如果你只需要修改参数,官方 Assistant 可能更安全,但如果你需要修改固件本身,这个项目是少数开源选择之一。

维护与许可:GPL-3.0 与社区依赖

项目以 C 语言为主,许可证是 GPL-3.0,这意味着如果你分发修改后的版本,必须提供源码。仓库没有显示最近的推送时间,也没有发布版本,维护活跃度不确定。但 README 提到项目 Wiki 包含大量硬件信息,由爱好者共享,这表明社区仍在更新知识库。使用这些工具时,你需要依赖源码作为格式文档,因为 README 没有提供完整的协议说明。升级成本方面,如果大疆改变固件格式或密钥,工具可能需要更新才能支持新产品。对于研究用途,GPL 许可允许自由使用,但商业分发需要遵守条款。

编辑结论

dji-firmware-tools 适合有嵌入式开发经验、熟悉串口协议与固件逆向的工程师,用于维修校准、参数调整或安全研究。不适合普通用户,也不适合试图绕过安全机制的人,项目作者明确拒绝提供逐步教程,并警告固件损坏风险。使用前应先阅读 tests 目录中的命令示例,确认输入文件格式与密钥版本,再在非关键设备上验证提取与重打包流程。尤其注意签名固件需要私钥,否则修改后的模块无法刷入。

官方来源

  1. Official README
  2. Project repository
社区笔记

社区笔记