Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ThreatLens — Outil CLI Python pour l'analyse rapide d'IOC (IPs, Domaines, CVE) via 6 API gratuites de Threat Intel. Sorties : Excel coloré, JSON, CSV. Utilise : VT, Shodan, AbuseIPDB. | Kitploit
Outils/GitHubGitHub/abdaullahag/threatlens
Outils DéfensifsGestion des Indicateurs de Compromission (IOC)OSINT (Renseignement de Sources Ouvertes)Flux et Agrégateurs de MenacesAnalyse des VulnérabilitésScripting et AutomatisationCollecte d'InformationsRenseignement sur les MenacesRéponse aux IncidentsAnalyse de Journaux
GitHub
812il y a 1 jourPas encore vérifié
abdaullahag/threatlens

ThreatLens

Outil CLI Python pour l'analyse rapide d'IOC (IPs, Domaines, CVE) via 6 API gratuites de Threat Intel. Sorties : Excel coloré, JSON, CSV. Utilise : VT, Shodan, AbuseIPDB.

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
ThreatLens — Multi-Source Threat Intelligence CLI

Awesome Python License: PolyForm Noncommercial Tests CI PRs Welcome Maintained


Analysez les IP, domaines, hachages et CVE sur 6 API gratuites de renseignement sur les menaces — sans changer d'onglet de navigateur.

Démarrage rapide · Utilisation · Architecture · Clés API · Captures d'écran · Contribution


🚀 Fièrement mis en avant dans le dépôt officiel Awesome OSINT.


📖 Aperçu

ThreatLens est un outil en ligne de commande unique qui unifie les recherches de renseignement sur les menaces à travers les sources OSINT gratuites les plus fiables. Au lieu de coller une IP dans cinq sites web différents, ThreatLens les interroge tous en parallèle, normalise les résultats et vous donne un verdict clair — dans le terminal, ou dans un rapport Excel/JSON/CSV soigné et coloré.

Conçu pour les analystes SOC, les intervenants en cas d'incident, les chasseurs de menaces et toute personne souhaitant un enrichissement rapide et fiable des IOC sans quitter le shell.

Pourquoi ThreatLens

  • Une seule commande au lieu de cinq onglets de navigateur
  • Extrait automatiquement les IOC directement à partir de journaux bruts
  • Une API défaillante ou limitée en débit ne bloque jamais les autres
  • Fonctionne entièrement sur les niveaux gratuits des API
  • Cache SQLite local — les recherches répétées sont instantanées
  • Plafond de budget de requêtes pour éviter une consommation incontrôlée des API

Pas pour

  • Les pipelines de détection en temps réel/streaming
  • Les flux de renseignement payants/entreprise uniquement
  • Le remplacement d'une plateforme SIEM ou SOAR complète

✨ Fonctionnalités

FonctionnalitéDétails
🎯 Types d'IOCIP, Domaine, URL, Hachage de fichier (MD5 / SHA1 / SHA256), CVE
🔌 API intégréesAbuseIPDB, VirusTotal, AlienVault OTX, Shodan, URLScan.io, NVD
📄 Analyse de journauxExtrait automatiquement chaque type d'IOC depuis n'importe quel journal ou fichier texte
📊 RapportsExcel (coloré), JSON, CSV
💾 Cache localCache SQLite avec TTL configurable — évite de réinterroger les IOC connus
🛡️ SécuritéBlocage des redirections, liste blanche d'hôtes, masquage des clés API dans les journaux, neutralisation des formules de tableur
🔒 Fichier de verrouillagerequirements.lock avec hachages SHA-256 pour des installations reproductibles
💻 Expérience CLIBarres de progression Rich, tableaux colorés et résumé de verdict clair
🧩 ArchitectureEnrichisseurs modulaires, modèles typés, séparation stricte des responsabilités
✅ Testé60 tests unitaires et d'intégration avec pytest ; CI via GitHub Actions
⚡ RésilientUne API défaillante ne bloque jamais les autres — les erreurs sont isolées et journalisées

🚀 Démarrage rapide

root@kitploit:~
# 1. Clone & install
git clone https://github.com/AbdaullahAG/threatlens.git
cd threatlens
pip install -r requirements.txt

# 2. Configure your API keys
cp config/keys.env.example config/keys.env
# → edit config/keys.env and fill in your keys

# 3. Run your first scan
python main.py -i 45.33.32.156

