我设法获得了IoT设备的固件,但是该固件在十六进制中。将其转换为二进制文件以便可以使用binwalk的最佳方法是什么?
到目前为止,我已经尝试使用srec_cat hex.file -Intel -Output binary.file -Binary对其进行转换。我曾尝试使用binwalk分析转换后的文件,但得到的唯一结果是:

SHA256 hash constants, little endian
Certificate in DER format (x509 v3), header length: 4, sequence length: 678


我做错了吗?

编辑:使用binwalk -Ive binary.file之后,我设法提取了一些文件。无法正确检测到文件,但是当我查看文件时,发现设备上使用了一些文本。

编辑2:我认为固件未压缩。但是我不确定它是否已加密。什么是最好的检查方法?

$ file binary.file
binary.file: data


使用strings -n 10 binary.file我得到了看似有效的字符串列表。

评论

您确定固件未压缩/加密吗?

您能否提供二进制文件或二进制文件的前几百个字节的十六进制转储,以及字符串返回的一些人类可读的字符串?有关设备本身的信息,例如设备名称,制造商,处理器等也将有所帮助

#1 楼

将您的十六进制文件转换为二进制文件

使用xxd -p -r。例如:

echo -n "deadbeef" | xxd -p -r | od -tx1


因此,在您的情况下,xxd -p -r hex.file > binary.file应该可以解决问题。

是否加密

>如果看到带有设备典型消息的未加密字符串,则固件(很可能未加密),因为不太可能只有部分被加密而其他部分未加密。

如果未加密字符串是来自glibc或其他库,则不确定。

您的固件包含证书的事实并不意味着它已加密。例如,该证书可用于保护IoT和远程服务器之间的通信。

#2 楼

第一步,您应该检查数据表以获取字节序和加载地址。然后,您可以尝试使用自己喜欢的反汇编程序加载固件,例如,使用radare2 yuo可以使用与此类似的语法

br />
使用IDA,您应该设置处理器类型/选项,并在从数据表中获得的RAM和ROM地址之后。

请看此示例。

评论


如果是HEX文件,则它已经包含ROM地址。

–安东·库科巴(Anton Kukoba)
18年5月10日在7:58