前提
导入的py脚本为《数据处理 | pandas处理数据后输出为Excel表格》
🐍Python🐍
逻辑
- 遍历文件夹
- 获取PE文件的ImpHash
2.1 判断是否是PE文件
2.1.1 是:获取ImpHash
- 获取ImpHash一致的文件MD5
3.1 对比指定的ImpHash
3.1.1一致:获取文件MD5
代码
import os
import re
from 遍历文件夹提取文件名andMD5andImpHash import PE_isPE
from 遍历文件夹提取文件名andMD5andImpHash import PE_GetImpHash
from 遍历文件夹提取文件名andMD5andImpHash import GetFileMD5
msgStart = r"——————————Python脚本开始——————————"
msgEnd = r"——————————Python脚本结束——————————"
strNewLine = "\r\n"
def EnumFile2CmpImphash(pathDir, theImpHash):
print("——————————遍历开始——————————")
for home, dirs, files in os.walk(pathDir):
for file in files:
pathFile = os.path.join(home, file)
# 查看是否是PE文件,是则获取其ImpHash
isPE = PE_isPE(pathFile)
if isPE:
# 获取ImpHash
fileImpHash = PE_GetImpHash(pathFile)
else:
# 提示非PE
fileImpHash = "非PE"
try:
# 忽略大小写比较ImpHash字符串
if (re.search(fileImpHash, theImpHash, re.IGNORECASE)):
# ImpHash相同的PE获取其MD5
fileMD5 = GetFileMD5(pathFile)
print("ImpHash相同的文件信息", strNewLine + "路径:" + pathFile + strNewLine + "MD5:", fileMD5 + strNewLine)
except:
continue
print("——————————遍历完成——————————")
# 输入需要扫描的文件夹路径和指定的ImpHash
pathDir = (r'D:\')
theImpHashStopV2 = "FB36740C126064E8D052AD24F396D94D"
if __name__ == '__main__':
print(msgStart)
EnumFile2CmpImphash(pathDir, theImpHashStopV2)
print(msgEnd)