Hacker News 中文摘要

RSS订阅

逆向工程Yaesu FT-70D固件加密 -- Reverse Engineering Yaesu FT-70D Firmware Encryption

文章摘要

这篇文章详细介绍了作者逆向工程Yaesu FT-70D对讲机固件加密的全过程。作者出于对业余无线电设备的好奇,在没有现成工具的情况下,通过分析固件更新程序、破解加密算法,最终成功解密了该设备的固件文件。文章以通俗易懂的方式分享了完整的逆向工程方法,包括如何识别加密模式、提取密钥等关键步骤。

文章总结

逆向工程Yaesu FT-70D固件加密机制

背景

业余无线电设备是学习无线电频谱的有趣工具,同时也是可能运行特殊芯片/固件的嵌入式设备。作者出于好奇,开始研究如何破解Yaesu FT-70D设备。此前仅有的相关资源是一位Reddit用户关于Yaesu FT1DR自定义固件的讨论。

探索途径

  1. 固件更新工具分析
    Yaesu官网提供了通过USB更新固件的Windows应用程序。作者下载了FT-70D的固件包,发现其中包含多个文件,重点关注"FT-70D_ver111(USA).exe"。

  2. 资源文件解析
    使用XPEViewer工具分析.exe文件,发现资源段中存在自定义类型"23",其中包含疑似加密的固件数据"RESUPDATEINFO"。

逆向分析过程

  1. 定位关键函数
    通过调试工具追踪"RESUPDATEINFO"资源的加载和使用过程,发现数据解密函数。该函数将8字节输入数据扩展为64字节的位表示形式,然后进行解密处理。

  2. 解密算法解析
    解密过程分为三个阶段:

    • 使用密钥材料与静态表数据进行XOR运算
    • 构建32字节缓冲区,结合第一阶段生成的48字节缓冲区
    • 对输出缓冲区进行迭代处理,通过静态缓冲区索引进行XOR运算
  3. 密钥设置机制
    密钥通过时间戳字符串生成:

    • 将时间戳字符串的每个字节扩展为位表示
    • 使用静态密钥材料进行四次解密迭代
    • 最终结果作为动态解密密钥

固件加载

使用IDA Pro加载解密后的固件,选择Hitachi H8SX架构进行反汇编。通过识别向量表,成功定位并分析固件代码。

工具实现

作者使用Rust语言实现了完整的解密工具,代码已开源在GitHub(项目名:porkchop)。

该研究揭示了Yaesu固件的加密机制,为后续的固件分析和修改奠定了基础。整个过程展示了从资源提取到算法逆向的完整方法论,特别强调了时间旅行调试(TTD)在复杂逆向工程中的价值。

(注:原文中涉及的详细技术细节和代码片段已进行适当简化,保留核心逻辑流程)

评论总结

总结评论内容:

  1. 业余无线电对软件背景人士的价值
  • 观点:认为业余无线电有助于软件背景人士学习嵌入式电子技术
  • 引用:"Ham radio is well worth getting into if you come from a software background"("如果你有软件背景,业余无线电非常值得尝试")
  • 引用:"getting a deeper understanding of how they work can have surprising career benefits"("深入了解其工作原理可能带来意想不到的职业好处")
  1. 逆向工程加密的意外发现
  • 观点:分享逆向工程Yamaha MIDI文件加密的简单经历
  • 引用:"I thought it would be super complex but it turned out to be ridiculously easy"("本以为会非常复杂,结果却简单得可笑")
  • 引用:"they used a fixed block of 256 bytes that they xor'd the data with"("他们使用了一个固定的256字节块进行异或加密")
  1. 对硬件制造商加密实践的批评
  • 观点:批评硬件制造商自创加密方案的能力不足
  • 引用:"Another day another hardware manufacturer rolling their own encryption"("又一个硬件制造商使用自己的加密方案")
  • 引用:"We are lucky these companies don't really know what they are doing"("幸运的是这些公司并不真正了解他们在做什么")