if __name__ == '__main__': parser = argparse.ArgumentParser(description='Show the evolution of trend of tags.') parser.add_argument("-d", "--days", type=int, required=True, help='') parser.add_argument("-s", "--begindate", required=True, help='format yyyy-mm-dd') parser.add_argument("-e", "--enddate", required=True, help='format yyyy-mm-dd') args = parser.parse_args() misp = PyMISP(misp_url, misp_key, misp_verifycert) result = misp.search(date_from=args.begindate, date_to=args.enddate, metadata=False) # Getting data if 'response' in result: events = tools.eventsListBuildFromArray(result) NbTags = [] dates = [] enddate = date_tools.toDatetime(args.enddate) begindate = date_tools.toDatetime(args.begindate) for i in range(round(date_tools.days_between(enddate, begindate)/args.days)): begindate = date_tools.getNDaysBefore(enddate, args.days) eventstemp = tools.selectInRange(events, begindate, enddate) if eventstemp is not None: for event in eventstemp.iterrows(): if 'Tag' in event[1]: dates.append(enddate) if isinstance(event[1]['Tag'], list): NbTags.append(len(event[1]['Tag'])) else:
result = misp.search(last='{}d'.format(args.days), metadata=True) tools.checkDateConsistancy(args.begindate, args.enddate, tools.getLastdate(args.days)) if args.begindate is None: args.begindate = tools.getLastdate(args.days) else: args.begindate = tools.setBegindate(tools.toDatetime(args.begindate), tools.getLastdate(args.days)) if args.enddate is None: args.enddate = datetime.now() else: args.enddate = tools.setEnddate(tools.toDatetime(args.enddate)) if 'response' in result: events = tools.selectInRange(tools.eventsListBuildFromArray(result), begin=args.begindate, end=args.enddate) tags = tools.tagsListBuild(events) result = tools.getNbOccurenceTags(tags) else: result = 'There is no event during the studied period' text = 'Studied pediod: from ' if args.begindate is None: text = text + '1970-01-01' else: text = text + str(args.begindate.date()) text = text + ' to ' if args.enddate is None: text = text + str(datetime.now().date()) else: text = text + str(args.enddate.date())
args.days = 7 download_last(misp, '{}d'.format(args.days)) tools.checkDateConsistancy(args.begindate, args.enddate, tools.getLastdate(args.days)) if args.begindate is None: args.begindate = tools.getLastdate(args.days) else: args.begindate = tools.setBegindate(tools.toDatetime(args.begindate), tools.getLastdate(args.days)) if args.enddate is None: args.enddate = datetime.now() else: args.enddate = tools.setEnddate(tools.toDatetime(args.enddate)) Events = tools.eventsListBuildFromArray('data') TotalEvents = tools.getNbitems(Events) Tags = tools.tagsListBuild(Events) result = tools.getNbOccurenceTags(Tags) TotalTags = tools.getNbitems(Tags) Events = tools.selectInRange(Events, begin=args.begindate, end=args.enddate) TotalPeriodEvents = tools.getNbitems(Events) Tags = tools.tagsListBuild(Events) result = tools.getNbOccurenceTags(Tags) TotalPeriodTags = tools.getNbitems(Tags) text = 'Studied pediod: from ' if args.begindate is None: text = text + '1970-01-01' else:
tools.checkDateConsistancy(args.begindate, args.enddate, tools.getLastdate(args.days)) if args.begindate is None: args.begindate = tools.getLastdate(args.days) else: args.begindate = tools.setBegindate(tools.toDatetime(args.begindate), tools.getLastdate(args.days)) if args.enddate is None: args.enddate = datetime.now() else: args.enddate = tools.setEnddate(tools.toDatetime(args.enddate)) events = tools.selectInRange(tools.eventsListBuildFromArray(result), begin=args.begindate, end=args.enddate) tags = tools.tagsListBuild(events) result = tools.getNbOccurenceTags(tags) text = 'Studied pediod: from ' if args.begindate is None: text = text + '1970-01-01' else: text = text + str(args.begindate.date()) text = text + ' to ' if args.enddate is None: text = text + str(datetime.now().date()) else: text = text + str(args.enddate.date())
"-f", "--function", required=True, help= "The parameter can be either set to \"last\" or \"searchall\". If the parameter is not valid, \"last\" will be the default setting." ) parser.add_argument( "-a", "--argument", required=True, help= "if function is \"last\", time can be defined in days, hours, minutes (for example 5d or 12h or 30m). Otherwise, this argument is the string to search" ) args = parser.parse_args() misp = init(misp_url, misp_key) if args.function == "searchall": searchall(misp, args.argument, misp_url) else: download_last(misp, args.argument) Events = tools.eventsListBuildFromArray('data') Attributes = tools.attributesListBuild(Events) temp = tools.getNbAttributePerEventCategoryType(Attributes) temp = temp.groupby(level=['category', 'type']).sum() tools.createTreemap(temp, 'Attributes Distribution', 'attribute_treemap.svg', 'attribute_table.html')