diff --git a/vulnwhisp/frameworks/openvas.py b/vulnwhisp/frameworks/openvas.py index a5f8b70..5461629 100644 --- a/vulnwhisp/frameworks/openvas.py +++ b/vulnwhisp/frameworks/openvas.py @@ -190,3 +190,17 @@ class OpenVAS_API(object): self.processed_reports += 1 merged_df = pd.merge(report_df, self.openvas_reports, on='report_ids').reset_index().drop('index', axis=1) return merged_df + + def normalise(self, dataframe): + self.logger.debug('Normalising data') + self.map_fields(dataframe) + self.transform_values(dataframe) + return dataframe + + def map_fields(self, dataframe): + self.logger.debug('Mapping fields') + return dataframe + + def transform_values(self, dataframe): + self.logger.debug('Transforming values') + return dataframe \ No newline at end of file diff --git a/vulnwhisp/frameworks/qualys_web.py b/vulnwhisp/frameworks/qualys_web.py index 4e50c5f..45c9da3 100644 --- a/vulnwhisp/frameworks/qualys_web.py +++ b/vulnwhisp/frameworks/qualys_web.py @@ -463,3 +463,17 @@ class qualysScanReport: merged_data.sort_index(axis=1, inplace=True) return merged_data + + def normalise(self, dataframe): + self.logger.debug('Normalising data') + self.map_fields(dataframe) + self.transform_values(dataframe) + return dataframe + + def map_fields(self, dataframe): + self.logger.debug('Mapping fields') + return dataframe + + def transform_values(self, dataframe): + self.logger.debug('Transforming values') + return dataframe \ No newline at end of file diff --git a/vulnwhisp/vulnwhisp.py b/vulnwhisp/vulnwhisp.py index befe9d6..7d0c95d 100755 --- a/vulnwhisp/vulnwhisp.py +++ b/vulnwhisp/vulnwhisp.py @@ -610,6 +610,9 @@ class vulnWhispererQualys(vulnWhispererBase): vuln_ready['scan_name'] = scan_name vuln_ready['scan_reference'] = scan_reference + # Map and transform fields + vuln_ready = self.qualys_scan.normalise(vuln_ready) + # TODO remove the line below once normalising complete vuln_ready.rename(columns=self.COLUMN_MAPPING, inplace=True) record_meta = ( @@ -627,9 +630,7 @@ class vulnWhispererQualys(vulnWhispererBase): self.record_insert(record_meta) if output_format == 'json': - with open(relative_path_name, 'w') as f: - f.write(vuln_ready.to_json(orient='records', lines=True)) - f.write('\n') + vuln_ready.to_json(relative_path_name, orient='records', lines=True) elif output_format == 'csv': vuln_ready.to_csv(relative_path_name, index=False, header=True) # add when timestamp occured @@ -779,10 +780,9 @@ class vulnWhispererOpenVAS(vulnWhispererBase): vuln_ready.rename(columns=self.COLUMN_MAPPING, inplace=True) vuln_ready.port = vuln_ready.port.fillna(0).astype(int) vuln_ready.fillna('', inplace=True) - if output_format == 'json': - with open(relative_path_name, 'w') as f: - f.write(vuln_ready.to_json(orient='records', lines=True)) - f.write('\n') + # Map and transform fields + vuln_ready = self.openvas_api.normalise(vuln_ready) + vuln_ready.to_json(relative_path_name, orient='records', lines=True) self.logger.info('Report written to {}'.format(report_name)) return report