threatpulse-cli 1.0.0__tar.gz

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,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Aleksei Zharkou
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,223 @@
1
+ Metadata-Version: 2.4
2
+ Name: threatpulse-cli
3
+ Version: 1.0.0
4
+ Summary: Fast, zero-dependency Threat Intelligence & IOC enrichment CLI for SOC Analysts & Incident Responders
5
+ Author-email: Aleksei Zharkou <lyosha.zharkov.98@mail.ru>
6
+ License-Expression: MIT
7
+ Keywords: cybersecurity,threat-intelligence,ioc-enrichment,soc,blue-team,incident-response,abuseipdb,virustotal,mitre-attack,wazuh
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Topic :: Security
13
+ Classifier: Intended Audience :: Information Technology
14
+ Classifier: Operating System :: OS Independent
15
+ Requires-Python: >=3.10
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Provides-Extra: dev
19
+ Requires-Dist: pytest>=7.0; extra == "dev"
20
+ Dynamic: license-file
21
+
22
+ # ThreatPulse (v1.0.0) โšก
23
+
24
+ [![CI Pipeline](https://github.com/Voobrazhenie21-lab/threat-pulse/actions/workflows/ci.yml/badge.svg)](https://github.com/Voobrazhenie21-lab/threat-pulse/actions/workflows/ci.yml)
25
+ [![Docker Ready](https://img.shields.io/badge/Docker-Ready-2496ED?style=flat&logo=docker&logoColor=white)](#2-running-via-docker-)
26
+ [![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.14-blue.svg)](https://python.org)
27
+ [![Live Web Demo](https://img.shields.io/badge/Live%20Demo-Interactive%20Dashboard-10b981?style=flat&logo=google-chrome&logoColor=white)](https://voobrazhenie21-lab.github.io/threat-pulse/)
28
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
29
+ [![Zero External Dependencies](https://img.shields.io/badge/dependencies-zero%20(stdlib)-success.svg)](pyproject.toml)
30
+ [![MITRE ATT&CK](https://img.shields.io/badge/MITRE%20ATT%26CK-v14-red.svg)](https://attack.mitre.org/)
31
+ [![Wazuh SIEM Ready](https://img.shields.io/badge/SIEM-Wazuh%20CDB%20Export-orange.svg)](https://wazuh.com)
32
+
33
+ **Fast, zero-dependency Threat Intelligence & IOC enrichment CLI built for SOC Analysts, Incident Responders, and Blue Teams.**
34
+
35
+ > ๐ŸŒ **[Try the Interactive Live Web Demo on GitHub Pages](https://voobrazhenie21-lab.github.io/threat-pulse/)**
36
+
37
+ ```text
38
+ _____ _ _ _____ _
39
+ |_ _| | | | | __ \ | |
40
+ | | | |__ _ __ ___ __ _ ___| |_| |__) | _| |___ ___
41
+ | | | '_ \| '__/ _ \/ _` |/ _ \ __| ___/ | | | / __|/ _ \
42
+ | | | | | | | | __/ (_| | __/ |_| | | |_| | \__ \ __/
43
+ \_/ |_| |_|_| \___|\__,_|\___|\__|_| \__,_|_|___/\___|
44
+ SOC Threat Intelligence & IOC Triage Engine
45
+ ```
46
+
47
+ ---
48
+
49
+ ## ๐ŸŽฏ The Problem ThreatPulse Solves
50
+
51
+ In enterprise Security Operations Centers (SOC L1/L2), analysts suffer from severe **alert fatigue**. Every incoming alert contains raw IPs, domains, and file hashes. Manually copying and pasting indicators into VirusTotal, AbuseIPDB, and WHOIS takes several minutes per ticket.
52
+
53
+ **ThreatPulse** automates this triage pipeline in milliseconds:
54
+ 1. **Auto-Detects IOC Types:** IPv4, IPv6, Domains, URLs, MD5, SHA1, SHA256.
55
+ 2. **Offline Heuristics & Fast Filtering:** Instantly recognizes **RFC 1918** private corporate IPs (`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`), Loopback, and Bogon spaces to prevent false-positive alarms.
56
+ 3. **Shannon Entropy (DGA Detection):** Analyzes domain name character entropy to flag machine-generated botnet domains (DGA).
57
+ 4. **Threat Intelligence Aggregation:** Correlates AbuseIPDB scores, Tor exit nodes, and active internet research scanners (Shadowserver, Censys, Shodan).
58
+ 5. **Malware Signature Database:** Identifies critical ransomware and credential dumping signatures (WannaCry, Mimikatz, Cobalt Strike, China Chopper).
59
+ 6. **MITRE ATT&CK Mapping & Actionable Advice:** Generates direct tactical recommendations for containment.
60
+ 7. **Wazuh CDB List Exporter:** Exports malicious IOCs directly into Wazuh CDB list syntax (`ioc:verdict:tags`) for instant SIEM rule lookups!
61
+
62
+ ---
63
+
64
+ ## ๐Ÿ—๏ธ Architecture
65
+
66
+ ```mermaid
67
+ flowchart TD
68
+ A["Raw IOC or File (IP, Hash, Domain, URL)"] --> B["IOC Detector & Refanger"]
69
+ B --> C{"IOC Type"}
70
+
71
+ C -->|"IP (v4/v6)"| D["IP Heuristics (RFC1918 / Bogons)"]
72
+ C -->|"Domain"| E["Domain Heuristics (Shannon Entropy DGA, TLDs)"]
73
+ C -->|"URL"| F["URL Heuristics (Raw IP, Executables)"]
74
+ C -->|"Hash"| G["Malware Signature Engine (Mimikatz, WannaCry, C2)"]
75
+
76
+ D --> H["Network & TI Enricher (PTR, Tor, AbuseIPDB)"]
77
+ E --> H
78
+ F --> H
79
+ G --> I["Risk Scoring Engine (0-100)"]
80
+ H --> I
81
+
82
+ I --> J["MITRE ATT&CK Correlation"]
83
+ J --> K["Local SQLite Cache (~/.threatpulse_cache.db)"]
84
+ K --> L["Output Formatters"]
85
+ L --> M1["ANSI Terminal Card / Table"]
86
+ L --> M2["JSON (SIEM/SOAR)"]
87
+ L --> M3["Markdown Report"]
88
+ L --> M4["Wazuh CDB List (/var/ossec/etc/lists/)"]
89
+ ```
90
+
91
+ ---
92
+
93
+ ## ๐Ÿš€ Quick Start
94
+
95
+ ### 1. Installation (via uv or pip)
96
+
97
+ ThreatPulse is completely self-contained using Python's standard library. No third-party runtime dependencies required!
98
+
99
+ ```bash
100
+ # Clone the repository
101
+ git clone https://github.com/Voobrazhenie21-lab/threat-pulse.git
102
+ cd threat-pulse
103
+
104
+ # Install with uv
105
+ uv venv
106
+ uv pip install -e .
107
+
108
+ # Or run directly via Python
109
+ python -m threat_pulse --version
110
+ ```
111
+
112
+ ### 2. Running via Docker ๐Ÿณ
113
+
114
+ Run ThreatPulse in an isolated, secure non-root Alpine container without needing Python installed on the host system:
115
+
116
+ ```bash
117
+ # Build the lightweight Alpine image (~45MB)
118
+ docker build -t threat-pulse .
119
+
120
+ # Inspect a single indicator directly
121
+ docker run --rm threat-pulse 185.220.101.5
122
+
123
+ # Analyze a log file and export to Wazuh CDB list format
124
+ docker run --rm -v $(pwd):/data threat-pulse -f /data/samples/sample_iocs.txt --format wazuh-cdb
125
+ ```
126
+
127
+ ### 3. Single Indicator Inspection
128
+
129
+ ```bash
130
+ # Analyze a known Tor Exit Node
131
+ threat-pulse 185.220.101.5
132
+
133
+ # Analyze a malware hash (Mimikatz)
134
+ threat-pulse a60c52bb53a5c0b89cf53dc5bb7c2c129219b16e4ee7d9c6e3b5e43a9b1c9d2f
135
+
136
+ # Analyze a suspicious DGA domain
137
+ threat-pulse xkjqpw987dfghk123498.top
138
+ ```
139
+
140
+ ### 4. Batch Triage from Log Files
141
+
142
+ Extract all IOCs from an access log, firewall dump, or ticket export and render a summary table:
143
+
144
+ ```bash
145
+ threat-pulse -f samples/sample_iocs.txt --format table
146
+ ```
147
+
148
+ ### 5. Exporting to Wazuh SIEM CDB Lists
149
+
150
+ ```bash
151
+ threat-pulse -f samples/sample_iocs.txt --format wazuh-cdb -o /var/ossec/etc/lists/threat_pulse.cdb
152
+ ```
153
+
154
+ ### 6. Quick Defanging & Refanging Helpers
155
+
156
+ ```bash
157
+ # Defang a dangerous URL for safe sharing
158
+ threat-pulse --defang http://malicious-site.com/payload.exe
159
+ # Output: hxxp://malicious-site[.]com/payload.exe
160
+
161
+ # Refang back to canonical form
162
+ threat-pulse --refang hxxps://c2-botnet[.]xyz/beacon
163
+ # Output: https://c2-botnet.xyz/beacon
164
+ ```
165
+
166
+ ---
167
+
168
+ ## ๐Ÿ“Š Terminal Output Example
169
+
170
+ ```text
171
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
172
+ โ”‚ ThreatPulse IOC Report [IPV4]
173
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
174
+ โ”‚ Indicator: 185[.]220[.]101[.]5 (raw: 185.220.101.5)
175
+ โ”‚ Risk Level: HIGH (85/100)
176
+ โ”‚ Verdict: High Risk Indicator
177
+ โ”‚ Tags: #Tor-Exit-Node #Anonymizer
178
+ โ”‚ MITRE ATT&CK:
179
+ โ”‚ โ€ข T1090.003: Multi-hop Proxy: Tor
180
+ โ”‚ Intelligence Details:
181
+ โ”‚ โ€ข Reverse DNS: tor-exit-5.relay.org
182
+ โ”‚ SOC Action: Isolate traffic, block domain/IP at proxy, verify if any endpoint established persistent C2 connection.
183
+ โ”‚ Timestamp: 2026-10-14T21:10:00Z (live analysis)
184
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
185
+ ```
186
+
187
+ ---
188
+
189
+ ## โš™๏ธ Configuration & API Keys
190
+
191
+ ThreatPulse works **100% out of the box** using offline heuristics, local signature matching, and reverse DNS.
192
+
193
+ To enable live **AbuseIPDB** API lookups:
194
+ ```bash
195
+ export ABUSEIPDB_API_KEY="your_api_key_here"
196
+ # Or pass directly:
197
+ threat-pulse 1.2.3.4 --api-key "your_api_key_here"
198
+ ```
199
+
200
+ ---
201
+
202
+ ## ๐Ÿงช Testing
203
+
204
+ Comprehensive test suite covering heuristics, entropy, MITRE mapping, SQLite caching, and formatters:
205
+
206
+ ```bash
207
+ uv run pytest tests/ -v
208
+ ```
209
+
210
+ ---
211
+
212
+ ## ๐Ÿ‘ค Author
213
+
214
+ **Aleksei Zharkou**
215
+ - **GitHub:** [@Voobrazhenie21-lab](https://github.com/Voobrazhenie21-lab)
216
+ - **LinkedIn:** [Aleksei Zharkou](https://www.linkedin.com/in/aleksei-zharkou/)
217
+ - **Portfolio:** [voobrazhenie21-lab.github.io](https://voobrazhenie21-lab.github.io/)
218
+
219
+ ---
220
+
221
+ ## ๐Ÿ“„ License
222
+
223
+ This project is licensed under the [MIT License](LICENSE).
@@ -0,0 +1,202 @@
1
+ # ThreatPulse (v1.0.0) โšก
2
+
3
+ [![CI Pipeline](https://github.com/Voobrazhenie21-lab/threat-pulse/actions/workflows/ci.yml/badge.svg)](https://github.com/Voobrazhenie21-lab/threat-pulse/actions/workflows/ci.yml)
4
+ [![Docker Ready](https://img.shields.io/badge/Docker-Ready-2496ED?style=flat&logo=docker&logoColor=white)](#2-running-via-docker-)
5
+ [![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.14-blue.svg)](https://python.org)
6
+ [![Live Web Demo](https://img.shields.io/badge/Live%20Demo-Interactive%20Dashboard-10b981?style=flat&logo=google-chrome&logoColor=white)](https://voobrazhenie21-lab.github.io/threat-pulse/)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
+ [![Zero External Dependencies](https://img.shields.io/badge/dependencies-zero%20(stdlib)-success.svg)](pyproject.toml)
9
+ [![MITRE ATT&CK](https://img.shields.io/badge/MITRE%20ATT%26CK-v14-red.svg)](https://attack.mitre.org/)
10
+ [![Wazuh SIEM Ready](https://img.shields.io/badge/SIEM-Wazuh%20CDB%20Export-orange.svg)](https://wazuh.com)
11
+
12
+ **Fast, zero-dependency Threat Intelligence & IOC enrichment CLI built for SOC Analysts, Incident Responders, and Blue Teams.**
13
+
14
+ > ๐ŸŒ **[Try the Interactive Live Web Demo on GitHub Pages](https://voobrazhenie21-lab.github.io/threat-pulse/)**
15
+
16
+ ```text
17
+ _____ _ _ _____ _
18
+ |_ _| | | | | __ \ | |
19
+ | | | |__ _ __ ___ __ _ ___| |_| |__) | _| |___ ___
20
+ | | | '_ \| '__/ _ \/ _` |/ _ \ __| ___/ | | | / __|/ _ \
21
+ | | | | | | | | __/ (_| | __/ |_| | | |_| | \__ \ __/
22
+ \_/ |_| |_|_| \___|\__,_|\___|\__|_| \__,_|_|___/\___|
23
+ SOC Threat Intelligence & IOC Triage Engine
24
+ ```
25
+
26
+ ---
27
+
28
+ ## ๐ŸŽฏ The Problem ThreatPulse Solves
29
+
30
+ In enterprise Security Operations Centers (SOC L1/L2), analysts suffer from severe **alert fatigue**. Every incoming alert contains raw IPs, domains, and file hashes. Manually copying and pasting indicators into VirusTotal, AbuseIPDB, and WHOIS takes several minutes per ticket.
31
+
32
+ **ThreatPulse** automates this triage pipeline in milliseconds:
33
+ 1. **Auto-Detects IOC Types:** IPv4, IPv6, Domains, URLs, MD5, SHA1, SHA256.
34
+ 2. **Offline Heuristics & Fast Filtering:** Instantly recognizes **RFC 1918** private corporate IPs (`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`), Loopback, and Bogon spaces to prevent false-positive alarms.
35
+ 3. **Shannon Entropy (DGA Detection):** Analyzes domain name character entropy to flag machine-generated botnet domains (DGA).
36
+ 4. **Threat Intelligence Aggregation:** Correlates AbuseIPDB scores, Tor exit nodes, and active internet research scanners (Shadowserver, Censys, Shodan).
37
+ 5. **Malware Signature Database:** Identifies critical ransomware and credential dumping signatures (WannaCry, Mimikatz, Cobalt Strike, China Chopper).
38
+ 6. **MITRE ATT&CK Mapping & Actionable Advice:** Generates direct tactical recommendations for containment.
39
+ 7. **Wazuh CDB List Exporter:** Exports malicious IOCs directly into Wazuh CDB list syntax (`ioc:verdict:tags`) for instant SIEM rule lookups!
40
+
41
+ ---
42
+
43
+ ## ๐Ÿ—๏ธ Architecture
44
+
45
+ ```mermaid
46
+ flowchart TD
47
+ A["Raw IOC or File (IP, Hash, Domain, URL)"] --> B["IOC Detector & Refanger"]
48
+ B --> C{"IOC Type"}
49
+
50
+ C -->|"IP (v4/v6)"| D["IP Heuristics (RFC1918 / Bogons)"]
51
+ C -->|"Domain"| E["Domain Heuristics (Shannon Entropy DGA, TLDs)"]
52
+ C -->|"URL"| F["URL Heuristics (Raw IP, Executables)"]
53
+ C -->|"Hash"| G["Malware Signature Engine (Mimikatz, WannaCry, C2)"]
54
+
55
+ D --> H["Network & TI Enricher (PTR, Tor, AbuseIPDB)"]
56
+ E --> H
57
+ F --> H
58
+ G --> I["Risk Scoring Engine (0-100)"]
59
+ H --> I
60
+
61
+ I --> J["MITRE ATT&CK Correlation"]
62
+ J --> K["Local SQLite Cache (~/.threatpulse_cache.db)"]
63
+ K --> L["Output Formatters"]
64
+ L --> M1["ANSI Terminal Card / Table"]
65
+ L --> M2["JSON (SIEM/SOAR)"]
66
+ L --> M3["Markdown Report"]
67
+ L --> M4["Wazuh CDB List (/var/ossec/etc/lists/)"]
68
+ ```
69
+
70
+ ---
71
+
72
+ ## ๐Ÿš€ Quick Start
73
+
74
+ ### 1. Installation (via uv or pip)
75
+
76
+ ThreatPulse is completely self-contained using Python's standard library. No third-party runtime dependencies required!
77
+
78
+ ```bash
79
+ # Clone the repository
80
+ git clone https://github.com/Voobrazhenie21-lab/threat-pulse.git
81
+ cd threat-pulse
82
+
83
+ # Install with uv
84
+ uv venv
85
+ uv pip install -e .
86
+
87
+ # Or run directly via Python
88
+ python -m threat_pulse --version
89
+ ```
90
+
91
+ ### 2. Running via Docker ๐Ÿณ
92
+
93
+ Run ThreatPulse in an isolated, secure non-root Alpine container without needing Python installed on the host system:
94
+
95
+ ```bash
96
+ # Build the lightweight Alpine image (~45MB)
97
+ docker build -t threat-pulse .
98
+
99
+ # Inspect a single indicator directly
100
+ docker run --rm threat-pulse 185.220.101.5
101
+
102
+ # Analyze a log file and export to Wazuh CDB list format
103
+ docker run --rm -v $(pwd):/data threat-pulse -f /data/samples/sample_iocs.txt --format wazuh-cdb
104
+ ```
105
+
106
+ ### 3. Single Indicator Inspection
107
+
108
+ ```bash
109
+ # Analyze a known Tor Exit Node
110
+ threat-pulse 185.220.101.5
111
+
112
+ # Analyze a malware hash (Mimikatz)
113
+ threat-pulse a60c52bb53a5c0b89cf53dc5bb7c2c129219b16e4ee7d9c6e3b5e43a9b1c9d2f
114
+
115
+ # Analyze a suspicious DGA domain
116
+ threat-pulse xkjqpw987dfghk123498.top
117
+ ```
118
+
119
+ ### 4. Batch Triage from Log Files
120
+
121
+ Extract all IOCs from an access log, firewall dump, or ticket export and render a summary table:
122
+
123
+ ```bash
124
+ threat-pulse -f samples/sample_iocs.txt --format table
125
+ ```
126
+
127
+ ### 5. Exporting to Wazuh SIEM CDB Lists
128
+
129
+ ```bash
130
+ threat-pulse -f samples/sample_iocs.txt --format wazuh-cdb -o /var/ossec/etc/lists/threat_pulse.cdb
131
+ ```
132
+
133
+ ### 6. Quick Defanging & Refanging Helpers
134
+
135
+ ```bash
136
+ # Defang a dangerous URL for safe sharing
137
+ threat-pulse --defang http://malicious-site.com/payload.exe
138
+ # Output: hxxp://malicious-site[.]com/payload.exe
139
+
140
+ # Refang back to canonical form
141
+ threat-pulse --refang hxxps://c2-botnet[.]xyz/beacon
142
+ # Output: https://c2-botnet.xyz/beacon
143
+ ```
144
+
145
+ ---
146
+
147
+ ## ๐Ÿ“Š Terminal Output Example
148
+
149
+ ```text
150
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
151
+ โ”‚ ThreatPulse IOC Report [IPV4]
152
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
153
+ โ”‚ Indicator: 185[.]220[.]101[.]5 (raw: 185.220.101.5)
154
+ โ”‚ Risk Level: HIGH (85/100)
155
+ โ”‚ Verdict: High Risk Indicator
156
+ โ”‚ Tags: #Tor-Exit-Node #Anonymizer
157
+ โ”‚ MITRE ATT&CK:
158
+ โ”‚ โ€ข T1090.003: Multi-hop Proxy: Tor
159
+ โ”‚ Intelligence Details:
160
+ โ”‚ โ€ข Reverse DNS: tor-exit-5.relay.org
161
+ โ”‚ SOC Action: Isolate traffic, block domain/IP at proxy, verify if any endpoint established persistent C2 connection.
162
+ โ”‚ Timestamp: 2026-10-14T21:10:00Z (live analysis)
163
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
164
+ ```
165
+
166
+ ---
167
+
168
+ ## โš™๏ธ Configuration & API Keys
169
+
170
+ ThreatPulse works **100% out of the box** using offline heuristics, local signature matching, and reverse DNS.
171
+
172
+ To enable live **AbuseIPDB** API lookups:
173
+ ```bash
174
+ export ABUSEIPDB_API_KEY="your_api_key_here"
175
+ # Or pass directly:
176
+ threat-pulse 1.2.3.4 --api-key "your_api_key_here"
177
+ ```
178
+
179
+ ---
180
+
181
+ ## ๐Ÿงช Testing
182
+
183
+ Comprehensive test suite covering heuristics, entropy, MITRE mapping, SQLite caching, and formatters:
184
+
185
+ ```bash
186
+ uv run pytest tests/ -v
187
+ ```
188
+
189
+ ---
190
+
191
+ ## ๐Ÿ‘ค Author
192
+
193
+ **Aleksei Zharkou**
194
+ - **GitHub:** [@Voobrazhenie21-lab](https://github.com/Voobrazhenie21-lab)
195
+ - **LinkedIn:** [Aleksei Zharkou](https://www.linkedin.com/in/aleksei-zharkou/)
196
+ - **Portfolio:** [voobrazhenie21-lab.github.io](https://voobrazhenie21-lab.github.io/)
197
+
198
+ ---
199
+
200
+ ## ๐Ÿ“„ License
201
+
202
+ This project is licensed under the [MIT License](LICENSE).
@@ -0,0 +1,52 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "threatpulse-cli"
7
+ version = "1.0.0"
8
+ description = "Fast, zero-dependency Threat Intelligence & IOC enrichment CLI for SOC Analysts & Incident Responders"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = "MIT"
12
+ authors = [
13
+ { name = "Aleksei Zharkou", email = "lyosha.zharkov.98@mail.ru" }
14
+ ]
15
+ classifiers = [
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3.10",
18
+ "Programming Language :: Python :: 3.11",
19
+ "Programming Language :: Python :: 3.12",
20
+ "Topic :: Security",
21
+ "Intended Audience :: Information Technology",
22
+ "Operating System :: OS Independent"
23
+ ]
24
+ keywords = [
25
+ "cybersecurity",
26
+ "threat-intelligence",
27
+ "ioc-enrichment",
28
+ "soc",
29
+ "blue-team",
30
+ "incident-response",
31
+ "abuseipdb",
32
+ "virustotal",
33
+ "mitre-attack",
34
+ "wazuh"
35
+ ]
36
+ dependencies = []
37
+
38
+ [project.optional-dependencies]
39
+ dev = [
40
+ "pytest>=7.0"
41
+ ]
42
+
43
+ [project.scripts]
44
+ threat-pulse = "threat_pulse.cli:main"
45
+ tp = "threat_pulse.cli:main"
46
+
47
+ [tool.setuptools.packages.find]
48
+ include = ["threat_pulse*"]
49
+
50
+ [tool.pytest.ini_options]
51
+ testpaths = ["tests"]
52
+ pythonpath = ["."]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+