有没有办法找出两个文件的哈希值?

时间:2019-10-10 06:32:32

标签: python hash command-line certutil

我有python代码,该代码生成两个文件的哈希值。第一个文件位于c:\ windows \ system32 \ wscript.exe,另一个文件是第一个文件的克隆,位于d:\ clone.exe。

python代码

import os
strcommand ='certutil -hashfile c:\windows\system32\wscript.exe md2'
p=os.popen(strcommand ).read()
print(str(p).split('\n')[1])

strcommand1='certutil -hashfile d:\clone.exe md2'
p=os.popen(strcommand1 ).read()
print(str(p).split('\n')[1])

输出为

D:\pythonprogram>python clonefinder.py
4cef03889db08179b57035e4463a84d5
db1cefe474ce12678ea4d6c61dc42291

但是当我在命令提示符中使用python中使用的命令时,两个文件的哈希值相同

命令提示符

D:\pythonprogram>certutil -hashfile c:\windows\system32\wscript.exe md2
MD2 hash of c:\windows\system32\wscript.exe:
db1cefe474ce12678ea4d6c61dc42291
CertUtil: -hashfile command completed successfully.

D:\pythonprogram>certutil -hashfile d:\clone.exe md2
MD2 hash of d:\clone.exe:
db1cefe474ce12678ea4d6c61dc42291
CertUtil: -hashfile command completed successfully.

如果我正在执行python程序,我希望哈希值相同

对此有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

Windows可能是一个非常有趣的操作系统,并且由于其年代久远,已添加了一些魔术,使旧的Windows代码仍可与Windows 7/8/10一起使用。在某些情况下,您可以在目录中看到不同版本的文件,例如C:\ windows。根据您的特权/根据您是否启动32位/ 64位应用程序。我并不十分了解所有这些机制,但是已经有些意外了。

要确保100%确保不要在两个不同的环境中执行certutil命令。我建议遵循。

  1. 打开一个cmd.exe窗口
  2. 在该窗口中键入certutil命令
  3. 现在也使用C:\Path_to_your_python\python.exe name_of_your_python_script.py在同一窗口中调用python脚本 使用python脚本的版本,在该脚本中,将regexp字符串加上r(r(r“ regex”))

如果仍然有不同的结果,请检查是否安装了32位或64位版本的python。 C:\Path_to_your_python\python.exe -V

如果您使用的是32位版本,则建议安装64位版本的python进行再次测试。