souleyez 2.43.29__py3-none-any.whl → 2.43.32__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.
Files changed (356) hide show
  1. souleyez/__init__.py +1 -2
  2. souleyez/ai/__init__.py +21 -15
  3. souleyez/ai/action_mapper.py +249 -150
  4. souleyez/ai/chain_advisor.py +116 -100
  5. souleyez/ai/claude_provider.py +29 -28
  6. souleyez/ai/context_builder.py +80 -62
  7. souleyez/ai/executor.py +158 -117
  8. souleyez/ai/feedback_handler.py +136 -121
  9. souleyez/ai/llm_factory.py +27 -20
  10. souleyez/ai/llm_provider.py +4 -2
  11. souleyez/ai/ollama_provider.py +6 -9
  12. souleyez/ai/ollama_service.py +44 -37
  13. souleyez/ai/path_scorer.py +91 -76
  14. souleyez/ai/recommender.py +176 -144
  15. souleyez/ai/report_context.py +74 -73
  16. souleyez/ai/report_service.py +84 -66
  17. souleyez/ai/result_parser.py +222 -229
  18. souleyez/ai/safety.py +67 -44
  19. souleyez/auth/__init__.py +23 -22
  20. souleyez/auth/audit.py +36 -26
  21. souleyez/auth/engagement_access.py +65 -48
  22. souleyez/auth/permissions.py +14 -3
  23. souleyez/auth/session_manager.py +54 -37
  24. souleyez/auth/user_manager.py +109 -64
  25. souleyez/commands/audit.py +40 -43
  26. souleyez/commands/auth.py +35 -15
  27. souleyez/commands/deliverables.py +55 -50
  28. souleyez/commands/engagement.py +47 -28
  29. souleyez/commands/license.py +32 -23
  30. souleyez/commands/screenshots.py +36 -32
  31. souleyez/commands/user.py +82 -36
  32. souleyez/config.py +52 -44
  33. souleyez/core/credential_tester.py +87 -81
  34. souleyez/core/cve_mappings.py +179 -192
  35. souleyez/core/cve_matcher.py +162 -148
  36. souleyez/core/msf_auto_mapper.py +100 -83
  37. souleyez/core/msf_chain_engine.py +294 -256
  38. souleyez/core/msf_database.py +153 -70
  39. souleyez/core/msf_integration.py +679 -673
  40. souleyez/core/msf_rpc_client.py +40 -42
  41. souleyez/core/msf_rpc_manager.py +77 -79
  42. souleyez/core/msf_sync_manager.py +241 -181
  43. souleyez/core/network_utils.py +22 -15
  44. souleyez/core/parser_handler.py +34 -25
  45. souleyez/core/pending_chains.py +114 -63
  46. souleyez/core/templates.py +158 -107
  47. souleyez/core/tool_chaining.py +9592 -2879
  48. souleyez/core/version_utils.py +79 -94
  49. souleyez/core/vuln_correlation.py +136 -89
  50. souleyez/core/web_utils.py +33 -32
  51. souleyez/data/wordlists/ad_users.txt +378 -0
  52. souleyez/data/wordlists/api_endpoints_large.txt +769 -0
  53. souleyez/data/wordlists/home_dir_sensitive.txt +39 -0
  54. souleyez/data/wordlists/lfi_payloads.txt +82 -0
  55. souleyez/data/wordlists/passwords_brute.txt +1548 -0
  56. souleyez/data/wordlists/passwords_crack.txt +2479 -0
  57. souleyez/data/wordlists/passwords_spray.txt +386 -0
  58. souleyez/data/wordlists/subdomains_large.txt +5057 -0
  59. souleyez/data/wordlists/usernames_common.txt +694 -0
  60. souleyez/data/wordlists/web_dirs_large.txt +4769 -0
  61. souleyez/detection/__init__.py +1 -1
  62. souleyez/detection/attack_signatures.py +12 -17
  63. souleyez/detection/mitre_mappings.py +61 -55
  64. souleyez/detection/validator.py +97 -86
  65. souleyez/devtools.py +23 -10
  66. souleyez/docs/README.md +4 -4
  67. souleyez/docs/api-reference/cli-commands.md +2 -2
  68. souleyez/docs/developer-guide/adding-new-tools.md +562 -0
  69. souleyez/docs/user-guide/auto-chaining.md +30 -8
  70. souleyez/docs/user-guide/getting-started.md +1 -1
  71. souleyez/docs/user-guide/installation.md +26 -3
  72. souleyez/docs/user-guide/metasploit-integration.md +2 -2
  73. souleyez/docs/user-guide/rbac.md +1 -1
  74. souleyez/docs/user-guide/scope-management.md +1 -1
  75. souleyez/docs/user-guide/siem-integration.md +1 -1
  76. souleyez/docs/user-guide/tools-reference.md +1 -8
  77. souleyez/docs/user-guide/worker-management.md +1 -1
  78. souleyez/engine/background.py +1238 -535
  79. souleyez/engine/base.py +4 -1
  80. souleyez/engine/job_status.py +17 -49
  81. souleyez/engine/log_sanitizer.py +103 -77
  82. souleyez/engine/manager.py +38 -7
  83. souleyez/engine/result_handler.py +2198 -1550
  84. souleyez/engine/worker_manager.py +50 -41
  85. souleyez/export/evidence_bundle.py +72 -62
  86. souleyez/feature_flags/features.py +16 -20
  87. souleyez/feature_flags.py +5 -9
  88. souleyez/handlers/__init__.py +11 -0
  89. souleyez/handlers/base.py +188 -0
  90. souleyez/handlers/bash_handler.py +277 -0
  91. souleyez/handlers/bloodhound_handler.py +243 -0
  92. souleyez/handlers/certipy_handler.py +311 -0
  93. souleyez/handlers/crackmapexec_handler.py +486 -0
  94. souleyez/handlers/dnsrecon_handler.py +344 -0
  95. souleyez/handlers/enum4linux_handler.py +400 -0
  96. souleyez/handlers/evil_winrm_handler.py +493 -0
  97. souleyez/handlers/ffuf_handler.py +815 -0
  98. souleyez/handlers/gobuster_handler.py +1114 -0
  99. souleyez/handlers/gpp_extract_handler.py +334 -0
  100. souleyez/handlers/hashcat_handler.py +444 -0
  101. souleyez/handlers/hydra_handler.py +563 -0
  102. souleyez/handlers/impacket_getuserspns_handler.py +343 -0
  103. souleyez/handlers/impacket_psexec_handler.py +222 -0
  104. souleyez/handlers/impacket_secretsdump_handler.py +426 -0
  105. souleyez/handlers/john_handler.py +286 -0
  106. souleyez/handlers/katana_handler.py +425 -0
  107. souleyez/handlers/kerbrute_handler.py +298 -0
  108. souleyez/handlers/ldapsearch_handler.py +636 -0
  109. souleyez/handlers/lfi_extract_handler.py +464 -0
  110. souleyez/handlers/msf_auxiliary_handler.py +408 -0
  111. souleyez/handlers/msf_exploit_handler.py +380 -0
  112. souleyez/handlers/nikto_handler.py +413 -0
  113. souleyez/handlers/nmap_handler.py +821 -0
  114. souleyez/handlers/nuclei_handler.py +359 -0
  115. souleyez/handlers/nxc_handler.py +371 -0
  116. souleyez/handlers/rdp_sec_check_handler.py +353 -0
  117. souleyez/handlers/registry.py +288 -0
  118. souleyez/handlers/responder_handler.py +232 -0
  119. souleyez/handlers/service_explorer_handler.py +434 -0
  120. souleyez/handlers/smbclient_handler.py +344 -0
  121. souleyez/handlers/smbmap_handler.py +510 -0
  122. souleyez/handlers/smbpasswd_handler.py +296 -0
  123. souleyez/handlers/sqlmap_handler.py +1116 -0
  124. souleyez/handlers/theharvester_handler.py +601 -0
  125. souleyez/handlers/whois_handler.py +277 -0
  126. souleyez/handlers/wpscan_handler.py +554 -0
  127. souleyez/history.py +32 -16
  128. souleyez/importers/msf_importer.py +106 -75
  129. souleyez/importers/smart_importer.py +208 -147
  130. souleyez/integrations/siem/__init__.py +10 -10
  131. souleyez/integrations/siem/base.py +17 -18
  132. souleyez/integrations/siem/elastic.py +108 -122
  133. souleyez/integrations/siem/factory.py +207 -80
  134. souleyez/integrations/siem/googlesecops.py +146 -154
  135. souleyez/integrations/siem/rule_mappings/__init__.py +1 -1
  136. souleyez/integrations/siem/rule_mappings/wazuh_rules.py +8 -5
  137. souleyez/integrations/siem/sentinel.py +107 -109
  138. souleyez/integrations/siem/splunk.py +246 -212
  139. souleyez/integrations/siem/wazuh.py +65 -71
  140. souleyez/integrations/wazuh/__init__.py +5 -5
  141. souleyez/integrations/wazuh/client.py +70 -93
  142. souleyez/integrations/wazuh/config.py +85 -57
  143. souleyez/integrations/wazuh/host_mapper.py +28 -36
  144. souleyez/integrations/wazuh/sync.py +78 -68
  145. souleyez/intelligence/__init__.py +4 -5
  146. souleyez/intelligence/correlation_analyzer.py +309 -295
  147. souleyez/intelligence/exploit_knowledge.py +661 -623
  148. souleyez/intelligence/exploit_suggestions.py +159 -139
  149. souleyez/intelligence/gap_analyzer.py +132 -97
  150. souleyez/intelligence/gap_detector.py +251 -214
  151. souleyez/intelligence/sensitive_tables.py +266 -129
  152. souleyez/intelligence/service_parser.py +137 -123
  153. souleyez/intelligence/surface_analyzer.py +407 -268
  154. souleyez/intelligence/target_parser.py +159 -162
  155. souleyez/licensing/__init__.py +6 -6
  156. souleyez/licensing/validator.py +17 -19
  157. souleyez/log_config.py +79 -54
  158. souleyez/main.py +1505 -687
  159. souleyez/migrations/fix_job_counter.py +16 -14
  160. souleyez/parsers/bloodhound_parser.py +41 -39
  161. souleyez/parsers/crackmapexec_parser.py +178 -111
  162. souleyez/parsers/dalfox_parser.py +72 -77
  163. souleyez/parsers/dnsrecon_parser.py +103 -91
  164. souleyez/parsers/enum4linux_parser.py +183 -153
  165. souleyez/parsers/ffuf_parser.py +29 -25
  166. souleyez/parsers/gobuster_parser.py +301 -41
  167. souleyez/parsers/hashcat_parser.py +324 -79
  168. souleyez/parsers/http_fingerprint_parser.py +350 -103
  169. souleyez/parsers/hydra_parser.py +131 -111
  170. souleyez/parsers/impacket_parser.py +231 -178
  171. souleyez/parsers/john_parser.py +98 -86
  172. souleyez/parsers/katana_parser.py +316 -0
  173. souleyez/parsers/msf_parser.py +943 -498
  174. souleyez/parsers/nikto_parser.py +346 -65
  175. souleyez/parsers/nmap_parser.py +262 -174
  176. souleyez/parsers/nuclei_parser.py +40 -44
  177. souleyez/parsers/responder_parser.py +26 -26
  178. souleyez/parsers/searchsploit_parser.py +74 -74
  179. souleyez/parsers/service_explorer_parser.py +279 -0
  180. souleyez/parsers/smbmap_parser.py +180 -124
  181. souleyez/parsers/sqlmap_parser.py +434 -308
  182. souleyez/parsers/theharvester_parser.py +75 -57
  183. souleyez/parsers/whois_parser.py +135 -94
  184. souleyez/parsers/wpscan_parser.py +278 -190
  185. souleyez/plugins/afp.py +44 -36
  186. souleyez/plugins/afp_brute.py +114 -46
  187. souleyez/plugins/ard.py +48 -37
  188. souleyez/plugins/bloodhound.py +95 -61
  189. souleyez/plugins/certipy.py +303 -0
  190. souleyez/plugins/crackmapexec.py +186 -85
  191. souleyez/plugins/dalfox.py +120 -59
  192. souleyez/plugins/dns_hijack.py +146 -41
  193. souleyez/plugins/dnsrecon.py +97 -61
  194. souleyez/plugins/enum4linux.py +91 -66
  195. souleyez/plugins/evil_winrm.py +291 -0
  196. souleyez/plugins/ffuf.py +166 -90
  197. souleyez/plugins/firmware_extract.py +133 -29
  198. souleyez/plugins/gobuster.py +387 -190
  199. souleyez/plugins/gpp_extract.py +393 -0
  200. souleyez/plugins/hashcat.py +100 -73
  201. souleyez/plugins/http_fingerprint.py +854 -267
  202. souleyez/plugins/hydra.py +566 -200
  203. souleyez/plugins/impacket_getnpusers.py +117 -69
  204. souleyez/plugins/impacket_psexec.py +84 -64
  205. souleyez/plugins/impacket_secretsdump.py +103 -69
  206. souleyez/plugins/impacket_smbclient.py +89 -75
  207. souleyez/plugins/john.py +86 -69
  208. souleyez/plugins/katana.py +313 -0
  209. souleyez/plugins/kerbrute.py +237 -0
  210. souleyez/plugins/lfi_extract.py +541 -0
  211. souleyez/plugins/macos_ssh.py +117 -48
  212. souleyez/plugins/mdns.py +35 -30
  213. souleyez/plugins/msf_auxiliary.py +253 -130
  214. souleyez/plugins/msf_exploit.py +239 -161
  215. souleyez/plugins/nikto.py +134 -78
  216. souleyez/plugins/nmap.py +275 -91
  217. souleyez/plugins/nuclei.py +180 -89
  218. souleyez/plugins/nxc.py +285 -0
  219. souleyez/plugins/plugin_base.py +35 -36
  220. souleyez/plugins/plugin_template.py +13 -5
  221. souleyez/plugins/rdp_sec_check.py +130 -0
  222. souleyez/plugins/responder.py +112 -71
  223. souleyez/plugins/router_http_brute.py +76 -65
  224. souleyez/plugins/router_ssh_brute.py +118 -41
  225. souleyez/plugins/router_telnet_brute.py +124 -42
  226. souleyez/plugins/routersploit.py +91 -59
  227. souleyez/plugins/routersploit_exploit.py +77 -55
  228. souleyez/plugins/searchsploit.py +91 -77
  229. souleyez/plugins/service_explorer.py +1160 -0
  230. souleyez/plugins/smbmap.py +122 -72
  231. souleyez/plugins/smbpasswd.py +215 -0
  232. souleyez/plugins/sqlmap.py +301 -113
  233. souleyez/plugins/theharvester.py +127 -75
  234. souleyez/plugins/tr069.py +79 -57
  235. souleyez/plugins/upnp.py +65 -47
  236. souleyez/plugins/upnp_abuse.py +73 -55
  237. souleyez/plugins/vnc_access.py +129 -42
  238. souleyez/plugins/vnc_brute.py +109 -38
  239. souleyez/plugins/whois.py +77 -58
  240. souleyez/plugins/wpscan.py +173 -69
  241. souleyez/reporting/__init__.py +2 -1
  242. souleyez/reporting/attack_chain.py +411 -346
  243. souleyez/reporting/charts.py +436 -501
  244. souleyez/reporting/compliance_mappings.py +334 -201
  245. souleyez/reporting/detection_report.py +126 -125
  246. souleyez/reporting/formatters.py +828 -591
  247. souleyez/reporting/generator.py +386 -302
  248. souleyez/reporting/metrics.py +72 -75
  249. souleyez/scanner.py +35 -29
  250. souleyez/security/__init__.py +37 -11
  251. souleyez/security/scope_validator.py +175 -106
  252. souleyez/security/validation.py +223 -149
  253. souleyez/security.py +22 -6
  254. souleyez/storage/credentials.py +247 -186
  255. souleyez/storage/crypto.py +296 -129
  256. souleyez/storage/database.py +73 -50
  257. souleyez/storage/db.py +58 -36
  258. souleyez/storage/deliverable_evidence.py +177 -128
  259. souleyez/storage/deliverable_exporter.py +282 -246
  260. souleyez/storage/deliverable_templates.py +134 -116
  261. souleyez/storage/deliverables.py +135 -130
  262. souleyez/storage/engagements.py +109 -56
  263. souleyez/storage/evidence.py +181 -152
  264. souleyez/storage/execution_log.py +31 -17
  265. souleyez/storage/exploit_attempts.py +93 -57
  266. souleyez/storage/exploits.py +67 -36
  267. souleyez/storage/findings.py +48 -61
  268. souleyez/storage/hosts.py +176 -144
  269. souleyez/storage/migrate_to_engagements.py +43 -19
  270. souleyez/storage/migrations/_001_add_credential_enhancements.py +22 -12
  271. souleyez/storage/migrations/_002_add_status_tracking.py +10 -7
  272. souleyez/storage/migrations/_003_add_execution_log.py +14 -8
  273. souleyez/storage/migrations/_005_screenshots.py +13 -5
  274. souleyez/storage/migrations/_006_deliverables.py +13 -5
  275. souleyez/storage/migrations/_007_deliverable_templates.py +12 -7
  276. souleyez/storage/migrations/_008_add_nuclei_table.py +10 -4
  277. souleyez/storage/migrations/_010_evidence_linking.py +17 -10
  278. souleyez/storage/migrations/_011_timeline_tracking.py +20 -13
  279. souleyez/storage/migrations/_012_team_collaboration.py +34 -21
  280. souleyez/storage/migrations/_013_add_host_tags.py +12 -6
  281. souleyez/storage/migrations/_014_exploit_attempts.py +22 -10
  282. souleyez/storage/migrations/_015_add_mac_os_fields.py +15 -7
  283. souleyez/storage/migrations/_016_add_domain_field.py +10 -4
  284. souleyez/storage/migrations/_017_msf_sessions.py +16 -8
  285. souleyez/storage/migrations/_018_add_osint_target.py +10 -6
  286. souleyez/storage/migrations/_019_add_engagement_type.py +10 -6
  287. souleyez/storage/migrations/_020_add_rbac.py +36 -15
  288. souleyez/storage/migrations/_021_wazuh_integration.py +20 -8
  289. souleyez/storage/migrations/_022_wazuh_indexer_columns.py +6 -4
  290. souleyez/storage/migrations/_023_fix_detection_results_fk.py +16 -6
  291. souleyez/storage/migrations/_024_wazuh_vulnerabilities.py +26 -10
  292. souleyez/storage/migrations/_025_multi_siem_support.py +3 -5
  293. souleyez/storage/migrations/_026_add_engagement_scope.py +31 -12
  294. souleyez/storage/migrations/_027_multi_siem_persistence.py +32 -15
  295. souleyez/storage/migrations/__init__.py +26 -26
  296. souleyez/storage/migrations/migration_manager.py +19 -19
  297. souleyez/storage/msf_sessions.py +100 -65
  298. souleyez/storage/osint.py +17 -24
  299. souleyez/storage/recommendation_engine.py +269 -235
  300. souleyez/storage/screenshots.py +33 -32
  301. souleyez/storage/smb_shares.py +136 -92
  302. souleyez/storage/sqlmap_data.py +183 -128
  303. souleyez/storage/team_collaboration.py +135 -141
  304. souleyez/storage/timeline_tracker.py +122 -94
  305. souleyez/storage/wazuh_vulns.py +64 -66
  306. souleyez/storage/web_paths.py +33 -37
  307. souleyez/testing/credential_tester.py +221 -205
  308. souleyez/ui/__init__.py +1 -1
  309. souleyez/ui/ai_quotes.py +12 -12
  310. souleyez/ui/attack_surface.py +2439 -1516
  311. souleyez/ui/chain_rules_view.py +914 -382
  312. souleyez/ui/correlation_view.py +312 -230
  313. souleyez/ui/dashboard.py +2382 -1130
  314. souleyez/ui/deliverables_view.py +148 -62
  315. souleyez/ui/design_system.py +13 -13
  316. souleyez/ui/errors.py +49 -49
  317. souleyez/ui/evidence_linking_view.py +284 -179
  318. souleyez/ui/evidence_vault.py +393 -285
  319. souleyez/ui/exploit_suggestions_view.py +555 -349
  320. souleyez/ui/export_view.py +100 -66
  321. souleyez/ui/gap_analysis_view.py +315 -171
  322. souleyez/ui/help_system.py +105 -97
  323. souleyez/ui/intelligence_view.py +436 -293
  324. souleyez/ui/interactive.py +22783 -10678
  325. souleyez/ui/interactive_selector.py +75 -68
  326. souleyez/ui/log_formatter.py +47 -39
  327. souleyez/ui/menu_components.py +22 -13
  328. souleyez/ui/msf_auxiliary_menu.py +184 -133
  329. souleyez/ui/pending_chains_view.py +336 -172
  330. souleyez/ui/progress_indicators.py +5 -3
  331. souleyez/ui/recommendations_view.py +195 -137
  332. souleyez/ui/rule_builder.py +343 -225
  333. souleyez/ui/setup_wizard.py +678 -284
  334. souleyez/ui/shortcuts.py +217 -165
  335. souleyez/ui/splunk_gap_analysis_view.py +452 -270
  336. souleyez/ui/splunk_vulns_view.py +139 -86
  337. souleyez/ui/team_dashboard.py +498 -335
  338. souleyez/ui/template_selector.py +196 -105
  339. souleyez/ui/terminal.py +6 -6
  340. souleyez/ui/timeline_view.py +198 -127
  341. souleyez/ui/tool_setup.py +264 -164
  342. souleyez/ui/tutorial.py +202 -72
  343. souleyez/ui/tutorial_state.py +40 -40
  344. souleyez/ui/wazuh_vulns_view.py +235 -141
  345. souleyez/ui/wordlist_browser.py +260 -107
  346. souleyez/ui.py +464 -312
  347. souleyez/utils/tool_checker.py +427 -367
  348. souleyez/utils.py +33 -29
  349. souleyez/wordlists.py +134 -167
  350. {souleyez-2.43.29.dist-info → souleyez-2.43.32.dist-info}/METADATA +1 -1
  351. souleyez-2.43.32.dist-info/RECORD +441 -0
  352. {souleyez-2.43.29.dist-info → souleyez-2.43.32.dist-info}/WHEEL +1 -1
  353. souleyez-2.43.29.dist-info/RECORD +0 -379
  354. {souleyez-2.43.29.dist-info → souleyez-2.43.32.dist-info}/entry_points.txt +0 -0
  355. {souleyez-2.43.29.dist-info → souleyez-2.43.32.dist-info}/licenses/LICENSE +0 -0
  356. {souleyez-2.43.29.dist-info → souleyez-2.43.32.dist-info}/top_level.txt +0 -0
