Skip to content

Instantly share code, notes, and snippets.

@keithmccammon
Created November 22, 2017 06:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save keithmccammon/3e51bf473b46e3a6f761b1e8e1c8af1f to your computer and use it in GitHub Desktop.
Save keithmccammon/3e51bf473b46e3a6f761b1e8e1c8af1f to your computer and use it in GitHub Desktop.
Download MITRE ATT&CK techniques via Python
#!/usr/bin/env python
import json
import pprint
import requests
if __name__ == '__main__':
request_all = requests.get('https://attack.mitre.org/api.php?action=ask&format=json&query=%5B%5BCategory%3ATechnique%5D%5D%7C%3FHas%20tactic%7C%3FHas%20ID%7C%3FHas%20display%20name%7Climit%3D9999')
all_techniques = json.loads(request_all.text)['query']['results']
for technique, data in all_techniques.items():
for v in data.values():
if type(v) is dict:
request_technique = requests.get('https://attack.mitre.org/api.php?action=ask&format=json&query=%5B%5BCategory%3ATechnique%5D%5D%5B%5BHas%20ID%3A%3A{0}%5D%5D%7C%3FHas%20tactic%7C%3FHas%20ID%7C%3FHas%20display%20name%7C%3FHas%20technical%20description%7Climit%3D9999'.format(v['Has ID'][0]))
technique_detail = json.loads(request_technique.text)['query']['results']
for details in technique_detail.values():
pprint.pprint(details)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment