分析PDF文件以检测恶意文件

时间:2014-06-17 17:31:03

标签: pdf hash output

我在python中编写了一个检测恶意PDF的代码。 我分析的每个文件都计算其哈希值并将其保存在哈希数据库中,除了将输出保存在文本文件中。 如果我想扫描另一个文件,我计算它的哈希值然后在哈希数据库中搜索它,如果找到我打印已经存在的文本的输出。 但如果哈希值不存在,则保存并输出保存在文本文件

我需要帮助我如何在哈希值和包含输出的文本之间建立链接?

1 个答案:

答案 0 :(得分:0)

如上所述Kyle,您可以使用哈希表。哈希表类似于字典。在python中,我实际上相信它们被称为字典。有关详情,请查看此处:http://www.tutorialspoint.com/python/python_dictionary.htm

就您的问题而言,您有多种选择。您必须保存您的数据库'在某些时候,您可以将其保存为多种不同的格式。您可以将其保存为JSON文件(非常流行的样式)。它可能是一个XML文件(也很受欢迎)。您甚至可以将其保存为CSV(不是很流行,但它可以完成工作)。为此,我们假设你保存了这个数据库'在一个看起来像这样的文本文件中:

5a4730fc12097346fdf5589166c373d3{C:\PdfsOutput\FileName.txt}662ad9b45e0f30333a433566cee8988d{C:\PdfsOutput\SomeOtherFile.txt}

基本上你将其格式化为HashValue{PathToFileOnDisk}...然后你可以通过看起来像[0-9a-f]{32}\{[^\}]+的正则表达式解析它然后你会在启动时使用这个正则表达式扫描你的数据库,加载所有匹配,迭代所有比赛,将每场比赛分成' {'然后将ValueSplit[0]作为键放入字典中,并将该文本文件的路径作为该键的值。

因此,在进行正则表达式搜索之后,获取匹配并迭代它们,在迭代循环中说出如下内容:

ValueSplit = RegexMatch.split('{') HashAndFileDict[ValueSplit[0]] = ValueSplit[1] 此代码假定循环中的正则表达式匹配是一个简单称为“RegexMatch'”的字符串。它还假设您存储哈希值和路径的词典称为“HashAndFileDict'

稍后在您的代码中,您可以通过以下方式检查相关的PDF哈希值:

if(!HashAndFileDict.hash_key(PDFHashValue): TextFilePath = savePDFOutputText(ThePDFFile) HashAndFileDict[PDFHashValue] = TextFilePath else: print("File already processed. Text is at: " + HashAndFileDict[PDFHashValue])


如果可以,最好使用2个散列算法并将其十六进制摘要合并为1个字符串,以防止在处理多个PDF文件时发生冲突。