Add uuid serch with pymisp

pull/35/head
Tristan METAYER 2017-01-04 11:23:18 +01:00
parent 6db19ace9e
commit bfb9fd5db3
1 changed files with 20 additions and 1 deletions

View File

@ -368,6 +368,19 @@ class PyMISP(object):
return self._check_response(response) return self._check_response(response)
def _valid_uuid(self,uuid):
"""
Test valid uuid générate by CakePhp
CakeText::uuid follow RFC 4122
- the third group must start with a 4,
- the fourth group must start with 8, 9, a or b.
:param uuid: A UUID to validate
"""
regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I)
match = regex.match(uuid)
return bool(match)
# ##### File attributes ##### # ##### File attributes #####
def _send_attributes(self, event, attributes, proposal=False): def _send_attributes(self, event, attributes, proposal=False):
@ -732,7 +745,7 @@ class PyMISP(object):
def search(self, values=None, not_values=None, type_attribute=None, def search(self, values=None, not_values=None, type_attribute=None,
category=None, org=None, tags=None, not_tags=None, date_from=None, category=None, org=None, tags=None, not_tags=None, date_from=None,
date_to=None, last=None): date_to=None, last=None, uuid=None):
""" """
Search via the Rest API Search via the Rest API
@ -746,6 +759,7 @@ class PyMISP(object):
:param date_from: First date :param date_from: First date
:param date_to: Last date :param date_to: Last date
:param last: Last updated events (for example 5d or 12h or 30m) :param last: Last updated events (for example 5d or 12h or 30m)
:param uuid: A uuid valideted
""" """
val = self.__prepare_rest_search(values, not_values).replace('/', '|') val = self.__prepare_rest_search(values, not_values).replace('/', '|')
@ -773,6 +787,11 @@ class PyMISP(object):
query['to'] = date_to query['to'] = date_to
if last is not None: if last is not None:
query['last'] = last query['last'] = last
if uuid is not None:
if self._valid_uuid(uuid):
query['uuid'] = uuid
else:
return {'error': 'You must enter a valid uuid.'}
session = self.__prepare_session('json') session = self.__prepare_session('json')
return self.__query(session, 'restSearch/download', query) return self.__query(session, 'restSearch/download', query)