From 36cf46acd9228ee60f4611e41b3e951aa71b18e4 Mon Sep 17 00:00:00 2001 From: Paul A Date: Tue, 2 May 2017 16:27:37 +0200 Subject: [PATCH 1/2] Fixed the JSON output format (\n breaks JSON loading afterwards) --- examples/last.py | 3 +-- examples/search.py | 6 ++---- examples/searchall.py | 6 ++---- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/examples/last.py b/examples/last.py index f7e5773..ed07be5 100755 --- a/examples/last.py +++ b/examples/last.py @@ -19,8 +19,7 @@ def download_last(m, last, out=None): result = m.download_last(last) if out is None: if 'response' in result: - for e in result['response']: - print(json.dumps(e) + '\n') + print(json.dumps(result['response'])) else: print('No results for that time period') exit(0) diff --git a/examples/search.py b/examples/search.py index a895f6d..0f6fee6 100644 --- a/examples/search.py +++ b/examples/search.py @@ -18,12 +18,10 @@ def search(m, quiet, url, controller, out=None, **kwargs): for e in result['response']: print('{}{}{}\n'.format(url, '/events/view/', e['Event']['id'])) elif out is None: - for e in result['response']: - print(json.dumps(e) + '\n') + print(json.dumps(result['response'])) else: with open(out, 'w') as f: - for e in result['response']: - f.write(json.dumps(e) + '\n') + f.write(json.dumps(result['response'])) if __name__ == '__main__': diff --git a/examples/searchall.py b/examples/searchall.py index 97f19e9..6efe548 100755 --- a/examples/searchall.py +++ b/examples/searchall.py @@ -18,12 +18,10 @@ def searchall(m, search, quiet, url, out=None): for e in result['response']: print('{}{}{}\n'.format(url, '/events/view/', e['Event']['id'])) elif out is None: - for e in result['response']: - print(json.dumps(e) + '\n') + print(json.dumps(result['response'])) else: with open(out, 'w') as f: - for e in result['response']: - f.write(json.dumps(e) + '\n') + f.write(json.dumps(result['response'])) if __name__ == '__main__': From 9bfa24155c896cfef785f5c800de1e5900d42738 Mon Sep 17 00:00:00 2001 From: Paul A Date: Wed, 3 May 2017 10:32:14 +0200 Subject: [PATCH 2/2] Normalize output between misp.search_index and misp.search Fix issue: https://github.com/CIRCL/PyMISP/issues/78 --- pymisp/api.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pymisp/api.py b/pymisp/api.py index 363ab65..01cc36c 100644 --- a/pymisp/api.py +++ b/pymisp/api.py @@ -774,7 +774,7 @@ class PyMISP(object): def search_index(self, published=None, eventid=None, tag=None, datefrom=None, dateuntil=None, eventinfo=None, threatlevel=None, distribution=None, - analysis=None, attribute=None, org=None): + analysis=None, attribute=None, org=None, normalize=False): """Search only at the index level. Use ! infront of value as NOT, default OR :param published: Published (0,1) @@ -787,6 +787,7 @@ class PyMISP(object): :param distribution: Distribution level(s) (0,1,2,3) | str or list :param analysis: Analysis level(s) (0,1,2) | str or list :param org: Organisation(s) | str or list + :param normalize: Normalize output | True or False """ allowed = {'published': published, 'eventid': eventid, 'tag': tag, 'Dateuntil': dateuntil, 'Datefrom': datefrom, 'eventinfo': eventinfo, 'threatlevel': threatlevel, @@ -812,7 +813,14 @@ class PyMISP(object): session = self.__prepare_session() url = urljoin(self.root_url, buildup_url) response = session.post(url, data=json.dumps(to_post)) - return self._check_response(response) + res = self._check_response(response) + if normalize: + to_return = {'response': []} + for elem in res['response']: + tmp = {'Event': elem} + to_return['response'].append(tmp) + res = to_return + return res def search_all(self, value): query = {'value': value, 'searchall': 1}