使用 Python 中的 os 模块和 yara-python 库,以下是代码示例:
import os
import yara
# 编译 Yara 规则
rules = yara.compile('path/to/rules.yar')
# 遍历目录
for foldername, subfolders, filenames in os.walk('path/to/directory'):
for filename in filenames:
if filename.endswith('.yar'):
# 打开并加载 Yara 规则
with open(os.path.join(foldername, filename), 'rb') as f:
rules.add_file(f)
else:
# 打开文件并匹配规则
with open(os.path.join(foldername, filename), 'rb') as f:
matches = rules.match(data=f.read())
if matches:
print('文件 %s 匹配到以下规则:%s' % (filename, matches))
以上代码将遍历指定目录下的所有文件和子目录,并编译 Yara 规则文件。对于每个非规则文件,它打开并匹配规则,打印匹配结果。对于规则文件,它会打开并添加到已编译的规则对象中,以便后续匹配。