command-vault-mcp 0.8.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ """Command Vault MCP - Security command search from penetration testing writeups."""
2
+
3
+ __version__ = "0.5.0"
@@ -0,0 +1,427 @@
1
+ """Pre-defined categories and tool mappings for Command Vault."""
2
+
3
+ # =============================================================================
4
+ # CATEGORIES
5
+ # =============================================================================
6
+ CATEGORIES = {
7
+ # Core categories (Boxes)
8
+ "recon": "Reconnaissance & Scanning",
9
+ "web": "Web Application Testing",
10
+ "ad": "Active Directory",
11
+ "smb": "SMB/File Shares",
12
+ "wifi": "Wireless Attacks",
13
+ "privesc": "Privilege Escalation",
14
+ "creds": "Credential Attacks",
15
+ "shells": "Shells & Payloads",
16
+ "pivot": "Pivoting & Tunneling",
17
+ "database": "Database Access",
18
+
19
+ # Challenge-specific
20
+ "pwn": "Binary Exploitation",
21
+ "reversing": "Reverse Engineering",
22
+ "crypto_tools": "Cryptographic Analysis",
23
+ "mobile": "Mobile Security",
24
+ "emulation": "CPU Emulation",
25
+ "blockchain": "Smart Contract Analysis",
26
+ "hardware": "Hardware Hacking",
27
+
28
+ # DFIR/Sherlock
29
+ "dfir": "Digital Forensics",
30
+ "log_analysis": "Log Analysis (SIEM)",
31
+ "network_forensics": "Network Forensics",
32
+ "disk_forensics": "Disk Artifact Analysis",
33
+ "memory_forensics": "Memory Forensics",
34
+ "malware": "Malware Analysis",
35
+ "cloud_forensics": "Cloud Investigation",
36
+
37
+ # General
38
+ "osint": "Open Source Intelligence",
39
+ "misc": "Miscellaneous",
40
+ }
41
+
42
+
43
+ # =============================================================================
44
+ # TOOL TO CATEGORY MAPPING
45
+ # =============================================================================
46
+ TOOL_CATEGORIES = {
47
+ # Recon
48
+ "nmap": "recon",
49
+ "masscan": "recon",
50
+ "rustscan": "recon",
51
+ "ping": "recon",
52
+ "traceroute": "recon",
53
+ "whatweb": "recon",
54
+ "wafw00f": "recon",
55
+
56
+ # Web
57
+ "gobuster": "web",
58
+ "ffuf": "web",
59
+ "feroxbuster": "web",
60
+ "dirb": "web",
61
+ "dirsearch": "web",
62
+ "wfuzz": "web",
63
+ "nikto": "web",
64
+ "sqlmap": "web",
65
+ "curl": "web",
66
+ "wget": "web",
67
+ "httpx": "web",
68
+ "nuclei": "web",
69
+ "burpsuite": "web",
70
+ "wpscan": "web",
71
+ "droopescan": "web",
72
+ "joomscan": "web",
73
+
74
+ # Active Directory
75
+ "bloodhound-python": "ad",
76
+ "bloodhound": "ad",
77
+ "crackmapexec": "ad",
78
+ "cme": "ad",
79
+ "netexec": "ad",
80
+ "nxc": "ad",
81
+ "certipy": "ad",
82
+ "certipy-ad": "ad",
83
+ "rubeus": "ad",
84
+ "mimikatz": "ad",
85
+ "pypykatz": "ad",
86
+ "ldapsearch": "ad",
87
+ "ldapdomaindump": "ad",
88
+ "windapsearch": "ad",
89
+ "adidnsdump": "ad",
90
+ "bloodyad": "ad",
91
+ "ldeep": "ad",
92
+ "petitpotam": "ad",
93
+ "coercer": "ad",
94
+ "krbrelayx": "ad",
95
+ "targetedkerberoast": "ad",
96
+ "gettgtpkinit": "ad",
97
+ "getnthash": "ad",
98
+ "dacledit": "ad",
99
+ "owneredit": "ad",
100
+ "addcomputer": "ad",
101
+
102
+ # Impacket tools
103
+ "impacket-psexec": "ad",
104
+ "impacket-wmiexec": "ad",
105
+ "impacket-smbexec": "ad",
106
+ "impacket-atexec": "ad",
107
+ "impacket-dcomexec": "ad",
108
+ "impacket-secretsdump": "ad",
109
+ "impacket-getTGT": "ad",
110
+ "impacket-getST": "ad",
111
+ "impacket-GetNPUsers": "ad",
112
+ "impacket-GetUserSPNs": "ad",
113
+ "impacket-ticketer": "ad",
114
+ "impacket-ntlmrelayx": "ad",
115
+ "impacket-smbserver": "smb",
116
+ "impacket-mssqlclient": "database",
117
+ "impacket-reg": "ad",
118
+ "impacket-addcomputer": "ad",
119
+ "impacket-rbcd": "ad",
120
+ "impacket-describeTicket": "ad",
121
+ "impacket-changepasswd": "ad",
122
+ "impacket-lookupsid": "ad",
123
+ "impacket-samrdump": "ad",
124
+
125
+ # SMB
126
+ "smbmap": "smb",
127
+ "smbclient": "smb",
128
+ "enum4linux": "smb",
129
+ "enum4linux-ng": "smb",
130
+ "smbget": "smb",
131
+ "rpcclient": "smb",
132
+ "nbtstat": "smb",
133
+ "nbtscan": "smb",
134
+
135
+ # WiFi
136
+ "aircrack-ng": "wifi",
137
+ "airodump-ng": "wifi",
138
+ "aireplay-ng": "wifi",
139
+ "airmon-ng": "wifi",
140
+ "airdecap-ng": "wifi",
141
+ "eaphammer": "wifi",
142
+ "hostapd": "wifi",
143
+ "wpa_supplicant": "wifi",
144
+ "bettercap": "wifi",
145
+ "hcxdumptool": "wifi",
146
+ "hcxpcapngtool": "wifi",
147
+
148
+ # Privilege Escalation
149
+ "linpeas": "privesc",
150
+ "winpeas": "privesc",
151
+ "pspy": "privesc",
152
+ "linux-exploit-suggester": "privesc",
153
+ "windows-exploit-suggester": "privesc",
154
+ "seatbelt": "privesc",
155
+ "sharphound": "privesc",
156
+ "powerup": "privesc",
157
+ "privesccheck": "privesc",
158
+ "sudo": "privesc",
159
+
160
+ # Credentials
161
+ "hashcat": "creds",
162
+ "john": "creds",
163
+ "hydra": "creds",
164
+ "medusa": "creds",
165
+ "patator": "creds",
166
+ "cewl": "creds",
167
+ "crunch": "creds",
168
+ "hash-identifier": "creds",
169
+ "nth": "creds",
170
+ "name-that-hash": "creds",
171
+ "secretsdump": "creds",
172
+ "ansible2john": "creds",
173
+ "ssh2john": "creds",
174
+ "zip2john": "creds",
175
+ "rar2john": "creds",
176
+ "keepass2john": "creds",
177
+ "pfx2john": "creds",
178
+ "office2john": "creds",
179
+
180
+ # Shells & Payloads
181
+ "msfvenom": "shells",
182
+ "msfconsole": "shells",
183
+ "nc": "shells",
184
+ "netcat": "shells",
185
+ "ncat": "shells",
186
+ "socat": "shells",
187
+ "rlwrap": "shells",
188
+ "pwncat": "shells",
189
+ "powercat": "shells",
190
+
191
+ # Pivoting
192
+ "chisel": "pivot",
193
+ "ligolo-ng": "pivot",
194
+ "ligolo": "pivot",
195
+ "sshuttle": "pivot",
196
+ "proxychains": "pivot",
197
+ "proxychains4": "pivot",
198
+ "ssh": "pivot",
199
+ "plink": "pivot",
200
+ "ngrok": "pivot",
201
+ "bore": "pivot",
202
+
203
+ # Database
204
+ "mysql": "database",
205
+ "psql": "database",
206
+ "mssqlclient.py": "database",
207
+ "odat": "database",
208
+ "sqlplus": "database",
209
+ "mongo": "database",
210
+ "redis-cli": "database",
211
+
212
+ # PWN / Binary Exploitation
213
+ "gdb": "pwn",
214
+ "pwndbg": "pwn",
215
+ "gef": "pwn",
216
+ "peda": "pwn",
217
+ "ropper": "pwn",
218
+ "ROPgadget": "pwn",
219
+ "one_gadget": "pwn",
220
+ "checksec": "pwn",
221
+ "patchelf": "pwn",
222
+ "pwn": "pwn",
223
+ "pwntools": "pwn",
224
+
225
+ # Reversing
226
+ "ghidra": "reversing",
227
+ "ida": "reversing",
228
+ "radare2": "reversing",
229
+ "r2": "reversing",
230
+ "rizin": "reversing",
231
+ "cutter": "reversing",
232
+ "strings": "reversing",
233
+ "file": "reversing",
234
+ "objdump": "reversing",
235
+ "readelf": "reversing",
236
+ "nm": "reversing",
237
+ "ltrace": "reversing",
238
+ "strace": "reversing",
239
+ "binwalk": "reversing",
240
+ "upx": "reversing",
241
+ "uncompyle6": "reversing",
242
+ "pycdc": "reversing",
243
+ "dnspy": "reversing",
244
+ "ilspy": "reversing",
245
+ "jd-gui": "reversing",
246
+ "jadx": "reversing",
247
+ "jadx-gui": "reversing",
248
+ "dex2jar": "reversing",
249
+ "apktool": "mobile",
250
+ "die": "reversing",
251
+
252
+ # Mobile
253
+ "frida": "mobile",
254
+ "objection": "mobile",
255
+ "adb": "mobile",
256
+ "aapt": "mobile",
257
+
258
+ # Emulation
259
+ "unicorn": "emulation",
260
+ "keystone": "emulation",
261
+ "capstone": "emulation",
262
+ "qemu": "emulation",
263
+
264
+ # Crypto Tools
265
+ "openssl": "crypto_tools",
266
+ "gpg": "crypto_tools",
267
+ "ansible-vault": "crypto_tools",
268
+ "cyberchef": "crypto_tools",
269
+ "hashpump": "crypto_tools",
270
+ "rsactftool": "crypto_tools",
271
+
272
+ # DFIR
273
+ "volatility": "memory_forensics",
274
+ "volatility3": "memory_forensics",
275
+ "vol": "memory_forensics",
276
+ "vol3": "memory_forensics",
277
+ "rekall": "memory_forensics",
278
+ "aeskeyfind": "memory_forensics",
279
+
280
+ # Disk Forensics
281
+ "autopsy": "disk_forensics",
282
+ "sleuthkit": "disk_forensics",
283
+ "fls": "disk_forensics",
284
+ "icat": "disk_forensics",
285
+ "mmls": "disk_forensics",
286
+ "MFTECmd": "disk_forensics",
287
+ "PECmd": "disk_forensics",
288
+ "AmcacheParser": "disk_forensics",
289
+ "AppCompatCacheParser": "disk_forensics",
290
+ "ShellBagsExplorer": "disk_forensics",
291
+ "RegistryExplorer": "disk_forensics",
292
+ "KAPE": "disk_forensics",
293
+ "plaso": "disk_forensics",
294
+ "log2timeline": "disk_forensics",
295
+
296
+ # Network Forensics
297
+ "wireshark": "network_forensics",
298
+ "tshark": "network_forensics",
299
+ "tcpdump": "network_forensics",
300
+ "NetworkMiner": "network_forensics",
301
+ "zeek": "network_forensics",
302
+ "bro": "network_forensics",
303
+ "snort": "network_forensics",
304
+
305
+ # Log Analysis
306
+ "splunk": "log_analysis",
307
+ "chainsaw": "log_analysis",
308
+ "hayabusa": "log_analysis",
309
+ "evtxecmd": "log_analysis",
310
+ "logparser": "log_analysis",
311
+ "zircolite": "log_analysis",
312
+
313
+ # Malware Analysis
314
+ "pestudio": "malware",
315
+ "peview": "malware",
316
+ "x64dbg": "malware",
317
+ "x32dbg": "malware",
318
+ "ollydbg": "malware",
319
+ "procmon": "malware",
320
+ "process-monitor": "malware",
321
+ "yara": "malware",
322
+ "capa": "malware",
323
+ "floss": "malware",
324
+
325
+ # Cloud
326
+ "aws": "cloud_forensics",
327
+ "az": "cloud_forensics",
328
+ "gcloud": "cloud_forensics",
329
+ "kubectl": "cloud_forensics",
330
+
331
+ # OSINT
332
+ "theHarvester": "osint",
333
+ "sherlock": "osint",
334
+ "maltego": "osint",
335
+ "spiderfoot": "osint",
336
+ "recon-ng": "osint",
337
+ "amass": "osint",
338
+ "subfinder": "osint",
339
+ "assetfinder": "osint",
340
+ "sublist3r": "osint",
341
+
342
+ # Misc
343
+ "git": "misc",
344
+ "docker": "misc",
345
+ "python": "misc",
346
+ "python3": "misc",
347
+ "php": "misc",
348
+ "base64": "misc",
349
+ "xxd": "misc",
350
+ "hexdump": "misc",
351
+ "exiftool": "misc",
352
+ "steghide": "misc",
353
+ "stegseek": "misc",
354
+ "zsteg": "misc",
355
+ "foremost": "misc",
356
+ "evil-winrm": "shells",
357
+ "xfreerdp": "misc",
358
+ "rdesktop": "misc",
359
+ "vncviewer": "misc",
360
+ }
361
+
362
+
363
+ # =============================================================================
364
+ # TOOL ALIASES
365
+ # =============================================================================
366
+ TOOL_ALIASES = {
367
+ "cme": "crackmapexec",
368
+ "nxc": "netexec",
369
+ "bh": "bloodhound-python",
370
+ "vol": "volatility",
371
+ "vol3": "volatility3",
372
+ "r2": "radare2",
373
+ "nc": "netcat",
374
+ "ncat": "netcat",
375
+ }
376
+
377
+
378
+ # =============================================================================
379
+ # IMPACKET PREFIX DETECTION
380
+ # =============================================================================
381
+ TOOL_PREFIXES = [
382
+ "impacket-",
383
+ "aircrack-",
384
+ "airodump-",
385
+ "aireplay-",
386
+ "airmon-",
387
+ ]
388
+
389
+
390
+ def get_tool_category(tool_name: str) -> str:
391
+ """
392
+ Get category for a tool, handling aliases and prefixes.
393
+
394
+ Args:
395
+ tool_name: The tool name (e.g., 'nmap', 'impacket-psexec')
396
+
397
+ Returns:
398
+ Category name or 'misc' if unknown
399
+ """
400
+ # Normalize
401
+ tool_lower = tool_name.lower().strip()
402
+
403
+ # Check aliases first
404
+ if tool_lower in TOOL_ALIASES:
405
+ tool_lower = TOOL_ALIASES[tool_lower]
406
+
407
+ # Direct lookup
408
+ if tool_lower in TOOL_CATEGORIES:
409
+ return TOOL_CATEGORIES[tool_lower]
410
+
411
+ # Check prefixes
412
+ for prefix in TOOL_PREFIXES:
413
+ if tool_lower.startswith(prefix):
414
+ # Try full name first
415
+ if tool_lower in TOOL_CATEGORIES:
416
+ return TOOL_CATEGORIES[tool_lower]
417
+ # Otherwise use prefix category
418
+ prefix_tool = prefix.rstrip("-")
419
+ if prefix_tool in TOOL_CATEGORIES:
420
+ return TOOL_CATEGORIES[prefix_tool]
421
+
422
+ return "misc"
423
+
424
+
425
+ def get_category_description(category: str) -> str:
426
+ """Get description for a category."""
427
+ return CATEGORIES.get(category, "Miscellaneous")