diff options
author | ben | 2025-07-17 19:59:15 +0200 |
---|---|---|
committer | ben | 2025-07-17 19:59:15 +0200 |
commit | d7d31b719f74c67177613e7a6d8b5568c287f086 (patch) | |
tree | 56ac5a647ea12f780009fb05c12262b706468bc4 /data/arsenal_parser.py | |
parent | 9624fd0e29677094a96bf373108551b0a9a21506 (diff) | |
download | fms-d7d31b719f74c67177613e7a6d8b5568c287f086.tar.gz fms-d7d31b719f74c67177613e7a6d8b5568c287f086.tar.bz2 fms-d7d31b719f74c67177613e7a6d8b5568c287f086.tar.xz |
Removed and refactored the database to import data directly from Arsenal.
Diffstat (limited to 'data/arsenal_parser.py')
-rwxr-xr-x | data/arsenal_parser.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/data/arsenal_parser.py b/data/arsenal_parser.py new file mode 100755 index 0000000..e26c774 --- /dev/null +++ b/data/arsenal_parser.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import sys +import yaml + +if len(sys.argv) < 2: + script = sys.argv[0] + print(f"Usage: {script} <arsenal_data_file>") + exit(1) + +commands = [] +cmd = "" +tags = "pentest" +lang = "" +desc = "" +with open(sys.argv[1], "r") as f: + in_code_block = False + for line in f.readlines(): + if line.startswith("% "): + tags = line[2:].strip() + elif line.startswith("## "): + desc = line[3:].strip() + elif line.startswith("#plateform/"): + plateform = "".join(line[11:].strip().split(" ")[0]) + if plateform == "linux": + lang = "sh" + elif plateform == "windows": + lang = "powershell" + elif line.startswith("```"): + in_code_block = not in_code_block + elif in_code_block: + if "arsenal" not in tags and "internal" not in tags: + cmd = line.strip().replace("\n","") + if len(cmd) > 0 and len(desc) > 0 and len(lang) > 0: + entry = {} + entry["cmd"] = cmd + entry["tags"] = tags + entry["lang"] = lang + entry["desc"] = desc + commands.append(entry) +if len(commands) > 0: + print(yaml.safe_dump(commands,width=1000)) |