💡 NVD (recherches CVE) fonctionne immédiatement sans clé API. Toutes les autres API offrent un niveau gratuit dont l'inscription prend moins de 2 minutes — voir Clés API ci-dessous.

Installation reproductible (avec dépendances verrouillées)

root@kitploit:~
pip install --require-hashes -r requirements.lock

🧰 Utilisation

root@kitploit:~
# Investigate a single IP
python main.py -i 45.33.32.156
Recherche simple d'un seul IOC
root@kitploit:~
# Investigate multiple IOC types at once
python main.py -i 45.33.32.156 -d malware.example.com \
  -s d41d8cd98f00b204e9800998ecf8427e -c CVE-2021-44228
Combinez plusieurs types d'IOC en une seule exécution
root@kitploit:~
# Parse a log file — all IOCs auto-extracted
python main.py --file /var/log/apache2/access.log
Analyse en masse directement depuis des journaux bruts
root@kitploit:~
# Output JSON instead of Excel
python main.py -i 8.8.8.8 --format json
Sortie lisible par machine pour les pipelines
root@kitploit:~
# Use only specific APIs
python main.py -i 8.8.8.8 --apis abuseipdb virustotal
Restreindre l'enrichissement aux sources sélectionnées
root@kitploit:~
# Generate every report format at once
python main.py --file access.log --format all
Excel + JSON + CSV en une seule exécution
root@kitploit:~
# Lookup a CVE — no API key needed
python main.py -c CVE-2021-44228 --apis nvd --format json
Enrichissement CVE via NIST NVD (gratuit, sans clé)
root@kitploit:~
# Verbose / debug mode
python main.py -i 8.8.8.8 -v
Journalisation complète des requêtes/réponses pour le dépannage
Voir tous les indicateurs CLI
IndicateurDescription
-i, --ipAdresse(s) IP à analyser
-d, --domainDomaine(s) à analyser
-s, --hashHachage(s) de fichier — MD5 / SHA1 / SHA256
-c, --cveID(s) CVE, ex. CVE-2021-44228
--fileChemin vers un fichier journal/texte pour extraire automatiquement les IOC
--apisRestreindre l'enrichissement à un ensemble spécifique d'API
--formatFormat de sortie : excel (par défaut) | json | csv | all
--outputRépertoire de sauvegarde des rapports (par défaut : ./output)
--no-reportAfficher les résultats uniquement dans le terminal, sans sauvegarder de fichier
--cache-pathChemin SQLite pour le cache local (par défaut : .threatlens/investigations.db)
--cache-ttlDurée de vie du cache en secondes (par défaut : 3600)
--no-cacheContourner entièrement le cache local
--max-requestsPlafond des appels API externes par exécution (par défaut : 250)
--max-iocsNombre maximum d'IOC uniques par exécution (par défaut : 1000)
--allow-private-iocsAutoriser les IP privées/loopback (désactivé par défaut)
--delayDélai entre les appels API, pour ajuster les limites de débit
-v, --verboseActiver la journalisation de débogage

🏗️ Architecture

root@kitploit:~
threat_intel_tool/
├── main.py                      # CLI entry point & argument parser
├── requirements.txt             # Runtime dependencies
├── requirements-dev.txt         # Dev/CI tooling (ruff, bandit, pip-audit, pip-tools)
├── requirements.lock            # Pinned lockfile with SHA-256 hashes
├── pytest.ini                   # pytest configuration (marks, etc.)
├── config/
│   └── keys.env                 # API keys (copy from keys.env.example)
├── output/                      # Generated reports land here
├── src/
│   ├── engine.py                # Main orchestrator (collect → enrich → report)
│   ├── models.py                # IOC & EnrichmentResult dataclasses
│   ├── storage.py               # SQLite cache & investigation history
│   ├── parsers/
│   │   └── ioc_parser.py        # Regex-based IOC extractor with validation
│   ├── enrichers/
│   │   ├── base.py              # Abstract base — safe HTTP client (redirect-block, budget, retry)
│   │   ├── registry.py          # Enricher dispatcher
│   │   ├── abuseipdb.py         # AbuseIPDB      (IP)
│   │   ├── virustotal.py        # VirusTotal     (IP / Domain / URL / Hash)
│   │   ├── otx.py               # AlienVault OTX (IP / Domain / URL / Hash)
│   │   ├── shodan.py            # Shodan         (IP)
│   │   ├── urlscan.py           # URLScan.io     (URL / Domain)
│   │   └── nvd.py               # NVD / NIST     (CVE — no key required)
│   ├── reporters/
│   │   ├── excel_reporter.py    # Color-coded Excel reports
│   │   ├── other_reporters.py   # JSON & CSV output
│   │   └── terminal_display.py  # Rich terminal tables
│   └── utils/
│       ├── config.py            # API key loader & runtime config
│       ├── logger.py            # Rich logging setup
│       ├── banner.py            # ASCII banner
│       ├── quota.py             # Per-run request budget (thread-safe)
│       └── security.py         # IOC validation, formula neutralisation, secret redaction
└── tests/
    ├── conftest.py              # pytest fixtures & --run-e2e flag
    ├── test_core.py             # IOC parser, verdict logic, cache round-trip (34 tests)
    ├── test_enrichers.py        # BaseEnricher HTTP edge-cases — mock only (9 tests)
    ├── test_reporters.py        # Excel/CSV formula protection + SQLite integration (17 tests)
    └── test_cli_e2e.py          # Full CLI run against real NVD API (opt-in, --run-e2e)