souleyez/plugins/nmap.py CHANGED
@@ -10,7 +10,7 @@ from .plugin_base import PluginBase
10
10
  from souleyez.security.validation import (
11
11
  validate_target,
12
12
  validate_nmap_args,
13
- ValidationError
13
+ ValidationError,
14
14
  )
15
15
 
16
16
  HELP = {
@@ -33,13 +33,13 @@ HELP = {
33
33
  "- Combine Nmap output with service-specific checks (banner grabs, vuln scanners) for richer context.\n"
34
34
  "- Always scan with permission — loud scans get noticed.\n"
35
35
  ),
36
- "usage": "souleyez jobs enqueue nmap <target> --args \"<nmap flags>\"",
36
+ "usage": 'souleyez jobs enqueue nmap <target> --args "<nmap flags>"',
37
37
  "examples": [
38
- "souleyez jobs enqueue nmap 10.0.0.0/24 --args \"-vv -sn\"",
39
- "souleyez jobs enqueue nmap 10.0.0.82 --args \"-v -PS -F\"",
40
- "souleyez jobs enqueue nmap 10.0.0.82 --args \"-vv -sV -O -p1-65535\"",
41
- "souleyez jobs enqueue nmap 10.0.0.82 --args \"-sU -sV --top-ports 100\"",
42
- "souleyez jobs enqueue nmap 10.0.0.82 --args \"--script vuln\"",
38
+ 'souleyez jobs enqueue nmap 10.0.0.0/24 --args "-vv -sn"',
39
+ 'souleyez jobs enqueue nmap 10.0.0.82 --args "-v -PS -F"',
40
+ 'souleyez jobs enqueue nmap 10.0.0.82 --args "-vv -sV -O -p1-65535"',
41
+ 'souleyez jobs enqueue nmap 10.0.0.82 --args "-sU -sV --top-ports 100"',
42
+ 'souleyez jobs enqueue nmap 10.0.0.82 --args "--script vuln"',
43
43
  ],
44
44
  "flags": [
45
45
  ["-sn", "Ping scan (no port scan)"],
@@ -52,141 +52,304 @@ HELP = {
52
52
  ["-p1-65535", "Scan all TCP ports"],
53
53
  ["--top-ports N", "Scan N most common ports"],
54
54
  ["-sC/--script", "Run default/specific NSE scripts"],
55
- ["-T0 to -T5", "Timing template (0=slowest, 5=fastest)"]
55
+ ["-T0 to -T5", "Timing template (0=slowest, 5=fastest)"],
56
56
  ],
57
57
  "preset_categories": {
58
58
  "discovery": [
59
59
  {
60
60
  "name": "Ping Sweep",
61
61
  "args": ["-vv", "-sn"],
62
- "desc": "Host discovery (no port scan)"
62
+ "desc": "Host discovery (no port scan)",
63
63
  }
64
64
  ],
65
65
  "port_scanning": [
66
66
  {
67
67
  "name": "Fast Scan",
68
- "args": ["-v", "-PS", "-F", "-T4", "--host-timeout", "90s"],
69
- "desc": "Top 100 ports, quick sweep"
68
+ "args": ["-Pn", "-v", "-PS", "-F", "-T4", "--host-timeout", "90s"],
69
+ "desc": "Top 100 ports, quick sweep",
70
70
  },
71
71
  {
72
72
  "name": "Stealth Scan",
73
- "args": ["-sS", "-T4", "--open"],
74
- "desc": "SYN scan only (quiet, no version detection)"
73
+ "args": ["-Pn", "-sS", "-T4", "--open"],
74
+ "desc": "SYN scan only (quiet, no version detection)",
75
75
  },
76
76
  {
77
77
  "name": "Full TCP Scan",
78
- "args": ["-vv", "-sS", "-sV", "-sC", "-O", "-p-", "--script", "vuln", "-T4", "--host-timeout", "20m", "--open"],
79
- "desc": "All 65535 ports with versions, OS, vulns"
80
- }
78
+ "args": [
79
+ "-Pn",
80
+ "-vv",
81
+ "-sS",
82
+ "-sV",
83
+ "-sC",
84
+ "-O",
85
+ "-p-",
86
+ "--script",
87
+ "vuln",
88
+ "-T4",
89
+ "--host-timeout",
90
+ "20m",
91
+ "--open",
92
+ ],
93
+ "desc": "All 65535 ports with versions, OS, vulns",
94
+ },
81
95
  ],
82
96
  "service_detection": [
83
97
  {
84
98
  "name": "Service & Version",
85
- "args": ["-sV", "-sC", "--open", "-T4"],
86
- "desc": "Service detection + safe NSE scripts"
99
+ "args": ["-Pn", "-sV", "-sC", "--open", "-T4"],
100
+ "desc": "Service detection + safe NSE scripts",
87
101
  },
88
102
  {
89
103
  "name": "Vulnerability Scan",
90
- "args": ["-sV", "--script", "vuln", "--open"],
91
- "desc": "Detect known vulnerabilities (CVEs)"
92
- }
104
+ "args": ["-Pn", "-sV", "--script", "vuln", "--open"],
105
+ "desc": "Detect known vulnerabilities (CVEs)",
106
+ },
93
107
  ],
94
108
  "udp_scanning": [
95
109
  {
96
110
  "name": "UDP Quick",
97
- "args": ["-sU", "-sV", "--top-ports", "100"],
98
- "desc": "Top 100 UDP ports"
111
+ "args": ["-Pn", "-sU", "-sV", "--top-ports", "100"],
112
+ "desc": "Top 100 UDP ports",
99
113
  },
100
114
  {
101
115
  "name": "UDP Deep",
102
- "args": ["-sU", "-sV", "--top-ports", "1000", "-T4", "--host-timeout", "20m", "--open"],
103
- "desc": "Top 1000 UDP ports (slow)"
104
- }
116
+ "args": [
117
+ "-sU",
118
+ "-sV",
119
+ "--top-ports",
120
+ "1000",
121
+ "-T4",
122
+ "--host-timeout",
123
+ "20m",
124
+ "--open",
125
+ ],
126
+ "desc": "Top 1000 UDP ports (slow)",
127
+ },
105
128
  ],
