Skip to content

Commit

Permalink
BUG: bots: ignore NULL bytes in all csv parsers
Browse files Browse the repository at this point in the history
fixes #967
  • Loading branch information
Sebastian Wagner committed Nov 9, 2017
1 parent b62b151 commit 62e7a94
Show file tree
Hide file tree
Showing 7 changed files with 7 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ CHANGELOG

### Bots
#### Parsers
- All CSV parsers ignore NULL-bytes now, because the csv-library cannot handle it (#967)
- Modify Bot default ruleset: changed conficker rule to catch more spellings

### Documentation
Expand Down
1 change: 1 addition & 0 deletions intelmq/bots/parsers/abusech/parser_ransomware.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ def process(self):

report = self.receive_message()
raw_report = utils.base64_decode(report.get("raw"))
raw_report = raw_report.translate({0: None})

for row in csv.reader(io.StringIO(raw_report)):
if row[0].startswith('#'):
Expand Down
1 change: 1 addition & 0 deletions intelmq/bots/parsers/generic/parser_csv.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ def init(self):

def parse(self, report):
raw_report = utils.base64_decode(report.get("raw"))
raw_report = raw_report.translate({0: None})
# ignore lines starting with #
raw_report = re.sub(r'(?m)^#.*\n?', '', raw_report)
# ignore null bytes
Expand Down
1 change: 1 addition & 0 deletions intelmq/bots/parsers/phishtank/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ def process(self):
]

raw_report = utils.base64_decode(report.get("raw"))
raw_report = raw_report.translate({0: None})
for row in csv.reader(io.StringIO(raw_report)):

if not len(row): # csv module can give empty lists
Expand Down
1 change: 0 additions & 1 deletion intelmq/bots/parsers/shadowserver/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ def init(self):

def parse(self, report):
raw_report = utils.base64_decode(report["raw"])
# Temporary fix for https://github.com/certtools/intelmq/issues/967
raw_report = raw_report.translate({0: None})
csvr = csv.DictReader(io.StringIO(raw_report))

Expand Down
1 change: 1 addition & 0 deletions intelmq/bots/parsers/turris/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ def process(self):

headers = True
raw_report = utils.base64_decode(report.get("raw"))
raw_report = raw_report.translate({0: None})
for row in csv.reader(io.StringIO(raw_report)):
# ignore headers
if headers:
Expand Down
2 changes: 2 additions & 0 deletions intelmq/lib/bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -545,6 +545,7 @@ def parse_csv(self, report: dict):
A basic CSV parser.
"""
raw_report = utils.base64_decode(report.get("raw")).strip()
raw_report = raw_report.translate({0: None})
if self.ignore_lines_starting:
raw_report = '\n'.join([line for line in raw_report.splitlines()
if not any([line.startswith(prefix) for prefix
Expand All @@ -558,6 +559,7 @@ def parse_csv_dict(self, report: dict):
A basic CSV Dictionary parser.
"""
raw_report = utils.base64_decode(report.get("raw")).strip()
raw_report = raw_report.translate({0: None})
if self.ignore_lines_starting:
raw_report = '\n'.join([line for line in raw_report.splitlines()
if not any([line.startswith(prefix) for prefix
Expand Down

0 comments on commit 62e7a94

Please sign in to comment.