From 72a484ca32a1912e6b10e2625d54e012811e88f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vinot?= Date: Tue, 13 Jun 2017 15:37:39 +0200 Subject: [PATCH] Add support for freetext import in the API. --- examples/freetext.py | 22 ++++++++++++++++++++++ examples/freetext.txt | 5 +++++ pymisp/api.py | 20 ++++++++++++++++++-- 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100755 examples/freetext.py create mode 100644 examples/freetext.txt diff --git a/examples/freetext.py b/examples/freetext.py new file mode 100755 index 0000000..de239bf --- /dev/null +++ b/examples/freetext.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from pymisp import PyMISP +from keys import misp_url, misp_key +import argparse + +from io import open + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description="Update a MISP event.") + parser.add_argument("-e", "--event", required=True, help="Event ID to update.") + parser.add_argument("-i", "--input", required=True, help="Input file") + + args = parser.parse_args() + + pymisp = PyMISP(misp_url, misp_key) + + with open(args.input, 'r') as f: + result = pymisp.freetext(args.event, f.read()) + print(result) diff --git a/examples/freetext.txt b/examples/freetext.txt new file mode 100644 index 0000000..75f5f34 --- /dev/null +++ b/examples/freetext.txt @@ -0,0 +1,5 @@ +8.8.8.8 + +google.fr + +https://gmail.com diff --git a/pymisp/api.py b/pymisp/api.py index d49cf4d..f1c67f3 100644 --- a/pymisp/api.py +++ b/pymisp/api.py @@ -764,6 +764,22 @@ class PyMISP(object): session = self.__prepare_session() return self.__query(session, 'edit/{}'.format(attribute_uuid), query, controller='attributes') + # ############################## + # ###### Attribute update ###### + # ############################## + + def freetext(self, event_id, string, adhereToWarninglists=False, distribution=None): + query = {"value": string} + wl_params = [False, True, 'soft'] + if adhereToWarninglists not in wl_params: + raise Exception('Invalid parameter, adhereToWarninglists Can only be {}'.format(', '.join(wl_params))) + if adhereToWarninglists: + query['adhereToWarninglists'] = adhereToWarninglists + if distribution is not None: + query['distribution'] = distribution + session = self.__prepare_session() + return self.__query(session, 'freeTextImport/{}'.format(event_id), query, controller='events') + # ############################## # ######## REST Search ######### # ############################## @@ -1478,13 +1494,13 @@ class PyMISP(object): # ########################### # ######## Feed ######### # ########################### - + def fetch_feed(self, feed_id): session = self.__prepare_session() url = urljoin(self.root_url, 'feeds/fetchFromFeed/{}'.format(feed_id)) response = session.get(url) return self._check_response(response) - + # ########################### # ####### Deprecated ######## # ###########################