106
129
  "protocol_enumeration": [
107
130
  {
108
131
  "name": "SMB Enumeration",
109
- "args": ["-p445", "--script", "smb-enum-shares,smb-enum-users,smb-os-discovery"],
110
- "desc": "Shares, users, OS discovery"
132
+ "args": [
133
+ "-p445",
134
+ "--script",
135
+ "smb-enum-shares,smb-enum-users,smb-os-discovery",
136
+ ],
137
+ "desc": "Shares, users, OS discovery",
111
138
  },
112
139
  {
113
140
  "name": "HTTP Enumeration",
114
- "args": ["-p80,443,8080,8443", "--script", "http-enum,http-headers,http-methods,http-title"],
115
- "desc": "Web server info, directories, headers"
116
- }
117
- ]
141
+ "args": [
142
+ "-p80,443,8080,8443",
143
+ "--script",
144
+ "http-enum,http-headers,http-methods,http-title",
145
+ ],
146
+ "desc": "Web server info, directories, headers",
147
+ },
148
+ ],
118
149
  },
119
150
  "presets": [
120
151
  # Flattened list for backward compatibility - matches preset_categories order
121
152
  # Discovery
122
- {"name": "Ping Sweep", "args": ["-vv", "-sn"], "desc": "Host discovery (no port scan)"},
123
- # Port Scanning
124
- {"name": "Fast Scan", "args": ["-v", "-PS", "-F", "-T4", "--host-timeout", "90s"], "desc": "Top 100 ports, quick sweep"},
125
- {"name": "Stealth Scan", "args": ["-sS", "-T4", "--open"], "desc": "SYN scan only (quiet, no version detection)"},
126
- {"name": "Full TCP Scan", "args": ["-vv", "-sS", "-sV", "-sC", "-O", "-p-", "--script", "vuln", "-T4", "--host-timeout", "20m", "--open"], "desc": "All 65535 ports with versions, OS, vulns"},
153
+ {
154
+ "name": "Ping Sweep",
155
+ "args": ["-vv", "-sn"],
156
+ "desc": "Host discovery (no port scan)",
157
+ },
158
+ # Port Scanning (all include -Pn to skip host discovery - many targets block ICMP)
159
+ {
160
+ "name": "Fast Scan",
161
+ "args": ["-Pn", "-v", "-PS", "-F", "-T4", "--host-timeout", "90s"],
162
+ "desc": "Top 100 ports, quick sweep",
163
+ },
164
+ {
165
+ "name": "Stealth Scan",
166
+ "args": ["-Pn", "-sS", "-T4", "--open"],
167
+ "desc": "SYN scan only (quiet, no version detection)",
168
+ },
169
+ {
170
+ "name": "Full TCP Scan",
171
+ "args": [
172
+ "-Pn",
173
+ "-vv",
174
+ "-sS",
175
+ "-sV",
176
+ "-sC",
177
+ "-O",
178
+ "-p-",
179
+ "--script",
180
+ "vuln",
181
+ "-T4",
182
+ "--host-timeout",
183
+ "20m",
184
+ "--open",
185
+ ],
186
+ "desc": "All 65535 ports with versions, OS, vulns",
187
+ },
127
188
  # Service Detection
128
- {"name": "Service & Version", "args": ["-sV", "-sC", "--open", "-T4"], "desc": "Service detection + safe NSE scripts"},
129
- {"name": "Vulnerability Scan", "args": ["-sV", "--script", "vuln", "--open"], "desc": "Detect known vulnerabilities (CVEs)"},
189
+ {
190
+ "name": "Service & Version",
191
+ "args": ["-Pn", "-sV", "-sC", "--open", "-T4"],
192
+ "desc": "Service detection + safe NSE scripts",
193
+ },
194
+ {
195
+ "name": "Vulnerability Scan",
196
+ "args": ["-Pn", "-sV", "--script", "vuln", "--open"],
197
+ "desc": "Detect known vulnerabilities (CVEs)",
198
+ },
130
199
  # UDP Scanning
131
- {"name": "UDP Quick", "args": ["-sU", "-sV", "--top-ports", "100"], "desc": "Top 100 UDP ports"},
132
- {"name": "UDP Deep", "args": ["-sU", "-sV", "--top-ports", "1000", "-T4", "--host-timeout", "20m", "--open"], "desc": "Top 1000 UDP ports (slow)"},
200
+ {
201
+ "name": "UDP Quick",
202
+ "args": ["-Pn", "-sU", "-sV", "--top-ports", "100"],
203
+ "desc": "Top 100 UDP ports",
204
+ },
205
+ {
206
+ "name": "UDP Deep",
207
+ "args": [
208
+ "-sU",
209
+ "-sV",
210
+ "--top-ports",
211
+ "1000",
212
+ "-T4",
213
+ "--host-timeout",
214
+ "20m",
215
+ "--open",
216
+ ],
217
+ "desc": "Top 1000 UDP ports (slow)",
218
+ },
133
219
  # Protocol Enumeration
134
- {"name": "SMB Enumeration", "args": ["-p445", "--script", "smb-enum-shares,smb-enum-users,smb-os-discovery"], "desc": "Shares, users, OS discovery"},
135
- {"name": "HTTP Enumeration", "args": ["-p80,443,8080,8443", "--script", "http-enum,http-headers,http-methods,http-title"], "desc": "Web server info, directories, headers"},
220
+ {
221
+ "name": "SMB Enumeration",
222
+ "args": [
223
+ "-p445",
224
+ "--script",
225
+ "smb-enum-shares,smb-enum-users,smb-os-discovery",
226
+ ],
227
+ "desc": "Shares, users, OS discovery",
228
+ },
229
+ {
230
+ "name": "HTTP Enumeration",
231
+ "args": [
232
+ "-p80,443,8080,8443",
233
+ "--script",
234
+ "http-enum,http-headers,http-methods,http-title",
235
+ ],
236
+ "desc": "Web server info, directories, headers",
237
+ },
136
238
  # Router/IoT Discovery
137
- {"name": "UPnP Discovery", "args": ["-sU", "-sS", "-p", "U:1900,T:49152-49156,5000,2869", "--script", "upnp-info", "-T4", "--open"], "desc": "UPnP services on routers/IoT"},
138
- {"name": "TR-069 Detection", "args": ["-sV", "-p", "7547,4567,5555,8089", "-T4", "--open"], "desc": "ISP remote management (CWMP)"},
239
+ {
240
+ "name": "UPnP Discovery",
241
+ "args": [
242
+ "-sU",
243
+ "-sS",
244
+ "-p",
245
+ "U:1900,T:49152-49156,5000,2869",
246
+ "--script",
247
+ "upnp-info",
248
+ "-T4",
249
+ "--open",
250
+ ],
251
+ "desc": "UPnP services on routers/IoT",
252
+ },
253
+ {
254
+ "name": "TR-069 Detection",
255
+ "args": ["-sV", "-p", "7547,4567,5555,8089", "-T4", "--open"],
256
+ "desc": "ISP remote management (CWMP)",
257
+ },
139
258
  # macOS Discovery
140
- {"name": "macOS Services", "args": ["-sV", "-p", "548,5900,3283,5353", "--script", "afp-serverinfo,vnc-info", "-T4", "--open"], "desc": "AFP, VNC, ARD, Bonjour"},
141
- {"name": "mDNS/Bonjour", "args": ["-sU", "-p", "5353", "--script", "dns-service-discovery,broadcast-dns-service-discovery", "-T4", "--open"], "desc": "Discover Apple devices via mDNS"}
259
+ {
260
+ "name": "macOS Services",
261
+ "args": [
262
+ "-sV",
263
+ "-p",
264
+ "548,5900,3283,5353",
265
+ "--script",
266
+ "afp-serverinfo,vnc-info",
267
+ "-T4",
268
+ "--open",
269
+ ],
270
+ "desc": "AFP, VNC, ARD, Bonjour",
271
+ },
272
+ {
273
+ "name": "mDNS/Bonjour",
274
+ "args": [
275
+ "-sU",
276
+ "-p",
277
+ "5353",
278
+ "--script",
279
+ "dns-service-discovery,broadcast-dns-service-discovery",
280
+ "-T4",
281
+ "--open",
282
+ ],
283
+ "desc": "Discover Apple devices via mDNS",
284
+ },
142
285
  ],
