尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

大疆固件逆向:从 .bin 到签名验证的完整拆解路径

大疆固件逆向:从 .bin 到签名验证的完整拆解路径 大疆固件逆向从 .bin 到签名验证的完整拆解路径【免费下载链接】dji_revDJI Reverse engineering项目地址: https://gitcode.com/gh_mirrors/dj/dji_rev拿到一个.bin用 hexdump 打开全是一堆乱码第一件该做的事不是硬啃加密。大疆固件逆向这套工具的思路是从镜像结构本身入手先看头再读块表然后才轮到加密和签名层。下面把一条从原始.bin到可读固件内容的完整链路讲清楚你可以照着一步步跑。 ## 这个项目到底在做什么输入是你下载或转储出来的固件镜像文件也就是那个.bin。项目做的事很具体tools/image.py先读头、认IM*H魔数、逐块遍历块表把每个块落盘成独立文件密钥已知时再做 AES-CBCAES 对称加密的常见工作模式解密交出明文tools/check_uboot.py和tools/sign_uboot.py负责 U-Boot嵌入式系统的引导加载程序类比电脑里的 BIOS/EFI安全分区的 RSA 签名一个验证、一个重签tools/fw_dec.py则针对另一种固件格式自动遍历候选密钥做解密。输出是一组可解析、可提取、可验签的产物面向想在授权环境下做无人机固件分析的开发者与安全研究者。 ## 一条完整的分析链路整条链路本质是 DJI 固件镜像解析的一个流程先拆结构再剥加密最后验签名按你实际操作的顺序走五步。起点是拿到原始二进制。设备在手时tools/partition_dump.sh在设备端监听一个固定端口把每个 eMMC 分区含两个 boot 分区和 rpmb流式接收成本地.img只有官方升级包时OTA 里那个.bin本身就是待解析的镜像。这一步不用跑代码只要确认手里有一个可解析的文件。拿到文件后先跑tools/image.py。这个工具只干一件事解析镜像结构并拆出块数据。跑完它会在终端完整打印头字段把每个 chunk 写成原文件名_块名.bin。加密块也会被写出只是内容还要靠下一步处理。python3 tools/image.py dji_system.bin属性最后一位为 0 的块是加密的。tools/image.py内置了一份已知密钥表RREK、RIEK、RUEK、DRAK、SAAK、PUEK头的加密密钥标识命中其一就直接 AES-CBC 解密出明文。头是更新版本或密钥没收录时换tools/fw_dec.py做飞行控制器固件解密它先读 41 字节的头再用全部候选密钥乘四组解密参数逐一试把每种组合的结果写成独立文件由你肉眼确认哪份是对的。python3 tools/fw_dec.py fc_firmware.binU-Boot 分区签名验证遵循固定布局前 4 字节是文件长度512 到 768 是 PKCS#1.5 的 RSA 签名768 到 1292 是 Montgomery 形式的公钥1536 之后才是真实内容。tools/check_uboot.py从文件里重组公钥、对内容验签并输出 True/Falsetools/sign_uboot.py反过来给你一对公私钥就能生成同布局的.signed文件。两个配合既能判断分区是否被篡改也能给自己要刷的分区造一份签名。注意这两个脚本是 Python 2 语法。python tools/check_uboot.py uboot.signed几个辅助脚本让链路更顺手。tools/xor.py把两个文件逐字节异或适合拿同一分区的两个版本做差分、定位改动tools/derive_key.py模拟设备侧的密钥推导逻辑给一个密钥和一段字符串就能输出 AES-CBC 结果用来核对推导路径tools/websocket_tool.py连上设备本地 WebSocket 服务不经过助手 App 直接读改fly_limit_height这类参数。 ## 固件镜像长什么样解析之前得先知道每个区域在哪。IM*H 镜像的简化布局如下区域作用魔数 版本前 8 字节IM*H和版本号目前只见到 1尺寸与密钥字段头大小、RSA 签名大小、有效载荷大小、认证密钥标识、加密密钥标识、16B 加扰密钥名称与完整性32B 镜像名、块数量、32B SHA256 载荷哈希块表每块 32 字节块名、起始偏移、输出大小、属性末位 0 表示加密RSA 签名对头做签名签名大小与认证密钥由头字段指定块数据各块真实内容从偏移 0 起排布部分加密关键心智模型是头告诉你有几块、签名多长块表告诉你每块在哪而签名覆盖的是头所以改头就得连带改签名。这三层理顺了tools/image.py打印的每个字段才落得到实处。▶️ ## 跑通第一步从零到跑通第一条解析命令四步。先克隆仓库git clone https://gitcode.com/gh_mirrors/dj/dji_rev接着装image.py依赖的密码库pip3 install pycryptodome。然后把要分析的固件镜像dji_system.bin放进一个工作目录。最后在仓库根目录敲下第一条解析命令python3 tools/image.py dji_system.bin跑完你会看到头字段被完整打印出来目录里多出一批以块名命名的.bin文件。使用边界顺带提一句边界。这套工具只应在你自有或已获明确授权的环境下用于教育与研究不要碰未授权的设备。分析中若发现漏洞走厂商正规披露渠道比直接公开更可能换来修复。现在你可以打开终端对着那个.bin文件敲下第一条命令。【免费下载链接】dji_revDJI Reverse engineering项目地址: https://gitcode.com/gh_mirrors/dj/dji_rev创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表