59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
| import json
 | |
| import requests
 | |
| 
 | |
| debug = False
 | |
| galaxy_url = 'https://raw.githubusercontent.com/MISP/misp-galaxy/master/clusters/'
 | |
| elements = ['tools.json', 'threat-actors.json']
 | |
| # elements = ['threat-actor-tools.json']
 | |
| 
 | |
| taxonomy = {}
 | |
| taxonomy['namespace'] = 'misp-galaxy'
 | |
| taxonomy['description'] = 'Elements from the misp-galaxy as taxonomy (temporary measure)'
 | |
| taxonomy['version'] = 1  # FIXME - this should be incremented manually
 | |
| 
 | |
| taxonomy['predicates'] = []
 | |
| taxonomy['values'] = []
 | |
| 
 | |
| 
 | |
| for element in elements:
 | |
|     g_element = requests.get(galaxy_url + element).json()
 | |
| 
 | |
|     p_description = g_element['description']
 | |
|     if element.endswith('s.json'):
 | |
|         p_value = element[:-6]
 | |
|     elif element.endswith('-vocabulary.json'):
 | |
|         p_value = element[:-16]
 | |
|     else:
 | |
|         p_value = element
 | |
| 
 | |
|     taxonomy['predicates'].append({'value': p_value, 'expanded': p_description})
 | |
| 
 | |
|     t_value = {}
 | |
|     t_value['predicate'] = p_value
 | |
|     t_value['entry'] = []
 | |
|     for g_value in g_element['values']:
 | |
|         item = {}
 | |
|         item['value'] = g_value['value']
 | |
|         item['expanded'] = g_value['value']
 | |
|         if 'description' in g_value:
 | |
|             item['description'] = g_value['description']
 | |
|         t_value['entry'].append(item)
 | |
| 
 | |
|         # if 'synonyms' in g_value:
 | |
|         #     for g_value_synonym in g_value['synonyms']:
 | |
|         #         item_s = dict(item)
 | |
|         #         item_s['value'] = g_value_synonym
 | |
|         #         item_s['expanded'] = g_value_synonym
 | |
|         #         t_value['entry'].append(item_s)
 | |
|     taxonomy['values'].append(t_value)
 | |
| 
 | |
| file_out = '../../misp-galaxy/machinetag.json'
 | |
| with open(file_out, 'w') as f:
 | |
|     f.write(json.dumps(taxonomy, sort_keys=True, indent=4, separators=(',', ': ')))
 | |
| print("JSON saved to " + file_out)
 | |
| 
 | |
| 
 | |
| # t = Taxonomy(taxonomy)
 | |
| # with open('out-t.json', 'w') as f:
 | |
| #     f.write(json.dumps(t._json(), sort_keys=True, indent=4, separators=(',', ': ')))
 |