143
286
  "help_sections": [
144
287
  {
145
288
  "title": "What is Nmap?",
146
289
  "color": "cyan",
147
290
  "content": [
148
- {"title": "Overview", "desc": "Nmap is the industry-standard network scanner for host discovery, port scanning, service detection, and OS fingerprinting."},
149
- {"title": "Use Cases", "desc": "Essential for network reconnaissance and security assessments", "tips": [
150
- "Discover live hosts on the network",
151
- "Identify open ports and running services",
152
- "Fingerprint operating systems and service versions",
153
- "Find potential vulnerabilities with NSE scripts"
154
- ]}
155
- ]
291
+ {
292
+ "title": "Overview",
293
+ "desc": "Nmap is the industry-standard network scanner for host discovery, port scanning, service detection, and OS fingerprinting.",
294
+ },
295
+ {
296
+ "title": "Use Cases",
297
+ "desc": "Essential for network reconnaissance and security assessments",
298
+ "tips": [
299
+ "Discover live hosts on the network",
300
+ "Identify open ports and running services",
301
+ "Fingerprint operating systems and service versions",
302
+ "Find potential vulnerabilities with NSE scripts",
303
+ ],
304
+ },
305
+ ],
156
306
  },
157
307
  {
158
308
  "title": "How to Use",
159
309
  "color": "green",
160
310
  "content": [
161
- {"title": "Basic Workflow", "desc": "1. Start with discovery sweep (-sn) to find live hosts\n 2. Run fast scan (-F) to identify open ports\n 3. Deep scan with version detection (-sV -O) for detailed info\n 4. Run vulnerability scripts (--script vuln) on targets"},
162
- {"title": "Scan Types", "desc": "Different scans for different needs", "tips": [
163
- "Discovery: Quick ping sweep (no ports)",
164
- "Fast Scan: Top 100 ports with 90s timeout",
165
- "Full Scan: All 65535 ports with OS/version detection",
166
- "UDP Scan: Check for UDP services (slower)"
167
- ]}
168
- ]
311
+ {
312
+ "title": "Basic Workflow",
313
+ "desc": "1. Start with discovery sweep (-sn) to find live hosts\n 2. Run fast scan (-F) to identify open ports\n 3. Deep scan with version detection (-sV -O) for detailed info\n 4. Run vulnerability scripts (--script vuln) on targets",
314
+ },
315
+ {
316
+ "title": "Scan Types",
317
+ "desc": "Different scans for different needs",
318
+ "tips": [
319
+ "Discovery: Quick ping sweep (no ports)",
320
+ "Fast Scan: Top 100 ports with 90s timeout",
321
+ "Full Scan: All 65535 ports with OS/version detection",
322
+ "UDP Scan: Check for UDP services (slower)",
323
+ ],
324
+ },
325
+ ],
169
326
  },
