diff --git a/backend/apps/scan/flows/__init__.py b/backend/apps/scan/flows/__init__.py index 311c3445..02163b53 100644 --- a/backend/apps/scan/flows/__init__.py +++ b/backend/apps/scan/flows/__init__.py @@ -5,8 +5,10 @@ from .initiate_scan_flow import initiate_scan_flow from .subdomain_discovery_flow import subdomain_discovery_flow +from .fingerprint_detect_flow import fingerprint_detect_flow __all__ = [ 'initiate_scan_flow', 'subdomain_discovery_flow', + 'fingerprint_detect_flow', ] diff --git a/backend/apps/scan/orchestrators/flow_orchestrator.py b/backend/apps/scan/orchestrators/flow_orchestrator.py index 655a7b5d..9c95f0b6 100644 --- a/backend/apps/scan/orchestrators/flow_orchestrator.py +++ b/backend/apps/scan/orchestrators/flow_orchestrator.py @@ -206,6 +206,10 @@ class FlowOrchestrator: from apps.scan.flows.site_scan_flow import site_scan_flow return site_scan_flow + elif scan_type == 'fingerprint_detect': + from apps.scan.flows.fingerprint_detect_flow import fingerprint_detect_flow + return fingerprint_detect_flow + elif scan_type == 'directory_scan': from apps.scan.flows.directory_scan_flow import directory_scan_flow return directory_scan_flow diff --git a/backend/apps/scan/tasks/__init__.py b/backend/apps/scan/tasks/__init__.py index 34b9dd86..ad0dff60 100644 --- a/backend/apps/scan/tasks/__init__.py +++ b/backend/apps/scan/tasks/__init__.py @@ -19,6 +19,12 @@ from .subdomain_discovery import ( save_domains_task, ) +# 指纹识别任务 +from .fingerprint_detect import ( + export_urls_for_fingerprint_task, + run_xingfinger_and_stream_update_tech_task, +) + # 注意: # - subdomain_discovery_task 已重构为多个子任务(subdomain_discovery/) # - finalize_scan_task 已废弃(Handler 统一管理状态) @@ -32,4 +38,7 @@ __all__ = [ 'run_subdomain_discovery_task', 'merge_and_validate_task', 'save_domains_task', + # 指纹识别任务 + 'export_urls_for_fingerprint_task', + 'run_xingfinger_and_stream_update_tech_task', ] diff --git a/frontend/app/scan/engine/page.tsx b/frontend/app/scan/engine/page.tsx index eeca8249..378093cb 100644 --- a/frontend/app/scan/engine/page.tsx +++ b/frontend/app/scan/engine/page.tsx @@ -31,6 +31,7 @@ const FEATURE_LIST = [ { key: "subdomain_discovery", label: "子域名发现" }, { key: "port_scan", label: "端口扫描" }, { key: "site_scan", label: "站点扫描" }, + { key: "fingerprint_detect", label: "指纹识别" }, { key: "directory_scan", label: "目录扫描" }, { key: "url_fetch", label: "URL 抓取" }, { key: "vuln_scan", label: "漏洞扫描" }, @@ -44,6 +45,7 @@ function parseEngineFeatures(engine: ScanEngine): Record { subdomain_discovery: false, port_scan: false, site_scan: false, + fingerprint_detect: false, directory_scan: false, url_fetch: false, vuln_scan: false, diff --git a/frontend/components/scan/scan-progress-dialog.tsx b/frontend/components/scan/scan-progress-dialog.tsx index a00145e4..04382acc 100644 --- a/frontend/components/scan/scan-progress-dialog.tsx +++ b/frontend/components/scan/scan-progress-dialog.tsx @@ -32,6 +32,7 @@ const STAGE_LABELS: Record = { subdomain_discovery: "子域名发现", port_scan: "端口扫描", site_scan: "站点扫描", + fingerprint_detect: "指纹识别", directory_scan: "目录扫描", url_fetch: "URL 抓取", vuln_scan: "漏洞扫描", diff --git a/frontend/lib/engine-config.ts b/frontend/lib/engine-config.ts index 596875b5..f31d767b 100644 --- a/frontend/lib/engine-config.ts +++ b/frontend/lib/engine-config.ts @@ -2,6 +2,7 @@ import { Globe, Network, Monitor, + Fingerprint, FolderSearch, Link, ShieldAlert, @@ -27,6 +28,7 @@ export const CAPABILITY_CONFIG: Record