Principes de conception

  • Enrichisseurs enfichables — ajouter une nouvelle source de renseignement ne nécessite qu'un nouveau fichier dans src/enrichers/ qui hérite de BaseEnricher. Aucune modification ailleurs n'est nécessaire.
  • IOC typés — les types d'IOC sont des énumérations, pas des chaînes brutes, ce qui permet de détecter les erreurs au moment du développement plutôt qu'à l'exécution.
  • Client HTTP sécurisé — BaseEnricher.get() impose HTTPS uniquement, la liste blanche d'hôtes, le blocage des redirections, la gestion des 429/Retry-After et le plafonnement du budget de requêtes en un seul endroit.
  • Configuration adaptée à la CI/CD — les clés sont lues depuis config/keys.env avec un repli sur les variables d'environnement système.
  • Limitation de débit par enrichisseur — un délai configurable (--delay) vous maintient dans les limites du niveau gratuit de chaque API.
  • Isolation des pannes — chaque erreur d'enrichisseur est interceptée, journalisée et stockée dans result.errors ; une API défaillante ne fait jamais échouer l'ensemble de l'analyse.
  • Sécurité des tableurs — toutes les valeurs écrites dans Excel et CSV sont neutralisées contre l'injection de formules (préfixes =, +, -, @).

🔑 Clés API

FournisseurInscriptionNiveau gratuit
AbuseIPDBGratuit1 000 vérifications/jour
VirusTotalGratuit4 req/min · 500 req/jour
AlienVault OTXGratuitIllimité (flux public)
ShodanGratuitRecherches limitées
URLScan.ioGratuit5 000 req/jour (la recherche est gratuite)
NVD / NISTFacultatifAucune clé requise

🧪 Tests

root@kitploit:~
# Run all unit and integration tests (no network required)
pytest tests/ -v --ignore=tests/test_cli_e2e.py

# With coverage report
pytest tests/ -v --ignore=tests/test_cli_e2e.py --cov=src --cov-report=term-missing

# Run the end-to-end CLI test (makes a real NVD request)
pytest tests/test_cli_e2e.py --run-e2e -v

Ce qui est testé

Fichier de testCouverture
test_core.pyAnalyseur d'IOC (tous les types + cas limites), logique de verdict, aller-retour du cache SQLite
test_enrichers.pyBaseEnricher.get() — blocage des redirections, épuisement du budget, 429+Retry-After, masquage des clés API dans les journaux, réponse non-JSON, JSON invalide, liste blanche d'hôtes, blocage du schéma HTTP
test_reporters.pyNeutralisation de l'injection de formules Excel & CSV (7 variantes de préfixes), transmission des valeurs numériques, expiration du TTL SQLite, upsert, enregistrement des investigations
test_cli_e2e.pyExécution complète en sous-processus : python main.py -c CVE-2021-44228 --apis nvd --format json → sortie 0, JSON valide, verdict correct

🔐 Sécurité

