detecti-cli 2.0.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.
Files changed (64) hide show
  1. detecti/__init__.py +0 -0
  2. detecti/cli.py +649 -0
  3. detecti/config.py +188 -0
  4. detecti/core/__init__.py +1 -0
  5. detecti/core/database/__init__.py +5 -0
  6. detecti/core/database/config_db.py +73 -0
  7. detecti/core/database/schema.py +136 -0
  8. detecti/core/database/storage.py +1388 -0
  9. detecti/core/engine.py +1032 -0
  10. detecti/core/models.py +278 -0
  11. detecti/data/config.sqlite +0 -0
  12. detecti/data/dbs/.gitkeep +2 -0
  13. detecti/data/dbs/example.com.sqlite +0 -0
  14. detecti/modules/__init__.py +29 -0
  15. detecti/modules/base.py +57 -0
  16. detecti/modules/censys.py +813 -0
  17. detecti/modules/crtsh.py +98 -0
  18. detecti/modules/exploitdb.py +138 -0
  19. detecti/modules/masscan.py +561 -0
  20. detecti/modules/nuclei.py +449 -0
  21. detecti/modules/nvd.py +300 -0
  22. detecti/modules/reverse_whois.py +225 -0
  23. detecti/modules/shodan.py +412 -0
  24. detecti/reporters/__init__.py +7 -0
  25. detecti/reporters/csv_reporter.py +74 -0
  26. detecti/reporters/html_reporter.py +356 -0
  27. detecti/reporters/json_reporter.py +26 -0
  28. detecti/reporters/markdown_reporter.py +203 -0
  29. detecti/utils/__init__.py +1 -0
  30. detecti/utils/http.py +294 -0
  31. detecti/utils/logger.py +378 -0
  32. detecti/utils/setup.py +453 -0
  33. detecti/web/__init__.py +6 -0
  34. detecti/web/api/__init__.py +1 -0
  35. detecti/web/api/auth.py +109 -0
  36. detecti/web/api/graph_builder.py +901 -0
  37. detecti/web/api/routes.py +1602 -0
  38. detecti/web/process_manager.py +283 -0
  39. detecti/web/server.py +183 -0
  40. detecti/web/static/android-chrome-192x192.png +0 -0
  41. detecti/web/static/android-chrome-512x512.png +0 -0
  42. detecti/web/static/apple-touch-icon.png +0 -0
  43. detecti/web/static/css/__init__.py +1 -0
  44. detecti/web/static/css/dashboard.css +3802 -0
  45. detecti/web/static/favicon-16x16.png +0 -0
  46. detecti/web/static/favicon-32x32.png +0 -0
  47. detecti/web/static/favicon.ico +0 -0
  48. detecti/web/static/img/DetecTI_Security_Logo.png +0 -0
  49. detecti/web/static/img/detecti-ico.png +0 -0
  50. detecti/web/static/index.html +677 -0
  51. detecti/web/static/js/__init__.py +1 -0
  52. detecti/web/static/js/api.js +177 -0
  53. detecti/web/static/js/cytoscape-cose-bilkent.js +458 -0
  54. detecti/web/static/js/cytoscape-dagre.js +397 -0
  55. detecti/web/static/js/cytoscape.min.js +31 -0
  56. detecti/web/static/js/dagre.min.js +3809 -0
  57. detecti/web/static/js/graph.js +7439 -0
  58. detecti/web/static/js/lucide.min.js +12 -0
  59. detecti/web/static/login.html +290 -0
  60. detecti/web/static/site.webmanifest +1 -0
  61. detecti_cli-2.0.0.dist-info/METADATA +554 -0
  62. detecti_cli-2.0.0.dist-info/RECORD +64 -0
  63. detecti_cli-2.0.0.dist-info/WHEEL +4 -0
  64. detecti_cli-2.0.0.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,554 @@