170
327
  {
171
328
  "title": "Tips & Best Practices",
172
329
  "color": "yellow",
173
330
  "content": [
174
- ("Best Practices:", [
175
- "Start with quick discovery before deep scans",
176
- "Use --host-timeout to skip slow/dead hosts",
177
- "Save XML output for parsing (-oX output.xml)",
178
- "Match scan intensity to your authorization level",
179
- "Combine with service-specific checks for full coverage"
180
- ]),
181
- ("Common Issues:", [
182
- "Slow scans: Use -F for fast mode or increase -T timing",
183
- "UDP timeout: Add --host-timeout 10m for UDP scans",
184
- "Missed hosts: Try different ping techniques (-PS, -PA, -PU)",
185
- "Permission denied: Some scan types require root/sudo"
186
- ])
187
- ]
188
- }
189
- ]
331
+ (
332
+ "Best Practices:",
333
+ [
334
+ "Start with quick discovery before deep scans",
335
+ "Use --host-timeout to skip slow/dead hosts",
336
+ "Save XML output for parsing (-oX output.xml)",
337
+ "Match scan intensity to your authorization level",
338
+ "Combine with service-specific checks for full coverage",
339
+ ],
340
+ ),
341
+ (
342
+ "Common Issues:",
343
+ [
344
+ "Slow scans: Use -F for fast mode or increase -T timing",
345
+ "UDP timeout: Add --host-timeout 10m for UDP scans",
346
+ "Missed hosts: Try different ping techniques (-PS, -PA, -PU)",
347
+ "Permission denied: Some scan types require root/sudo",
348
+ ],
349
+ ),
350
+ ],
351
+ },
352
+ ],
190
353
  }
