Windows有一个名为MakeCat的工具,它生成一个目录文件,其中包含操作系统上文件的SHA256散列。
假设我们以Optane.dll作为示例文件。
使用Makecat工具创建目录文件将导致230EB11F89F6B7B4E6C8E069D6A2A68820E7002625D2DF2F30B80043906433F1.的SHA256哈希

但是,通过任何联机或本地文件SHA256计算器将相同的文件放在一起会产生不同的散列-SHA256。

知道MakeCat是如何计算哈希的吗?我相信它在内部称为CryptCATAdminCalcHashFromFileHandle Windows。
我的目标是:为Linux环境中的某些文件计算这个Makecat样式的散列,然后将其存储在一个文件中,以便以后我可以使用它。
发布于 2021-10-21 22:19:57
看来哈希来自精心选择的文件部分,以避免某些不一致的散列。
属性、可选数据和其他可能与机器相关的数据将被忽略.
这是微软2008年的文件,它详细描述了可移植可执行(PE)文件的整个结构,以及如何存储、签名和散列数据。
(警告:链接直接从MS服务器下载word文档)
这个散列机制已经在LIEF项目中实现了,因此我们可以通过以下操作获得相同的SHA256哈希:
import lief
binary = lief.parse("Optane.dll") # Any file you wish to hash
sha256_hex_string = binary.authentihash_sha256.hex()此散列将与CryptCATAdminCalcHashFromFileHandle2返回的哈希相同。
https://stackoverflow.com/questions/69634596
复制相似问题