前提

导入的py脚本为《数据处理 | pandas处理数据后输出为Excel表格》

🐍Python🐍

逻辑

  1. 遍历文件夹
  2. 获取PE文件的ImpHash

2.1 判断是否是PE文件
2.1.1 是:获取ImpHash

  1. 获取ImpHash一致的文件MD5

3.1 对比指定的ImpHash
3.1.1一致:获取文件MD5

代码

  1. import os
  2. import re
  3. from 遍历文件夹提取文件名andMD5andImpHash import PE_isPE
  4. from 遍历文件夹提取文件名andMD5andImpHash import PE_GetImpHash
  5. from 遍历文件夹提取文件名andMD5andImpHash import GetFileMD5
  6. msgStart = r"——————————Python脚本开始——————————"
  7. msgEnd = r"——————————Python脚本结束——————————"
  8. strNewLine = "\r\n"
  9. def EnumFile2CmpImphash(pathDir, theImpHash):
  10. print("——————————遍历开始——————————")
  11. for home, dirs, files in os.walk(pathDir):
  12. for file in files:
  13. pathFile = os.path.join(home, file)
  14. # 查看是否是PE文件,是则获取其ImpHash
  15. isPE = PE_isPE(pathFile)
  16. if isPE:
  17. # 获取ImpHash
  18. fileImpHash = PE_GetImpHash(pathFile)
  19. else:
  20. # 提示非PE
  21. fileImpHash = "非PE"
  22. try:
  23. # 忽略大小写比较ImpHash字符串
  24. if (re.search(fileImpHash, theImpHash, re.IGNORECASE)):
  25. # ImpHash相同的PE获取其MD5
  26. fileMD5 = GetFileMD5(pathFile)
  27. print("ImpHash相同的文件信息", strNewLine + "路径:" + pathFile + strNewLine + "MD5:", fileMD5 + strNewLine)
  28. except:
  29. continue
  30. print("——————————遍历完成——————————")
  31. # 输入需要扫描的文件夹路径和指定的ImpHash
  32. pathDir = (r'D:\')
  33. theImpHashStopV2 = "FB36740C126064E8D052AD24F396D94D"
  34. if __name__ == '__main__':
  35. print(msgStart)
  36. EnumFile2CmpImphash(pathDir, theImpHashStopV2)
  37. print(msgEnd)

运行结果

image.png