From b6217a8c781478ca38c4f2da3a812e96406bda7d Mon Sep 17 00:00:00 2001 From: RamIIITA <46890642+RamIIITA@users.noreply.github.com> Date: Wed, 1 Apr 2020 14:13:11 +0530 Subject: [PATCH] Update EXE-peinfo.py Error in function output_file_quick() while executing the exe file. pe.FileInfo contains list of list. So, we I have added extra for loop to overcome the error --- mastiff/plugins/analysis/EXE/EXE-peinfo.py | 30 ++++++++++++---------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/mastiff/plugins/analysis/EXE/EXE-peinfo.py b/mastiff/plugins/analysis/EXE/EXE-peinfo.py index 7dd537f..90db1b4 100644 --- a/mastiff/plugins/analysis/EXE/EXE-peinfo.py +++ b/mastiff/plugins/analysis/EXE/EXE-peinfo.py @@ -125,20 +125,22 @@ def output_file_quick(self, outdir, pe): # http://blog.dkbza.org/2007/02/pefile-parsing-version-information-from.html outfile.write('\nFile Information:\n') if hasattr(pe, "FileInfo"): - for fileinfo in pe.FileInfo: - if fileinfo.Key == 'StringFileInfo': - for string_entry in fileinfo.StringTable: - for entry in string_entry.entries.items(): - outfile.write("{0:20}:\t{1:40}\n".format(printable_str(entry[0]), \ - printable_str(entry[1]))) - if fileinfo.Key == 'VarFileInfo': - try: - for var in fileinfo.Var: - outfile.write("{0:20}:\t{1:40}\n".format(printable_str(var.entry.items()[0][0]), - printable_str(var.entry.items()[0][1]))) - except: - # there are times when a VarFileInfo structure may be present, but empty - pass + for fileinfos in pe.FileInfo: + #Modified code + for fileinfo in fileinfos: + if fileinfo.Key == 'StringFileInfo': + for string_entry in fileinfo.StringTable: + for entry in string_entry.entries.items(): + outfile.write("{0:20}:\t{1:40}\n".format(printable_str(entry[0]), \ + printable_str(entry[1]))) + if fileinfo.Key == 'VarFileInfo': + try: + for var in fileinfo.Var: + outfile.write("{0:20}:\t{1:40}\n".format(printable_str(var.entry.items()[0][0]), + printable_str(var.entry.items()[0][1]))) + except: + # there are times when a VarFileInfo structure may be present, but empty + pass else: outfile.write('No file information present.\n')