ContrôleImplémentation
HTTPS uniquementBaseEnricher.get() rejette toute URL non https:// avant d'effectuer une requête
Liste blanche d'hôtesChaque enrichisseur déclare allowed_hosts ; les requêtes vers des hôtes inconnus sont silencieusement abandonnées
Blocage des redirectionsToutes les requêtes utilisent allow_redirects=False
429 / Retry-AfterUne seule nouvelle tentative automatique respectant l'en-tête Retry-After (plafonnée à 15 s)
Budget de requêtes--max-requests plafonne strictement le total des appels API par exécution
Masquage des clés APILes exceptions et lignes de journal voient les valeurs de clés brutes remplacées par [REDACTED]
Injection de formulesToutes les valeurs de cellules Excel et CSV sont assainies avec spreadsheet_value()
Validation des IOCChaque IOC fourni en CLI est validé et normalisé avant enrichissement
Protection des IP privéesLes adresses privées/loopback sont rejetées par défaut (--allow-private-iocs pour les autoriser)
Audit des dépendancespip-audit s'exécute en CI ; requirements.lock épingle tous les hachages pour des installations reproductibles

📊 Exemple de sortie

Terminal :

root@kitploit:~
╭──────────────────────────── IOC Collection ─────────────────────────────╮
│ Found 4 IOCs to investigate                                              │
│   CVE: 1  Domain: 1  Hash: 1  IP: 1                                     │
╰──────────────────────────────────────────────────────────────────────────╯
✓ Active APIs: abuseipdb, virustotal, otx, shodan, urlscan, nvd

🌐 IP Address Results
┌─────────────────┬──────────────┬──────────┬─────────┬────────────────────┐
│ IP Address      │ Verdict      │ Abuse %  │ Country │ ISP / Org          │
├─────────────────┼──────────────┼──────────┼─────────┼────────────────────┤
│ 45.33.32.156    │ Suspicious   │ 42       │ US      │ Linode             │
└─────────────────┴──────────────┴──────────┴─────────┴────────────────────┘

⚠️  CVE Results
┌──────────────────┬──────────┬──────┬──────────────┐
│ CVE ID           │ Severity │ CVSS │ Published    │
├──────────────────┼──────────┼──────┼──────────────┤
│ CVE-2021-44228   │ Critical │ 10.0 │ 2021-12-10   │
└──────────────────┴──────────┴──────┴──────────────┘

Rapport Excel : Classeur multi-feuilles avec verdicts colorés (🔴 malveillant · 🟡 suspect · 🟢 propre), enregistré dans output/ThreatLens_Report_<timestamp>.xlsx


🖼️ Captures d'écran

IP Usage Combo lookup #2 Combo lookup #1 Clean IP verdict Malicious and safe IP comparison Hash lookup


🗺️ Feuille de route

  • Cache SQLite local avec TTL
  • Budget de requêtes par exécution
  • Validation des IOC et protection des IP privées
  • Protection contre l'injection de formules de tableur
  • Masquage des clés API dans les journaux
  • Fichier de verrouillage épinglé avec hachages SHA-256
  • Pipeline CI (GitHub Actions)
  • Enrichissement asynchrone/parallèle pour des analyses multi-IOC plus rapides
  • Image Docker facultative
  • Format d'export STIX/TAXII
  • Tableau de bord web (lecture seule) pour parcourir les rapports
  • Enrichisseurs supplémentaires (GreyNoise, IPQualityScore)

Une idée ? Ouvrez une issue — les contributions et suggestions sont les bienvenues.


🤝 Contribution

Les contributions sont les bienvenues et appréciées !

  1. Forkez le dépôt
  2. Créez une branche de fonctionnalité : git checkout -b feature/my-feature
  3. Ajoutez des tests pour tout nouveau comportement
  4. Assurez-vous que pytest tests/ -v --ignore=tests/test_cli_e2e.py passe et que ruff check . est propre
  5. Ouvrez une pull request avec une description claire du changement

Les nouveaux enrichisseurs, corrections de bugs, améliorations de la documentation et couverture de tests sont tous d'excellentes premières contributions — voir Architecture pour comprendre la structure des enrichisseurs.


📄 Licence

Ce projet est sous licence PolyForm Noncommercial License 1.0.0.

Vous êtes libre d'utiliser, d'étudier, de modifier et de partager ce code à des fins personnelles, éducatives ou de recherche. L'utilisation commerciale n'est pas autorisée sans autorisation écrite préalable de l'auteur ([email protected]).


⚠️ Avertissement juridique

Cet outil est destiné à des fins éducatives et de tests de sécurité autorisés uniquement. L'utilisateur est seul responsable du respect des conditions d'utilisation des API intégrées et de toutes les lois applicables. L'auteur décline toute responsabilité et n'est pas responsable de toute utilisation abusive, activité illégale ou dommage causé par ce programme.


Si ThreatLens vous a fait gagner du temps, envisagez de lui donner une ⭐ — cela aide les autres à découvrir le projet.

Télécharger l’outil