191
354
 
192
355
 
@@ -199,15 +362,28 @@ class NmapPlugin(PluginBase):
199
362
  def _requires_root(self, args: List[str]) -> bool:
200
363
  """Check if the nmap arguments require root/sudo privileges."""
201
364
  # UDP scans (-sU) and some other scan types require root
202
- root_required_flags = ['-sU', '-sS', '-sA', '-sW', '-sM', '-sN', '-sF', '-sX', '-O']
365
+ root_required_flags = [
366
+ "-sU",
367
+ "-sS",
368
+ "-sA",
369
+ "-sW",
370
+ "-sM",
371
+ "-sN",
372
+ "-sF",
373
+ "-sX",
374
+ "-O",
375
+ ]
203
376
  return any(flag in args for flag in root_required_flags)
204
377
 
205
378
  def _is_root(self) -> bool:
206
379
  """Check if running as root."""
207
380
  import os
381
+
208
382
  return os.geteuid() == 0
209
383
 
210
- def build_command(self, target: str, args: List[str] = None, label: str = "", log_path: str = None):
384
+ def build_command(
385
+ self, target: str, args: List[str] = None, label: str = "", log_path: str = None
386
+ ):
211
387
  """Build nmap command for background execution with PID tracking."""
212
388
  args = args or []
