diff --git a/examples/copy_list.py b/examples/copy_list.py index 074403a..b7a1a55 100644 --- a/examples/copy_list.py +++ b/examples/copy_list.py @@ -18,7 +18,7 @@ destination = None def init(cert_to_priv=True): global source global destination - print cert_to_priv + print(cert_to_priv) if cert_to_priv: source = PyMISP(url_cert, cert, cert_cert, 'xml') destination = PyMISP(url_priv, priv, cert_priv, 'xml') @@ -63,22 +63,22 @@ def loop_copy(): def copy(eventid): eventid = eventid.strip() if len(eventid) == 0 or not eventid.isdigit(): - print 'empty line or NaN.' + print('empty line or NaN.') return eventid = int(eventid) - print eventid, 'copying...' + print(eventid, 'copying...') r = copy_event(eventid) if r.status_code >= 400: loc = r.headers['location'] if loc is not None: event_to_update = loc.split('/')[-1] - print'updating', event_to_update + print('updating', event_to_update) r = update_event(eventid, event_to_update) if r.status_code >= 400: - print r.status_code, r.headers + print(r.status_code, r.headers) else: - print r.status_code, r.headers - print eventid, 'done.' + print(r.status_code, r.headers) + print(eventid, 'done.') def export_our_org(): diff --git a/examples/get_network_activity.py b/examples/get_network_activity.py index 29633f5..f3be10f 100755 --- a/examples/get_network_activity.py +++ b/examples/get_network_activity.py @@ -70,7 +70,7 @@ def get_event(event_id): else: continue else: - print "Not a valid ID" + print("Not a valid ID") return @@ -103,16 +103,16 @@ def print_events(): if app_ip_src: for ip in network_ip_src: - print ip[0] + print(ip[0]) if app_ip_dst: for ip in network_ip_dst: - print ip[0] + print(ip[0]) if app_domain: for ip in network_domain: - print ip[0] + print(ip[0]) if app_hostname: for ip in network_hostname: - print ip[0] + print(ip[0]) if __name__ == '__main__': @@ -158,4 +158,4 @@ if __name__ == '__main__': get_event(event_id.strip()) print_events() else: - print "No filename given, stopping." + print("No filename given, stopping.") diff --git a/pymisp/__init__.py b/pymisp/__init__.py index 1c09d31..e4c98cb 100644 --- a/pymisp/__init__.py +++ b/pymisp/__init__.py @@ -1 +1 @@ -from api import PyMISP +from .api import PyMISP diff --git a/pymisp/api.py b/pymisp/api.py index b7bf979..b02e28b 100644 --- a/pymisp/api.py +++ b/pymisp/api.py @@ -45,7 +45,7 @@ class PyMISP(object): session.headers.update( {'Authorization': self.key, 'Accept': 'application/' + out, - 'content-type': 'text/' + out}) + 'content-type': 'application/' + out}) return session def __query(self, session, path, query): @@ -53,7 +53,7 @@ class PyMISP(object): return query url = self.rest.format(path) query = {'request': query} - print json.dumps(query) + print(json.dumps(query)) r = session.post(url, data=json.dumps(query)) return r.json() @@ -66,7 +66,7 @@ class PyMISP(object): Warning, there's a limit on the number of results """ session = self.__prepare_session() - return session.get(self.rest) + return session.get(self.url) def get_event(self, event_id): """ @@ -81,20 +81,32 @@ class PyMISP(object): """ Add a new event - :param event: Event object to add + :param event: Event as JSON object / string or XML to add """ session = self.__prepare_session() - return session.post(self.url, data=event) + if self.out_type == 'json': + if isinstance(event, basestring): + return session.post(self.url, data=event) + else: + return session.post(self.url, data=json.dumps(event)) + else: + return session.post(self.url, data=event) def update_event(self, event_id, event): """ Update an event :param event_id: Event id to update - :param event: Elements to add + :param event: Event as JSON object / string or XML to add """ session = self.__prepare_session() - return session.post(self.rest.format(event_id), data=event) + if self.out_type == 'json': + if isinstance(event, basestring): + return session.post(self.rest.format(event_id), data=event) + else: + return session.post(self.rest.format(event_id), data=json.dumps(event)) + else: + return session.post(self.rest.format(event_id), data=event) def delete_event(self, event_id): """ @@ -196,6 +208,24 @@ class PyMISP(object): session = self.__prepare_session('xml') return session.get(xml) + def download_all_suricata(self): + """ + Download all suricata rules events. + """ + suricata_rules = self.url + '/nids/suricata/download' + session = self.__prepare_session('rules') + return session.get(suricata_rules) + + def download_suricata_rule_event(self, event_id): + """ + Download one suricata rule event. + + :param event_id: ID of the event to download (same as get) + """ + template = self.url + '/nids/suricata/download/{}' + session = self.__prepare_session('rules') + return session.get(template.format(event_id)) + def download(self, event_id, with_attachement=False): """ Download one event in XML