From f1b5f05bb33be21f2322dfdcbccf141b0a18b81b Mon Sep 17 00:00:00 2001 From: chrisr3d Date: Tue, 7 May 2019 09:35:56 +0200 Subject: [PATCH] fix: Checking not MISP header fields - Rejecting fields not recognizable by MISP --- misp_modules/modules/import_mod/csvimport.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/misp_modules/modules/import_mod/csvimport.py b/misp_modules/modules/import_mod/csvimport.py index 6701d3d..fd2f27b 100644 --- a/misp_modules/modules/import_mod/csvimport.py +++ b/misp_modules/modules/import_mod/csvimport.py @@ -53,6 +53,13 @@ class CsvParser(): self.has_delimiter = True self.fields_number, self.delimiter, self.header = self.get_delimiter_from_header(data[0]) self.data = data + descFilename = os.path.join(pymisp_path[0], 'data/describeTypes.json') + with open(descFilename, 'r') as f: + self.MispTypes = json.loads(f.read())['result'].get('types') + for h in self.header: + if not (h in self.MispTypes or h in misp_extended_csv_header): + misperrors['error'] = 'Wrong header field: {}. Please use a header value that can be recognized by MISP (or alternatively skip it using a whitespace).'.format(h) + return misperrors def get_delimiter_from_header(self, data): delimiters_count = {} @@ -162,16 +169,13 @@ class CsvParser(): self.finalize_results() def findMispTypes(self): - descFilename = os.path.join(pymisp_path[0], 'data/describeTypes.json') - with open(descFilename, 'r') as f: - MispTypes = json.loads(f.read())['result'].get('types') list2pop = [] misp = [] head = [] for h in reversed(self.header): n = self.header.index(h) # fields that are misp attribute types - if h in MispTypes: + if h in self.MispTypes: list2pop.append(n) misp.append(h) # handle confusions between misp attribute types and attribute fields