213
389
 
@@ -241,12 +417,11 @@ class NmapPlugin(PluginBase):
241
417
  if self._requires_root(args) and not self._is_root():
242
418
  cmd = ["sudo", "-n"] + cmd # -n = non-interactive (no password prompt)
243
419
 
244
- return {
245
- 'cmd': cmd,
246
- 'timeout': 3600 # 1 hour timeout
247
- }
420
+ return {"cmd": cmd, "timeout": 3600} # 1 hour timeout
248
421
 
249
- def run(self, target: str, args: List[str] = None, label: str = "", log_path: str = None) -> int:
422
+ def run(
423
+ self, target: str, args: List[str] = None, label: str = "", log_path: str = None
424
+ ) -> int:
250
425
  """Execute nmap scan and write output to log_path."""
251
426
  args = args or []
252
427
 
@@ -293,7 +468,9 @@ class NmapPlugin(PluginBase):
293
468
  try:
294
469
  with open(log_path, "a", encoding="utf-8", errors="replace") as fh:
295
470
  fh.write(f"Command: {' '.join(cmd)}\n")
296
- fh.write(f"Started: {time.strftime('%Y-%m-%d %H:%M:%S UTC', time.gmtime())}\n\n")
471
+ fh.write(
472
+ f"Started: {time.strftime('%Y-%m-%d %H:%M:%S UTC', time.gmtime())}\n\n"
473
+ )
297
474
  fh.flush()
