Windows 中 MakeCat 的 SHA256 与预期的 SHA256 不同
SHA256 of MakeCat in Windows is different than expected SHA256
Windows 有一个名为 MakeCat 的工具,它会生成一个目录文件,其中包含操作系统上文件的 SHA256 哈希值。
假设我们以 Optane.dll 作为示例文件。
使用 Makecat 工具创建目录文件会生成 230EB11F89F6B7B4E6C8E069D6A2A68820E7002625D2DF2F30B80043906433F1 的 SHA256 哈希值。
但是,将同一文件通过任何在线或本地文件 SHA256 计算器得出不同的哈希值 - 4C5E4407A6056B60089F8406CA75F230988A2528FA84F7965C5BF6ED883FB79A
知道 MakeCat 如何计算哈希值吗?我相信它在内部调用 CryptCATAdminCalcHashFromFileHandle Windows API.
我的目标:在Linux环境中为一些文件计算这个Makecat风格的哈希,并将它存储在一个CDF文件中,以便我以后可以使用它。
哈希值似乎来自精心挑选的文件部分,以避免出现一些不一致的哈希值。
属性、可选数据和其他可能特定于机器的数据将被忽略。
Here's the document from 2008 by Microsoft 详细介绍了可移植可执行 (PE) 文件的整个结构以及数据的存储、签名和哈希处理方式。
(警告:link直接从MS服务器下载word文档)
此哈希机制已在 LIEF Project 中实现,因此我们可以通过执行以下操作获得相同的 SHA256 哈希:
import lief
binary = lief.parse("Optane.dll") # Any file you wish to hash
sha256_hex_string = binary.authentihash_sha256.hex()
此哈希值将与 CryptCATAdminCalcHashFromFileHandle2 返回的哈希值相同。
Windows 有一个名为 MakeCat 的工具,它会生成一个目录文件,其中包含操作系统上文件的 SHA256 哈希值。
假设我们以 Optane.dll 作为示例文件。
使用 Makecat 工具创建目录文件会生成 230EB11F89F6B7B4E6C8E069D6A2A68820E7002625D2DF2F30B80043906433F1 的 SHA256 哈希值。
但是,将同一文件通过任何在线或本地文件 SHA256 计算器得出不同的哈希值 - 4C5E4407A6056B60089F8406CA75F230988A2528FA84F7965C5BF6ED883FB79A
知道 MakeCat 如何计算哈希值吗?我相信它在内部调用 CryptCATAdminCalcHashFromFileHandle Windows API.
我的目标:在Linux环境中为一些文件计算这个Makecat风格的哈希,并将它存储在一个CDF文件中,以便我以后可以使用它。
哈希值似乎来自精心挑选的文件部分,以避免出现一些不一致的哈希值。
属性、可选数据和其他可能特定于机器的数据将被忽略。
Here's the document from 2008 by Microsoft 详细介绍了可移植可执行 (PE) 文件的整个结构以及数据的存储、签名和哈希处理方式。
(警告:link直接从MS服务器下载word文档)
此哈希机制已在 LIEF Project 中实现,因此我们可以通过执行以下操作获得相同的 SHA256 哈希:
import lief
binary = lief.parse("Optane.dll") # Any file you wish to hash
sha256_hex_string = binary.authentihash_sha256.hex()
此哈希值将与 CryptCATAdminCalcHashFromFileHandle2 返回的哈希值相同。