1
+ Metadata-Version: 2.5
2
+ Name: detecti-cli
3
+ Version: 2.0.0
4
+ Summary: Modern Attack Surface Management & Threat Intelligence Engine
5
+ Author-email: "Lucas S. (Ls4ss)" <lucas@lucassouza.io>
6
+ License: MIT
7
+ Keywords: attack-surface,censys,cisa-kev,cve,easm,epss,exploitdb,nvd,osint,recon,shodan,threat-intelligence
8
+ Classifier: Development Status :: 5 - Production/Stable
9
+ Classifier: Environment :: Console
10
+ Classifier: Intended Audience :: Information Technology
11
+ Classifier: Intended Audience :: System Administrators
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Security
19
+ Requires-Python: >=3.11
20
+ Requires-Dist: cve-searchsploit>=0.3.0
21
+ Requires-Dist: httpx>=0.27.0
22
+ Requires-Dist: pydantic-settings>=2.2.0
23
+ Requires-Dist: pydantic>=2.7.0
24
+ Requires-Dist: rich>=13.7.0
25
+ Requires-Dist: shodan>=1.31.0
26
+ Requires-Dist: typer>=0.12.0
27
+ Provides-Extra: dev
28
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
29
+ Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
30
+ Requires-Dist: pytest-mock>=3.14.0; extra == 'dev'
31
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
32
+ Description-Content-Type: text/markdown
33
+
34
+ <h1 align="center">DetecTI - Cyber Lead Intelligence</h1>
35
+
36
+ <div align="center">
37
+
38
+ <img width="90" src="https://avatars.githubusercontent.com/u/129181562?s=200&v=4" alt="DetecTI Security Logo">
39
+
40
+ ### Modern External Attack Surface Mapping & Threat Intelligence Engine
41
+ **Asynchronous • Modular • High-Concurrency • EPSS + CISA KEV Prioritization • Masscan & Nuclei Active Scanning • Shodan • Censys • crt.sh • Reverse WHOIS**
42
+
43
+ [![Website: detecti.com.br](https://img.shields.io/badge/Official_Website-detecti.com.br-00d4ff.svg)](https://detecti.com.br)
44
+ [![Documentation: Official Docs](https://img.shields.io/badge/Documentation-Official_Docs-8A2BE2.svg)](https://detecti.com.br/docs/detecti-cli/en.html)
45
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
46
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
47
+ [![Code Style: Pydantic v2](https://img.shields.io/badge/Pydantic-v2-green.svg)](https://docs.pydantic.dev/)
48
+
49
+ </div>
50
+
51
+ ---
52
+
53
+ ## 📚 Official Documentation & Introduction
54
+
55
+ > 📖 Complete guides, installation, CLI usage, architecture, and threat intelligence scoring are available in the [**DetecTI-CLI Official Documentation**](https://detecti.com.br/docs/detecti-cli/en.html).
56
+
57
+ ### 🛡️ About DetecTI - Cyber Lead Intelligence
58
+ **DetecTI-CLI** (officially **DetecTI - Cyber Lead Intelligence**) is an enterprise-grade cyber intelligence and External Attack Surface Management (EASM) platform engineered by [DetecTI Security](https://detecti.com.br). It serves as the primary execution engine of the proprietary **R.A.D.A.R. Framework** (*Reconnaissance, Analysis, Diagnosis, Assessment, and Resolution*), materializing the organization's institutional pillars: *Open Source Collaboration*, *Technical Excellence*, *Ethical Hacking*, and *Pragmatism*.
59
+
60
+ In cybersecurity operations, a **Cyber Lead** is an exposed asset or attack vector discovered, enriched with threat intelligence, actively validated, and qualified by its real-world exploitation risk. DetecTI-CLI transforms noisy internet telemetry into qualified, prioritized intelligence so security teams can focus on what matters most.
61
+
62
+ ---
63
+
64
+ ## 🚀 Overview
65
+
66
+ **DetecTI - Cyber Lead Intelligence** is a high-performance Python 3.11+ engine designed for **External Attack Surface Management (EASM)**, **Active & Passive Asset Reconnaissance**, and **Vulnerability Weaponization Intelligence**.
67
+
68
+ It maps exposed internet infrastructure (domains, subdomains, IPs, open services, and banners), correlates organizational relationships via **Reverse WHOIS** and **Certificate Transparency**, executes high-speed active verification with **Masscan**, performs targeted vulnerability validation with **Nuclei** strictly against verified active endpoints (*Verified Active Rule*), and enriches identified CVEs with real-world exploitation risk data (**FIRST EPSS + CISA KEV**), weakness taxonomy (**CWE Name**), provenance tracking (**Vulnerability Source**), and public weaponization proofs (**ExploitDB + GitHub PoCs**).
69
+
70
+ ---
71
+
72
+ ## 🔄 Engine Data Flow & Correlation Pipeline
73
+
74
+ The DetecTI engine executes an asynchronous, multi-stage pipeline designed to discover, correlate, and prioritize internet-facing attack surfaces with threat intelligence feeds.
75
+
76
+ ```mermaid
77
+ flowchart TD
78
+ classDef input fill:#1e293b,stroke:#00d4ff,stroke-width:2px,color:#fff
79
+ classDef recon fill:#1e1e2e,stroke:#3b82f6,stroke-width:2px,color:#fff
80
+ classDef enrich fill:#2a1b3d,stroke:#9333ea,stroke-width:2px,color:#fff
81
+ classDef active fill:#3b1e5a,stroke:#a855f7,stroke-width:2px,color:#fff
82
+ classDef intel fill:#3b1e1e,stroke:#ef4444,stroke-width:2px,color:#fff
83
+ classDef correlate fill:#143024,stroke:#10b981,stroke-width:2px,color:#fff
84
+ classDef output fill:#2d2d2d,stroke:#f59e0b,stroke-width:2px,color:#fff
85
+
86
+ TARGET([🎯 Target Input: IP / CIDR / Domain / CVE / Query]):::input --> CLASSIFY[Target Classification & Validation]:::input
87
+
88
+ subgraph Stage1 [Stage 1: Primary Reconnaissance & Target Discovery]
89
+ CLASSIFY -->|Domain / Email| CRTSH[📜 crt.sh: Certificate Transparency Subdomains]:::recon
90
+ CLASSIFY -->|Domain / IP / Email| WHOIS[🏢 Reverse WHOIS: Associated Root Domains]:::recon
91
+ CLASSIFY -->|Domain / IP / CIDR / Query| SHODAN[🛰️ Shodan: Host Profile, Subnet Scans, DNS & Banners]:::recon
92
+ CLASSIFY -->|Direct IP / Fallback| CENSYS_DIRECT[🌐 Censys: Direct IP Profile]:::recon
93
+ end
94
+
95
+ subgraph Stage1_2 [Stage 1.2 & 1.3: DNS Resolution & Scope-Governed Feedback Loop]
96
+ CRTSH & WHOIS & SHODAN -->|Discovered Subdomains & Names| DNS_RES[⚡ Concurrent DNS A/AAAA Resolution]:::recon
97
+ DNS_RES -->|In-Scope Resolved IPs| THREAT_LOOP[🔄 Recursive Shodan & Censys Threat Profiling]:::recon
98
+ end
99
+
100
+ subgraph Stage1_4 [Stage 1.4: Automatic BGP & RDAP Fallback Enrichment]
101
+ THREAT_LOOP -->|Unprofiled / Zero-Banner IPs| BGP_RDAP[🌐 IP-API & RIPE Stat BGP/RDAP Enrichment]:::recon
102
+ end
103
+
104
+ subgraph Stage1_8 [Stage 1.8: Active Verification & Target Scanning]
105
+ THREAT_LOOP & BGP_RDAP -->|Marked Scan Targets| MASSCAN[⚡ Masscan: High-Speed Port & Banner Grabbing]:::active
106
+ MASSCAN -->|Verified Active Ports| NUCLEI[🛡️ Nuclei: Active Vulnerability Scan]:::active
107
+ end
108
+
109
+ subgraph Stage2 [Stage 2: Threat Intelligence & Vulnerability Scoring]
110
+ SHODAN & CENSYS_DIRECT & THREAT_LOOP & NUCLEI -->|Aggregated CVE IDs & Findings| CVE_AGG[CVE Aggregator & Deduplication]:::enrich
111
+ CVE_AGG --> NVD[🛡️ NVD 2.0: CVSS Base Score, Severity & CWE Name]:::intel
112
+ CVE_AGG --> EPSS[📈 FIRST EPSS: Real-world Exploit Probability %]:::intel
113
+ CVE_AGG --> CISA[🚨 CISA KEV: Active Exploitation & Ransomware Flag]:::intel
114
+ end
115
+
116
+ subgraph Stage3 [Stage 3: Weaponization & PoC Hunting]
117
+ CVE_AGG --> XDB[💣 ExploitDB: Verified Exploits & Shellcodes]:::intel
118
+ CVE_AGG --> GITHUB[🐙 GitHub PoC Hunter: Public Exploit Repositories]:::intel
119
+ end
120
+
121
+ subgraph Stage4 [Stage 4: Unified Graph Modeling & Correlation]
122
+ NVD & EPSS & CISA & XDB & GITHUB & NUCLEI --> CORRELATION[🔗 Unified Engine Correlation & Graph Synthesis]:::correlate
123
+ CRTSH & WHOIS & SHODAN & BGP_RDAP & MASSCAN --> CORRELATION
124
+ end
125
+
126
+ subgraph Stage5 [Stage 5: Multi-Channel Output]
127
+ CORRELATION --> DB[(💾 SQLite Persistence with Auto-Migrations)]:::output
128
+ CORRELATION --> CLI[📊 Rich Terminal Tables & Risk Badges]:::output
129
+ CORRELATION --> REPORT[📄 JSON, Markdown & HTML Reports]:::output
130
+ CORRELATION --> WEB[🌐 Responsive Cytoscape.js Web Dashboard]:::output
131
+ end
132
+ ```
133
+
134
+ ### 🔍 Step-by-Step Data Flow:
135
+
136
+ 1. **Target Classification & Scope Governance**:
137
+ - Categorizes input into `IP`, `CIDR range`, `Domain`, `CVE-ID`, `Email`, `Organization Query (org:)`, `ASN Query (asn:)`, `Custom Query`, or `Batch File`.
138
+ - **Strict Scope Governance for Org / ASN Targets**: When targeting organizations (`org:"..."`) or autonomous systems (`asn:"..."`), the engine strictly constrains the attack surface to assets owned by the target, quarantining foreign third-party IPs (e.g. CDNs or external providers) from polluting the inventory.
139
+
140
+ 2. **Stage 1: Primary Reconnaissance & Target Discovery**:
141
+ - **Shodan**: Primary discovery engine for custom queries, CIDR subnets, direct IP lookups, and host profiles.
142
+ - **Certificate Transparency (crt.sh)**: Discovers issued TLS/SSL certificates to uncover wildcards and hidden subdomains.
143
+ - **Reverse WHOIS (WhoisFreaks API + HackerTarget fallback)**: Identifies associated parent/child domains registered by the same organization.
144
+ - **Shared CDN / Anycast Reverse IP Bypass**: Automatically detects if the target domain or IP resides on shared CDN/Anycast edge proxies (Cloudflare, Fastly, Akamai, Imperva) and skips Reverse IP Lookups, preventing unrelated tenant websites from polluting the reconnaissance inventory.
145
+ - **Censys (Direct IP Lookups)**: Queries host profiles for direct single IP targets or primary fallback.
146
+
147
+ 3. **Stage 1.2 & 1.3: DNS Resolution & Recursive Threat Intel Feedback Loop**:
148
+ - Asynchronously resolves discovered subdomains and domains to their active `A`/`AAAA` IP addresses.
149
+ - **Target Domain Tree Scope Enforcement**: When scanning domain targets, DNS resolution and host node creation are strictly confined to the target domain's registered tree (`target.com` and `*.target.com`), ensuring third-party hosting infrastructures never spawn extraneous network nodes.
150
+ - In-scope IPs are fed into a recursive intelligence feedback loop (Shodan & Censys) to uncover full open port maps, services, and passive CVEs.
151
+
152
+ 4. **Stage 1.4: Automatic BGP / RDAP Fallback Enrichment**:
153
+ - For hosts discovered via DNS or CT logs that return 0 indexed services on search engines, the engine automatically performs non-blocking BGP routing and RDAP lookups (via IP-API and RIPE Stat) to populate **ASN**, **Organization name**, **Country**, **City**, **Region**, and **GPS Coordinates**.
154
+
155
+ 5. **Stage 1.8: Target Management & Active Scanning (Masscan + Nuclei)**:
156
+ - **Masscan Active Port Scan**: Targets marked on the graph are scanned at high speeds with banner grabbing (`--banners`) to verify live exposed services.
157
+ - **Smart Port Exclusion & 2-Phase Pipeline**: Automatically omits already confirmed active ports to minimize load. When scanning All Ports (`0-65535`), Phase 1 immediately tests known passive unverified ports for rapid visual feedback, followed by Phase 2 sweeping remaining ports.
158
+ - **Mandatory "Verified Active" Rule for Nuclei**: Nuclei strictly targets endpoints confirmed as **"Verified Active"**. If an IP target has unverified passive ports in the database, Nuclei requests a targeted Masscan pre-scan specifically for those passive ports. If verified active, Nuclei proceeds; otherwise, if no ports respond or no ports are mapped, the scan is safely skipped with an explanatory log in the console.
159
+
160
+ 6. **Stage 2: Threat Intelligence & Vulnerability Prioritization**:
161
+ - All unique CVE IDs identified across passive feeds and active Nuclei scans are aggregated and tracked by their provenance (**Vulnerability Source**: `Nuclei`, `NVD`, etc.).
162
+ - Prioritized via the **3D EASM Risk Matrix**: **CISA KEV** (P1 Active Exploitation) > **Weaponized PoCs & Exploits** > **FIRST EPSS Probability** > **CVSS Severity**.
163
+ - **NVD 2.0 API**: Retrieves official CVSS v3.1, v3.0, and v2.0 base scores, vector metrics, and **CWE (Common Weakness Enumeration)** weakness name.
164
+ - **FIRST EPSS API**: Appends real-world exploitation probability percentages (0.0% to 100%) and percentile scores.
165
+ - **CISA KEV Catalog**: Cross-checks vulnerabilities actively leveraged in ransomware and targeted cyber campaigns.
166
+
167
+ 7. **Stage 3: Weaponization & PoC Hunting**:
168
+ - **ExploitDB (searchsploit)**: Matches CVEs against local exploit scripts, PoCs, and shellcodes with verification tags.
169
+ - **GitHub PoC Intelligence**: Queries real-world public exploit repositories and verification status.
170
+
171
+ 8. **Stage 4: Graph Modeling & Relational Synthesis (Host-Centric & Target-Driven)**:
172
+ - Binds assets into a streamlined, high-performance attack chain topology:
173
+ $$\text{TARGET\_ROOT} \xrightarrow{\text{CONTAINS\_TARGET}} \text{HOST IPs / FQDN TARGETS} \xrightarrow{\text{EXPOSES / RESOLVES\_TO}} \text{SERVICES} \xrightarrow{\text{HAS\_VULN}} \text{CVEs}$$
174
+ - Enumerated passive domains and subdomains are embedded directly into the `target_root` searchable inventory and within Host IP metadata badges (`🌐 N FQDNs`), liberating canvas space and boosting rendering performance.
175
+
176
+ 9. **Stage 5: Persistence & Presentation**:
177
+ - Stores all relationships in a relational SQLite database with auto-migration support.
178
+ - Outputs formatted JSON, Executive Markdown, standalone HTML reports, and interactive web visualization graphs with direct references to [DetecTI Security](https://detecti.com.br).
179
+
180
+ ---
181
+
182
+ ## ⚡ Key Features
183
+
184
+ - **🌐 Infrastructure & Asset Mapping**:
185
+ - Direct IP, CIDR subnets (`192.168.1.0/24`), Domain, Organization (`org:`), ASN (`asn:`), and custom search query support.
186
+ - Port, service, product, version, and banner discovery.
187
+ - Automatic web service URL construction (`http://` vs `https://`).
188
+ - **Automatic BGP / RDAP Fallback Enrichment**: Unprofiled hosts are enriched in real-time with ASN, Organization, City, Region/State, Country, and geographic coordinates (Latitude/Longitude) with interactive Google Maps links in the Asset Inspector.
189
+ - **🔍 Subdomain & Domain Correlation & Scope Governance**:
190
+ - **Certificate Transparency (crt.sh)** for comprehensive subdomain enumeration.
191
+ - **Reverse WHOIS & CDN Proxy Bypass**: Correlates domains by registrant email, organization name, or domain (WhoisFreaks API + HackerTarget fallback), automatically bypassing Reverse IP queries on shared CDN edge proxies to eliminate tenant noise.
192
+ - **Target Domain Tree Scope Enforcement**: Strictly bounds DNS resolution and host network synthesis to the target domain's registered tree (`*.target.com`).
193
+ - **Authoritative DNS Resolution Isolation (Subdomain ➔ IP)**: Every subdomain links strictly and exclusively to its directly resolved IP addresses in DNS/TLS certificates, preventing any cross-contamination or spurious associations between sibling subdomains.
194
+ - **Strict Scope Governance for Org / ASN Targets**: Guarantees that only infrastructure owned by the target is registered in the database, discarding external third-party IPs.
195
+ - Shodan DNS historical record mapping.
196
+ - **🛡️ Advanced Threat Intelligence & Risk Prioritization**:
197
+ - **3D EASM Risk Matrix**: Intelligent sorting placing actively exploited CISA KEV flaws, weaponized PoCs, and high EPSS probability at the top.
198
+ - **NVD 2.0 API**: CVSS base scores, severity levels, and **CWE Name** weakness mapping.
199
+ - **FIRST EPSS**: Exploit Prediction Scoring System (probability percentage & percentile).
200
+ - **CISA KEV**: Catalogs vulnerabilities actively exploited in real-world attacks & ransomware campaigns.
201
+ - **ExploitDB & GitHub PoCs**: Direct links to public exploits and proof-of-concept repositories.
202
+ - **Source Provenance Tracking**: Clear visibility of where each vulnerability was identified (`Nuclei`, `NVD`, etc.) in all graph views, node inspectors, and Risk Metrics accordions.
203
+ - **💻 Interactive & Fully Responsive Web Dashboard (DetecTIHound)**:
204
+ - Asynchronous FastAPI web server rendering rich EASM network graphs with Cytoscape.js.
205
+ - **Host-Centric & Target-Driven Architecture**:
206
+ - **Clean Attack Chain**: Direct topological flow from `Target Root ──(CONTAINS_TARGET)──► Host IPs ──(EXPOSES)──► Services ──(HAS_VULN)──► CVEs`.
207
+ - **Asset Inspector DNS Inventories**: Clicking the `target_root` anchor displays complete searchable accordions for `🌐 Enumerated Domains (X)` and `🏷️ Enumerated Subdomains (Y)` with instant filtering, copy controls, and 1-click **`Set as Target (FQDN)`** actions.
208
+ - **On-Demand FQDN Materialization**: Marking an FQDN as an active scan target materializes it on the canvas (`Target Root ──(CONTAINS_TARGET)──► FQDN ──(RESOLVES_TO)──► Host IP`).
209
+ - **Compact IP Badges**: Host IPs display clean metadata chips (`🌐 N FQDNs`) with expandable Virtual Hosts in the Asset Inspector.
210
+ - **Lead Selector Zero-Render Default & Smart Scan Preservation**:
211
+ - **Clean Initial Load**: On database load or database switch, leads start unchecked by default with an empty canvas ready for tactical query exploration.
212
+ - **Real-Time Post-Scan Preservation**: When active scans (Masscan / Nuclei) complete, active lead selections are preserved seamlessly so newly discovered open ports, services, and CVEs appear on screen without resetting analyst workflow.
213
+ - **Strict Attack Path Isolation in Filtering**: When applying risk or vulnerability filters (Critical, CISA KEV, High EPSS, 3D Risk Matrix), the graph isolates the exact single-lineage attack path (`Target Root ──► Host IP ──► Service / Port ──► CVE`), pruning 100% of non-vulnerable IPs and background noise.
214
+ - **Bidirectional Inspector Navigation**:
215
+ - Inspecting a **Host IP** displays all active **Associated FQDNs & Virtual Hosts** with dedicated focus and filter buttons.
216
+ - Inspecting an **FQDN Target** displays its **Resolved IP** with a 1-click `[ ⌖ Focus ]` crosshair button.
217
+ - **Hierarchical (Left-Right, Default) DAG Layout**:
218
+ - Left-to-Right orientation flowing from `Target Root (x=0)` $\rightarrow$ `FQDN Targets / Host IPs (x=280)` $\rightarrow$ `Services (x=IP.x+110)` $\rightarrow$ `CVEs (x=Srv.x+80)`.
219
+ - Matrix grid supporting up to 9 Host IPs per vertical column with dynamic clearance to eliminate node overlap across large enterprise ranges.
220
+ - **Retractable Filters & Controls Drawer**: Smoothly collapse the left sidebar to liberate 100% of the screen for graph exploration across all desktop and mobile devices.
221
+ - **Clean & Focused Asset Inspector**: Dedicated strictly to technical metadata, CWE descriptions, affected ports, IP geolocation, associated domains, weaponized exploit URLs, banner metadata, and explicit vulnerability **Source** attribution.
222
+ - **Intuitive Mouse Navigation & Node Organization**:
223
+ - **Left-Click (Drag)**: Pan and navigate smoothly across the canvas.
224
+ - **Left-Click (Node)**: Select single node and inspect deep asset metadata in the Asset Inspector.
225
+ - **Ctrl + Left-Click (Node)** / **Cmd + Left-Click**: Additive sequential multi-selection of target nodes.
226
+ - **Right-Click (Node)**: Custom Context Menu to Collapse/Uncollapse Services or Vulnerabilities, Set/Remove Targets (IPs and FQDNs), Remove Verified Active, Focus Node, or Copy Domain/IP/CVE identifiers.
227
+ - **Right-Click (Drag)**: Box area selection to group and reposition multiple nodes together.
228
+ - **Smooth Scroll Wheel**: Seamless zoom in/out centered directly at the cursor position.
229
+ - **Granular Graph Filters**:
230
+ - `CISA KEV (Known Exploited)`
231
+ - `High EPSS (>50% Exploit Probability)`
232
+ - `Critical Vulnerabilities (CVSS 9.0+)`
233
+ - `Hide Low & Info Findings`
234
+ - `Nuclei Scan Findings Only`
235
+ - `Verified Public PoCs / Exploits`
236
+ - `Exposed Services Branches`
237
+ - `Verified Active Services Only`
238
+ - `Vulnerable Services Only`
239
+ - **Visual Topology & Semantic Relationships**: Interactive graph engine with distinct node geometry, high-contrast colors (Electric Purple root query anchor, turquoise FQDN targets, purple IPs, orange/green service hexagons, red CVE diamonds, and crimson CISA KEV highlights), and directed relationship edges.
240
+ - **Dynamic Database Switcher**: Seamlessly switch between any saved SQLite databases without server restart (including a rich pre-packaged demo dataset in `example.com.sqlite`).
241
+ - **Export Data Menu**: One-click download of active scan data in **JSON**, **Executive Markdown**, and **Standalone HTML** formats.
242
+ - **Floating Action Controls**: Instant access to `📐 Fit to Screen`, `🔍 Reset Zoom`, `🔄 Re-layout`, and **Layout Selector** (`🌳 Hierarchical (Left-Right, Default)`, `🌐 Force-Directed`, `🎯 Concentric`, `▦ Grid`).
243
+ - **Smart Collapsible Clusters (High Fan-Out Optimization)**: Group high-density services or vulnerabilities into clean, collapsible cluster nodes with a dashed border.
244
+ - **🎯 Target Management & High-Speed Active Port Scanning (Masscan)**:
245
+ - **Hybrid IP & FQDN Target Scanning**:
246
+ - **FQDN Targets for Reverse Proxies / CDNs / Virtual Hosts**: In environments protected by Cloudflare, AWS CloudFront, Akamai, or Nginx/Apache Virtual Hosts, direct IP scanning fails due to TLS SNI requirements and HTTP `Host:` headers. DetecTIHound allows setting **Domains and Subdomains directly as scan targets** (**Set as Target (FQDN)**).
247
+ - **Dynamic FQDN-to-IP Live Resolution & Automatic Graph Linkage (`RESOLVES_TO`)**: When an FQDN is scanned, the engine performs live authoritative DNS resolution:
248
+ - **New Unlisted IP**: Dynamically creates a new IP node in the database and on the graph, binding it with a direct **`RESOLVES_TO`** edge from the FQDN.
249
+ - **Existing IP**: If the resolved IP already exists on the graph but was disconnected or linked elsewhere, the direct **`RESOLVES_TO`** edge is automatically created and rendered connecting the FQDN to that IP.
250
+ - **Service Port Sync**: Existing passive ports on that IP are promoted to **`Confirmed Active`** (with `"Masscan"` appended to sources), and newly discovered active ports are dynamically created under the host IP.
251
+ - **Multi-Source Strict Service Deduplication**: Prevents duplicate service entries per `(IP, Port, Protocol)` across passive recon and active scanning. Merges sources (`Shodan`, `Censys`, `Masscan`, `Nuclei`), enriches banners and version details, and ensures a clean 1:1 service port visualization in Cytoscape.
252
+ - **Right-Click Target Marking & Bulk Selection**: Mark/unmark any individual `IP Address`, `Domain`, or `Subdomain` node as a scan target directly from the Cytoscape graph context menu (**Set as Target** / **Remove Target**). (Note: The abstract `target_root` node cannot be marked as an individual scan target).
253
+ - **Bulk Target Addition on Root Nodes**: Right-click on any `Domain` or parent node to instantly mark or unmark **all associated descendant IPs** as scan targets in a single click (**Set all N IPs as Targets** / **Remove all N IPs from Targets**).
254
+ - **Active Verification Reset (Remove Verified Active)**: Right-click individual active services or parent root nodes to reset active verification back to passive status for targeted re-scans without losing existing asset metadata.
255
+ - **Smart Port Exclusion**: Automatically filters out ports already marked `Confirmed Active` to avoid duplicate scanning and save network bandwidth.
256
+ - **2-Phase Pipeline for All Ports (0-65535)**: Phase 1 prioritizes unverified passive ports for immediate 1-2s visual confirmation, followed by Phase 2 batch sweep of remaining ports.
257
+ - **Target Management Drawer**: Right-side sliding panel providing real-time target status (`Idle`, `Scanning`, `Completed`, `Failed`), discovered open port counts, port chips with banner tooltips, individual or bulk scan execution, and a live console output stream.
258
+ - **Live Scan Indicator**: Pulsing **`Scanning...`** badge and visual status indicators on the Targets header button while port or vulnerability scans are executing in the background.
259
+ - **Flexible Scan Presets & Rate Control**: Quick port profiles (*Top 100*, *Web Ports*, *All Ports 0-65535*, *Custom*), packet rate slider (100 to 10,000 pps), `-Pn` (disable ping), and `--banners` (banner grabbing & service detection).
260
+ - **Visual Topology Differentiation**:
261
+ - Marked target nodes display a pulsing **Neon Cyan (.is-target)** glow and active target status in Cytoscape.
262
+ - Services awaiting active verification render in dark slate with dashed amber borders (`#f59e0b`).
263
+ - Confirmed active services render in solid **Emerald Green (#27ae60)** with an emerald border and glow.
264
+ - Active scan service connections render as solid **Emerald Green relationship edges** (`#2ecc71`).
265
+ - **🛡️ Active Vulnerability Scanning (Nuclei)**:
266
+ - Integration with ProjectDiscovery's **Nuclei** engine for template-based vulnerability assessment against both raw IPs and FQDN endpoints (`https://<fqdn>`, `http://<fqdn>`).
267
+ - **FQDN Findings Resolution**: Vulnerabilities identified against FQDN endpoints automatically resolve and bind to the connected host IP and its corresponding port in the database and graph.
268
+ - **Mandatory "Verified Active" Enforcement on Raw IPs**: IP scans are strictly targeted at ports confirmed open and active via Masscan. Unverified passive ports trigger a targeted Masscan pre-scan verification prior to template execution. If unverified or unavailable, Nuclei safely skips with explicit rationale logged.
269
+ - Configurable severity filters (Critical, High, Medium, Low, Info), protocol/template tags, rate limits, concurrency, and custom flags.
270
+ - Automated database merging, deduplication, and immediate Cytoscape graph node generation with weaponized PoC linkage.
271
+ - **🎯 Target Anchoring & Active Recon Staging**:
272
+ - Targets (IPs, CIDR subnets, domains, or target lists passed via `targets.txt`) without passive reconnaissance records on external search engines are automatically anchored as `Target (Awaiting Active Recon)` nodes.
273
+ - Guarantees that every queried asset is mapped into the SQLite database and rendered in the DetecTIHound interactive graph, ready for active port discovery (Masscan) and vulnerability probing (Nuclei).
274
+ - **⚡ Domain-Level Rate Limiting & API Resilience**:
275
+ - Automatic rate-limit synchronization with official API specifications (e.g. Shodan 1 request/second) to prevent HTTP 429 throttling.
276
+ - Smart pre-flight validation caching and non-blocking retry-after handling during large batch file executions.
277
+ - Exact API diagnostic messaging (`No information available for that IP.`, rate limit notifications) logged and attributed directly to each target in reports and console streams.
278
+ - **🔐 Pre-Flight API Verification & Sanity Checking**:
279
+ - Built-in sanity layer (`config-check` and engine pre-flight) that filters dummy placeholder keys and verifies valid authentication before running scans, preventing silent 401/403 authorization errors.
280
+ - **📊 Executive & Structured Reporting**:
281
+ - Automated local SQLite database persistence for mapped targets inside `./data/dbs/`.
282
+ - Rich, interactive terminal tables with colored risk badges.
283
+ - Structured **JSON** export (`--format json`).
284
+ - Executive **Markdown** report generation (`--format markdown`) with official DetecTI Security attribution.
285
+ - Standalone, styled **HTML** report generation (`--format html`) with print-to-PDF formatting.
286
+
287
+ ---
288
+
289
+ ## 📦 Installation
290
+
291
+ ### Prerequisites
292
+ - **Python**: 3.11 or higher
293
+ - **Masscan** (Required for WebUI Active Port Scanning):
294
+ - Masscan must be installed on your operating system and configured with appropriate Linux capabilities so the WebUI background workers can transmit raw network packets without requiring the web server to run as root.
295
+ ```bash
296
+ # Debian / Ubuntu / Kali Linux
297
+ sudo apt install -y masscan
298
+
299
+ # Arch Linux / Manjaro
300
+ sudo pacman -S masscan
301
+
302
+ # Fedora / RHEL
303
+ sudo dnf install -y masscan
304
+
305
+ # Grant non-root raw socket capabilities to allow WebUI execution:
306
+ sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip $(which masscan)
307
+ ```
308
+ - **Nuclei** (Optional / Recommended for Active Vulnerability Scanning):
309
+ - Nuclei should be installed and accessible in your system `PATH` to run active vulnerability scans from the WebUI.
310
+ ```bash
311
+ # Via Go:
312
+ go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
313
+
314
+ # Via Binary / Homebrew / Package Manager (Debian/Ubuntu/Kali):
315
+ sudo apt install -y nuclei # If available in your distribution repo
316
+ # Or download pre-built binary from https://github.com/projectdiscovery/nuclei/releases
317
+ ```
318
+
319
+ ### Quick Installation & Automated Setup
320
+ ```bash
321
+ git clone https://github.com/detectisec/DetecTI-CLI.git
322
+ cd DetecTI-CLI
323
+
324
+ # Run the automated installer
325
+ # (Bootstraps dependencies, configures capabilities, creates directories,
326
+ # sets up your secure Web Dashboard admin credentials, and creates the global executable)
327
+ python3 install.py
328
+
329
+ # The command is now available globally! You can safely delete the cloned folder.
330
+ detecti-cli --help
331
+ ```
332
+
333
+ ---
334
+
335
+ ## ⚙️ Configuration & API Diagnostics
336
+
337
+ DetecTI-CLI works out-of-the-box with free fallbacks (crt.sh, HackerTarget, EPSS, CISA KEV, GitHub PoC API), but you can configure API keys for full power:
338
+
339
+ Create a `.env` file (automatically cloned from `.env.example` during setup) or export environment variables:
340
+ ```bash
341
+ # Required for Shodan queries
342
+ export SHODAN_API_KEY="your_shodan_api_key_here"
343
+
344
+ # Optional: Censys Platform API v3 PAT Token and Org ID
345
+ export CENSYS_PAT_TOKEN="your_censys_pat_token_here"
346
+ export CENSYS_ORG_ID="your_censys_org_id_here" # (Optional for multi-tenant orgs)
347
+
348
+ # Optional: Accelerates NVD API rate limits
349
+ export NVD_API_KEY="your_nvd_api_key_here"
350
+
351
+ # Optional: For structured WhoisFreaks reverse WHOIS lookups
352
+ export WHOISFREAKS_API_KEY="your_whoisfreaks_api_key_here"
353
+
354
+ # Optional: GitHub token for PoC queries
355
+ export GITHUB_TOKEN="your_github_token_here"
356
+ ```
357
+
358
+ ### Diagnostics & Automated Pre-requisite Configuration
359
+ Verify your environment health, Python packages, project directories, raw socket capabilities, and live API endpoints:
360
+ ```bash
361
+ # Run diagnostics check
362
+ ./detecti-cli config-check
363
+
364
+ # Automatically configure missing prerequisites, directories, and capabilities
365
+ ./detecti-cli config-check --setup
366
+ ```
367
+
368
+ ---
369
+
370
+ ## 💻 Usage & CLI Examples
371
+
372
+ ### 1. Scan a Single IP or CIDR Subnet
373
+ ```bash
374
+ # Scan single IP
375
+ ./detecti-cli scan -t 142.250.191.68
376
+
377
+ # Scan CIDR range
378
+ ./detecti-cli scan -t 142.250.191.0/24
379
+ ```
380
+
381
+ ### 2. Scan a Domain (Subdomains + Reverse WHOIS + Infrastructure)
382
+ ```bash
383
+ ./detecti-cli scan -t spacex.com
384
+ ```
385
+
386
+ ### 3. Scan a Batch Target List from File
387
+ Pass any file containing targets (one IP, CIDR, or domain per line) directly to `-t`:
388
+ ```bash
389
+ ./detecti-cli scan -t targets.txt
390
+ ```
391
+ > 💡 **Tip**: Automatically validates API credentials once for the entire batch, provides live per-target progress updates, and maps all targets into a unified SQLite database and Cytoscape topology in DetecTIHound ready for active recon.
392
+
393
+ ### 4. Scan a Specific CVE with EPSS, CISA KEV, and PoCs
394
+ ```bash
395
+ ./detecti-cli scan -t CVE-2021-44228
396
+ ```
397
+
398
+ ### 5. Advanced Shodan Search Queries
399
+ You can pass custom Shodan search queries directly into the target `-t` parameter. **Always enclose the query in double quotes ("")**.
400
+
401
+ ```bash
402
+ # Search by Organization Name
403
+ ./detecti-cli scan -t "org:'ACME LTDA'" -f acme.md
404
+
405
+ # Search by City and Open Service
406
+ ./detecti-cli scan -t "city:'washington' port:8080" -o markdown -f washington.md
407
+
408
+ # Search by SSL Certificate Organization
409
+ ./detecti-cli scan -t "ssl.cert.subject.cn:'SpaceX'"
410
+ ```
411
+ > 💡 **Tip**: Explore all available search filters in the official [Shodan Search Filters Guide](https://www.shodan.io/search/filters).
412
+
413
+ ### 6. Filter Vulnerabilities by CVSS Severity
414
+ ```bash
415
+ ./detecti-cli scan -t 142.250.191.68 --cvss critical
416
+ ```
417
+
418
+ ### 7. Automatic SQLite Database Persistence & DetecTIHound Launch
419
+ Target scans automatically save all correlated entities (Domains, IPs, Ports, Services, CVEs, PoCs) into `./data/dbs/{target_root}.sqlite` and automatically launch the **DetecTIHound** WebGUI:
420
+
421
+ ```bash
422
+ # Scan a domain (automatically creates ./data/dbs/spacex.com.sqlite and starts Hound)
423
+ ./detecti-cli scan -t spacex.com
424
+
425
+ # Scan a batch list of targets
426
+ ./detecti-cli scan -t targets.txt
427
+
428
+ # Scan with custom database name
429
+ ./detecti-cli scan -t 142.250.191.0/24 --create-db google_net
430
+ ```
431
+ > 💡 All scan databases are centralized in `./data/dbs/` so both the CLI and DetecTIHound can automatically discover, list, and switch between them. (Note: Standalone CVE lookups like `CVE-2021-44228` do not create databases).
432
+
433
+ ### 8. Export Reports (JSON, Markdown & HTML)
434
+ ```bash
435
+ # Export Markdown executive report
436
+ ./detecti-cli scan -t example.com -o markdown -f report.md
437
+
438
+ # Export standalone styled HTML report
439
+ ./detecti-cli scan -t example.com -o html -f report.html
440
+
441
+ # Export JSON structured data
442
+ ./detecti-cli scan -t example.com -o json -f report.json
443
+
444
+ # Export all formats to a directory
445
+ ./detecti-cli scan -t example.com -o all -d ./reports
446
+ ```
447
+
448
+ ### 8. Update ExploitDB Database
449
+ ```bash
450
+ ./detecti-cli update-xdb
451
+ ```
452
+
453
+ ### 9. Interactive EASM Web Dashboard (DetecTIHound)
454
+ Explore the mapped attack surface visually via the interactive web application from previously saved SQLite databases:
455
+
456
+ ```bash
457
+ # Start the DetecTIHound web dashboard (databases are selected dynamically directly in the Web UI)
458
+ ./detecti-cli hound start
459
+
460
+ # List available databases from previous scans (stored in ./data/dbs)
461
+ ./detecti-cli hound list-dbs
462
+
463
+ # Check the background server status
464
+ ./detecti-cli hound status
465
+
466
+ # Stop the web server
467
+ ./detecti-cli hound stop
468
+ ```
469
+
470
+ #### 🌟 Web Dashboard & Cytoscape Graph Highlights:
471
+ - **🔒 Secure Authentication (JWT)**: Fully protected dashboard access. The `./detecti-cli setup` securely generates a persistent `JWT_SECRET_KEY` in your `.env` derived from your admin password. Includes 30-minute HttpOnly cookie expiration and explicit Session Termination controls.
472
+ - **Dynamic Database Switcher**: Switch between any saved SQLite database in `./data/dbs/` directly from the header dropdown without restarting the server.
473
+ - **Strict 2-State Service Semantics**:
474
+ - `⚠️ Awaiting Active Confirmation`: Dark slate hexagon with dashed amber border for passive recon findings.
475
+ - `✅ Confirmed Active`: Canonical **Emerald Green** solid hexagon (`#27ae60`) once validated by Masscan active scan.
476
+ - **Export Data Menu**: Instant one-click download of the active scan in **JSON**, **Markdown**, or standalone **HTML** format (with built-in print/PDF styling).
477
+ - **Interactive Graph Visualization**: Full Cytoscape.js topology with multiple layout algorithms (`⚡ Force-Directed Adv`, `🌳 Hierarchical`, `🎯 Concentric`, `▦ Grid`) featuring a minimalist, floating DetecTI logo as the root target node.
478
+ - **Explore Leads Real-Time Search**: Instant search box inside the Explore Leads modal to quickly filter subdomains, IPs, and hostnames across massive attack surfaces.
479
+ - **Cross-Session Target Hydration & Sanitization**: Strict CLI-level URL sanitization ensures pure FQDN ingestion (preventing duplicates), while explicit targets are dynamically rehydrated and auto-rendered across multiple dashboard sessions.
480
+ - **Target Management & Active Scans**: In-app Masscan port scanner and Nuclei vulnerability runner with live stream logs.
481
+ - **Official Documentation**: Direct integration to the official [DetecTI-CLI Documentation](https://detecti.com.br/docs/detecti-cli/en.html) from the header and sidebar.
482
+
483
+
484
+ ---
485
+
486
+ ## 🏗️ Architecture
487
+
488
+ ```
489
+ DetecTI-CLI/
490
+ ├── cli.py # Typer & Rich Command Line Interface entrypoint
491
+ ├── config.py # Pydantic Settings, .env & Environment Loader
492
+ ├── data/ # Central Scan Data Directory
493
+ │ └── dbs/ # Persistent SQLite Attack Surface Databases (.sqlite)
494
+ │ └── example.com.sqlite # Default pre-populated enterprise graph & test dataset
495
+ ├── core/
496
+ │ ├── engine.py # Asynchronous Multi-Stage Pipeline & Correlation Engine
497
+ │ ├── models.py # Unified Pydantic v2 Finding, Host & Intel Data Models
498
+ │ └── database/
499
+ │ ├── schema.py # SQLite Relational Schema (Domains, Subdomains, IPs, Services, Vulns, PoCs)
500
+ │ └── storage.py # DatabaseManager Persistence & Query Layer
501
+ ├── modules/ # Plug-and-Play Intelligence Collectors
502
+ │ ├── base.py # BaseModule Abstract Interface & Common Methods
503
+ │ ├── crtsh.py # Certificate Transparency Subdomain Enumeration
504
+ │ ├── reverse_whois.py # Reverse WHOIS (Hybrid WhoisFreaks + Free Fallback)
505
+ │ ├── shodan.py # Shodan Host, DNS, Range & Query Scanner
506
+ │ ├── censys.py # Censys Platform API v3 Asset & Host Intelligence (CenQL)
507
+ │ ├── masscan.py # High-Speed Active Port Scanner & Banner Grabbing Runner
508
+ │ ├── nuclei.py # Asynchronous Nuclei Vulnerability Scanner Engine
509
+ │ ├── nvd.py # NVD 2.0 (CVSS/CWE) + EPSS Probability + CISA KEV
510
+ │ └── exploitdb.py # ExploitDB (searchsploit) & GitHub PoC Collector
511
+ ├── reporters/ # Report Generation Subsystem
512
+ │ ├── csv_reporter.py # Flat CSV Exporter for Spreadsheet Analysis
513
+ │ ├── html_reporter.py # Standalone Styled HTML Exporter (Browser & Print-Ready)
514
+ │ ├── json_reporter.py # Formatted JSON Exporter
515
+ │ └── markdown_reporter.py # Executive Markdown Exporter
516
+ ├── web/ # Interactive EASM Dashboard Subsystem
517
+ │ ├── api/
518
+ │ │ ├── graph_builder.py # Cytoscape Graph Topology & Target-Root Relationship Builder
519
+ │ │ └── routes.py # FastAPI Endpoints (/databases, /summary, /graph, /assets, /export)
520
+ │ ├── static/
521
+ │ │ ├── css/ # Responsive Dashboard Styles (Dark Theme, Drawer, Breakpoints)
522
+ │ │ ├── js/ # Cytoscape Graph Engine, Scoped Lead Selector, Filters & Inspector
523
+ │ │ └── index.html # Single Page Application UI
524
+ │ ├── process_manager.py # Background Daemon Server Manager (PID/Status control)
525
+ │ └── server.py # Asynchronous FastAPI & Uvicorn Server
526
+ ├── utils/
527
+ │ ├── http.py # Centralized Async HTTPX Client (Retries, Limits & Headers)
528
+ │ └── logger.py # Rich Console Theme, Colored Risk Badges & Tables
529
+ ├── tests/ # Pytest Unit & Integration Test Suite
530
+ └── pyproject.toml # Modern Packaging & Dependency Definition
531
+ ```
532
+
533
+ ---
534
+
535
+ ## 🧪 Testing
536
+
537
+ Run the test suite with `pytest`:
538
+ ```bash
539
+ pytest -v
540
+ ```
541
+
542
+ ---
543
+
544
+ ## 🛠️ Creator and Maintainer
545
+
546
+ <a href="https://github.com/Ls4ss">
547
+ <img src="https://avatars.githubusercontent.com/u/25537761?v=4" width="100px;" style="border-radius: 50%;" alt="Ls4ss Profile"/>
548
+ <br />
549
+ <sub><b>Lucas S. (Ls4ss)</b></sub>
550
+ </a>
551
+ <br />
552
+ <sub>Developed for <b><a href="https://detecti.com.br" target="_blank">DetecTI Security</a></b></sub>
553
+
554
+ Feel free to open Issues or submit Pull Requests to contribute!
@@ -0,0 +1,64 @@
1
+ detecti/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ detecti/cli.py,sha256=N1C71-n66-RyEHbVh3asF6KtVd6qpKddYthkaeh2uW8,24634
3
+ detecti/config.py,sha256=DF-NOHmCIL2ZBKOlUhxKFxtGyggMnBYln6VRPlauhZE,7422
4
+ detecti/core/__init__.py,sha256=1Is1Pr0d5iw6xbrigZt-EhSyEjNAWJ_8DUdLgkAl4sA,43
5
+ detecti/core/engine.py,sha256=v3qnQyKB4SlgURR_0TvqCaZBfH2uSJIC3hnMiOilEyM,49663
6
+ detecti/core/models.py,sha256=WdMBr4DCs24BPf6VV9JGSaOlWFCf6RrAgFdgCaIkRJo,14652
7
+ detecti/core/database/__init__.py,sha256=QZ2a9hQoHmkH4gjYd-SVM2tT7F6l1fHt4TkpgUu_Mqw,136
8
+ detecti/core/database/config_db.py,sha256=Z6QktmgFT-tIPA2jCRf5SOrOYw8-gOLgRGoUMitQF_8,2474
9
+ detecti/core/database/schema.py,sha256=P3ET_am115EnyXsbz3zPPz6u88TpNf9r_DNlYVUEfW0,3996
10
+ detecti/core/database/storage.py,sha256=5pBNzYeJ6SVMQGjYco1GCJafKdNRchutERYSCmKpbCM,66319
11
+ detecti/data/config.sqlite,sha256=W7MtRtNNeNo1Eo83Rch1ctS8m-uOya7qazsJYKe3r0E,16384
12
+ detecti/data/dbs/.gitkeep,sha256=tcO4pK9_wKB-G4E-1sY0EjmwqBaudU9uuNwShRPV7EQ,148
13
+ detecti/data/dbs/example.com.sqlite,sha256=2t-NgyRXlWe64VssqQ1KdKD3FO9sN3VNqnT3SFErV3M,221184
14
+ detecti/modules/__init__.py,sha256=kpqnntVw21DGs6LQALeIqWav0IyeTBG_LSQz82CRats,773
15
+ detecti/modules/base.py,sha256=VWjqsnwC69uohodzo1Jp2HCi87F2UiY0_PlyQke6Vwo,1879
16
+ detecti/modules/censys.py,sha256=MsDZ--UPpiHYAphD1UQSqhp96KLreIm5mL7iALX0Q8w,35409
17
+ detecti/modules/crtsh.py,sha256=Da1G5dysNkBWjKeyJ8I9EVYCNI6iADtKSckf1dtKh9c,3515
18
+ detecti/modules/exploitdb.py,sha256=tCCjwg9V38yCaRNetnqQNenhucKqiveet5Ej1uug-VM,5392
19
+ detecti/modules/masscan.py,sha256=0n4gs7Ah_NA85hernxBuMAirn0HCz2xdY2ptICdGZnw,21128
20
+ detecti/modules/nuclei.py,sha256=LLpYM4-nWj2RENYUC_Pq9zj28Kwxi8qRCq_fgxTmV40,18717
21
+ detecti/modules/nvd.py,sha256=0O8x1fF0zUSk-87hbCEXpOGuwZhLzXBp518gsTCWMFg,12709
22
+ detecti/modules/reverse_whois.py,sha256=bgEbaH7JBBDXYPhlV8q8sgG6dFJySDK3qGkvSCYDyC8,9933
23
+ detecti/modules/shodan.py,sha256=UAS_UpN2Lv_yky2Aib1ZVlhlBHeWZrcTPrcJ9k7bpBU,15747
24
+ detecti/reporters/__init__.py,sha256=4LwWlgTW0hJqfyFB3613bfWOHxQtU1R-JjpvWLryMw4,298
25
+ detecti/reporters/csv_reporter.py,sha256=-s6LkxNsoWXFIJ-wztCQn08-OlnMUxmGGCl2jtyyq9E,2708
26
+ detecti/reporters/html_reporter.py,sha256=A_SVm1axlw-GnQ42qsbKn59itIZuDIKtJv8ohnTrQfU,10815
27
+ detecti/reporters/json_reporter.py,sha256=U2WQGBug_tXFLnmmwRc9XWPo0nqe81BTvBdzCePZyUk,824
28
+ detecti/reporters/markdown_reporter.py,sha256=mrP6vB1mC_WsTuMTce6hml1DA1fl_dfZ4ycTO7xAs0k,11279
29
+ detecti/utils/__init__.py,sha256=8kTBKRi5lDlJDnLmcKwePR7XRKTZj52ZImhvwJM55vI,41
30
+ detecti/utils/http.py,sha256=jY0VQ-IxV8bqmUJCDL1ab29hqbkfK0wegGIKONJ-ZPY,11043
31
+ detecti/utils/logger.py,sha256=De4qU2cNP8AgntfsaEkAB9oNYy46HOjUjVPd0NqEtMI,17795
32
+ detecti/utils/setup.py,sha256=zsw9wHs9ZTA0-U0DbgIaza5J-SdHnn8MbHL2dNpBjUQ,22132
33
+ detecti/web/__init__.py,sha256=Ac1nit8LJ-q4vIOrBvTAgwx2jpHBB_tt2AxHagc3jck,168
34
+ detecti/web/process_manager.py,sha256=w1nnoPzMXwX4PiIAdDxT1FTj0cIBaclQEvIDKnBWSy8,10754
35
+ detecti/web/server.py,sha256=upsOjMNqTRi_SSnff205fGp5cVzq8M_WLbOr_CB7Xw4,6312
36
+ detecti/web/api/__init__.py,sha256=X4dyTvr2dOCyn1daWpo2vPZzIg4JGjPZ7DBAKStLGV8,48
37
+ detecti/web/api/auth.py,sha256=CswkxsY8dqgE-J80R81TjIumXAaU3DQx-OzHTSD6nYc,3759
38
+ detecti/web/api/graph_builder.py,sha256=LcrTwHWzR5y5tMFz-NGpNfFWfjVoDwr_K4oO9Cr8XFw,45784
39
+ detecti/web/api/routes.py,sha256=42KR41pL6gNQ6JsezOkgyUyQh-OTUIS0Bgs8O1ftx0k,71152
40
+ detecti/web/static/android-chrome-192x192.png,sha256=Uf8TsU4Pddy5tAkHPijaZaST0DEaqs1sz5gT6oZ4k_g,53178
41
+ detecti/web/static/android-chrome-512x512.png,sha256=vCxEeONgjvSlChF8yDvH3qylmCXN3BuFp71KDbdvCD4,386420
42
+ detecti/web/static/apple-touch-icon.png,sha256=BY_EdMviafF-3WrX7GKi9hV_hzeoe0vEq8TYsHgfIKs,47867
43
+ detecti/web/static/favicon-16x16.png,sha256=8JxQ7dfnBvIYhrygr3OV2br2K9ltgyZLVEtDC_4kSDw,963
44
+ detecti/web/static/favicon-32x32.png,sha256=OnkJ-_e6sbASK46nJt27J-E3oLS6RU3TZIeOzluirx0,2790
45
+ detecti/web/static/favicon.ico,sha256=WAx2zKcm5BhVRiyOCfJxksBXnDpGay_J139YkXyCids,15406
46
+ detecti/web/static/index.html,sha256=7NBPsil9ZvWviNSu6QGvdMRyT47gLwwSzS2ECMOmDYs,44239
47
+ detecti/web/static/login.html,sha256=XZ96aN70XlvqfJ5pDR_23nxUNXtvTGoeUfrKHyndtiU,9713
48
+ detecti/web/static/site.webmanifest,sha256=ep4Hzh9zhmiZF2At3Fp1dQrYQuYF_3ZPZxc1KcGBvwQ,263
49
+ detecti/web/static/css/__init__.py,sha256=FzUSs87qhGHE9kWVKvt8adQvF_rU7wgHZfoupTWIxgQ,45
50
+ detecti/web/static/css/dashboard.css,sha256=VIDCXji8ubZ3wa-iKkzJ4aZHzC0CS_TdLxX8rXbMMjI,81726
51
+ detecti/web/static/img/DetecTI_Security_Logo.png,sha256=JJc0kn0H_vwQyK8s_Jg_1HDUZ8wJAtJ9MrVMNeFWcnA,43092
52
+ detecti/web/static/img/detecti-ico.png,sha256=JJc0kn0H_vwQyK8s_Jg_1HDUZ8wJAtJ9MrVMNeFWcnA,43092
53
+ detecti/web/static/js/__init__.py,sha256=JY6MtaXXwU012VeDCHYypH2AGpsjltdvpwcP7nyp3Kc,52
54
+ detecti/web/static/js/api.js,sha256=KpmJFAjby8YjJ8jGbNBDgHnjomQcjVE-elKwBJfxV7E,4741
55
+ detecti/web/static/js/cytoscape-cose-bilkent.js,sha256=kpfFtCRe_TFJQcYiywRfuW_7_eMmiYVGN0UxFpnK4LI,16374
56
+ detecti/web/static/js/cytoscape-dagre.js,sha256=v3D-QCmR3L_zPgWn5KUnHHgCC7dehdHICrdTjkFXES4,12665
57
+ detecti/web/static/js/cytoscape.min.js,sha256=UUGJLrGYmJRuWvgwDhTOwVpjoiGGpMpW12gZqR4qP-Y,435503
58
+ detecti/web/static/js/dagre.min.js,sha256=YuuXh8z9vfQUjU2Z0x2_nuR3Dq_ugeY311m1KqwizVE,283803
59
+ detecti/web/static/js/graph.js,sha256=toA_pCWXYddJSHX5zd0iIMdk8fgDffmHBJtIKBq6c6k,365468
60
+ detecti/web/static/js/lucide.min.js,sha256=f_Zi706ea6DIFcYUpDO-I7SPMvwgm-g-yyJvwYNnyFE,419264
61
+ detecti_cli-2.0.0.dist-info/METADATA,sha256=TDHTGaNvo_OlGnHB31jFYQ7MbJs-fbuFQTPx6CVOz5w,39470
62
+ detecti_cli-2.0.0.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
63
+ detecti_cli-2.0.0.dist-info/entry_points.txt,sha256=pld6U0zuY8vxJB7pUZ0fbEShk8M7UkC6xzr37Tvn5Zc,74
64
+ detecti_cli-2.0.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ detecti = detecti.cli:app
3
+ detecti-cli = detecti.cli:app