298
475
 
299
476
  proc = subprocess.run(
@@ -301,10 +478,12 @@ class NmapPlugin(PluginBase):
301
478
  stdout=fh,
302
479
  stderr=subprocess.STDOUT,
303
480
  timeout=3600, # 1 hour timeout
304
- check=False
481
+ check=False,
305
482
  )
306
483
 
307
- fh.write(f"\nCompleted: {time.strftime('%Y-%m-%d %H:%M:%S UTC', time.gmtime())}\n")
484
+ fh.write(
485
+ f"\nCompleted: {time.strftime('%Y-%m-%d %H:%M:%S UTC', time.gmtime())}\n"
486
+ )
308
487
  fh.write(f"Exit Code: {proc.returncode}\n")
309
488
 
310
489
  return proc.returncode
@@ -328,14 +507,19 @@ class NmapPlugin(PluginBase):
328
507
  """Old-style execution for backward compatibility."""
329
508
  try:
330
509
  from ..scanner import run_nmap
331
- logpath, rc, xmlpath, summary = run_nmap(target, args, label, save_xml=False)
510
+
511
+ logpath, rc, xmlpath, summary = run_nmap(
512
+ target, args, label, save_xml=False
513
+ )
332
514
  return rc
333
515
  except ImportError:
334
516
  # Split target on whitespace to handle multiple IPs/hosts
335
517
  target_list = target.split()
336
518
  cmd = ["nmap"] + (args or []) + target_list
337
519
  try:
338
- proc = subprocess.run(cmd, capture_output=True, timeout=3600, check=False)
520
+ proc = subprocess.run(
521
+ cmd, capture_output=True, timeout=3600, check=False
522
+ )
339
523
  return proc.returncode
340
524
  except Exception:
341
525
  return 1