发现字节数组混淆函数

逆向工程 硬件 混淆 去混淆 USB
2021-06-16 07:48:13

我正在对 SafeNet(前身为 Rainbow)iKey 1000 USB 加密狗协议进行逆向工程,以便为其创建 Linux 驱动程序。我在 Linux 主机和 Wireshark 上的虚拟机中使用 Windows 作为来宾来检查 USB 数据包。该协议非常简单,但是我坚持使用质询-响应 MD5 身份验证 ( ikey_MD5_CHAP)。

挑战以纯文本形式发送给加密狗,然后设备计算存储在设备中的挑战和密钥的 MD5,并将其发送回主机。但是,由于某种原因,控制数据包中传回的 MD5 值似乎被混淆了。

通过 USB 发送的示例值是:

09 77 e6 be 59 44 22 bc ef 60 47 da 4f bd be 80

ikey_MD5_CHAP原始软件函数返回值

0a 9a 2b 26 e2 ef ef ab ed 3d 02 73 c5 11 f1 90

我的目标是发现转换函数。很有可能它包含一些 XOR 和添加项,因为安全官员密码混淆中使用了类似的东西,如 http://www.securityfocus.com/advisories/2440 中所述我注意到在我生成的所有散列中,第一个字节总是增加一个。

由于我是逆向工程新手,因此我在询问应该遵循哪些方向来发现转换函数。我可以根据需要生成尽可能多的哈希。

0个回答
没有发现任何回复~