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
knockpy — Knock Subdomain Scan | Kitploit
Outils/GitHubGitHub/guelfoweb/knockpy
OSINT (Renseignement de Sources Ouvertes)ReconnaissanceCollecte d'InformationsTests d'IntrusionÉnumération de Sous-domainesAnalyse DNS
GitHubguelfoweb/knockpy

knockpy

Knock Subdomain Scan

Voir le dépôt
4.2k873il y a 6 moisVérifié par Kitploit

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

🔍 Knockpy Scan de sous-domaines v9.0

✅ Rapide & Asynchrone • 🔐 Recon + Force Brute • 🔧 Facile à Étendre

KnockPy est un outil modulaire en Python 3 pour énumérer les sous-domaines via la reconnaissance passive et la force brute, désormais avec support async/await, des performances améliorées et une gestion moderne HTTP/TLS.


🚀 Fonctionnalités (v9)

  • ✅ Scan asynchrone avec httpx et résolution DNS
  • ✅ Modulaire : ajoutez facilement de nouvelles sources passives
  • 🔍 Prend en charge la reconnaissance passive, la force brute, ou les deux
  • 🎨 Sortie terminal formatée avec Rich (tableaux, progression, panneaux)
  • 📜 Valide le statut HTTP/HTTPS, le certificat TLS, et l'IP
  • ⚠️ Détecte la prise en charge TLS obsolète (TLS 1.0/1.1) comme avertissement dans le CLI/verbose/rapport HTML
  • 🧾 Vérifie le transfert de zone AXFR sur le domaine racine lors des scans en mode domaine
  • 🔎 Diagnostics --verbose pour domaine unique (DNS/TCP/TLS/chaînes de redirection/erreurs de requête + vérifications de sécurité)
  • 💡 Prend en charge la détection de DNS wildcard
  • 🧪 Rapports SQLite avec catalogue interactif (show/delete/export/search)
  • 🔐 Prend en charge les API VirusTotal et Shodan
  • 🚀 Exécution de force brute optimisée avec mise en cache des points de terminaison de sonde TLS (aucun changement de délai d'attente nécessaire)

📦 Installation

Depuis la source GitHub (recommandé)

root@kitploit:~
git clone https://github.com/guelfoweb/knockpy.git
cd knockpy
# recommended: install in a virtual environment
python3 -m venv .venv
. .venv/bin/activate
python3 -m pip install -U pip
pip install .

# alternative: install for the current user (no venv)
# python3 -m pip install --user .

⚠️ Version Python recommandée : 3.9+

🧱 Structure du projet

Le code est organisé par responsabilité, avec des façades stables pour la rétrocompatibilité :

root@kitploit:~
knockpy/
  cli.py                   # CLI entrypoint (facade/orchestration)
  cli_parts/
    status.py              # runtime/status panel rendering
    setup.py               # interactive setup and persisted runtime defaults
    report.py              # interactive report mode
    scan_flow.py           # exclude rules, recon-test, wildcard helpers
  core.py                  # public core facade (compatibility)
  engine/
    runtime.py             # scanning engine implementation
  storage.py               # public storage facade (compatibility)
  storage_parts/
    db.py                  # SQLite persistence/settings
    export.py              # report export orchestration
    html_report.py         # HTML report rendering
  output.py                # terminal output rendering
  server_versions.py       # web-server versions catalog
  knockpy.py               # compatibility module exports

Note de compatibilité :

  • Les imports externes préférés : import knockpy ou from knockpy import KNOCKPY.
  • Les modules internes sont répartis dans engine/, cli_parts/ et storage_parts/.

Utilisation de pip

Uniquement après la publication de la version stable sur GitHub

root@kitploit:~
pip install knock-subdomains

🧪 Utilisation

root@kitploit:~
knockpy -d domain.com [options]

Options

Réglage des performances : --threads et --timeout

Ces deux options ont le plus grand impact sur la durée d'exécution pour les grands scans.

  • --threads contrôle la concurrence (combien de cibles sont traitées en parallèle)
  • --timeout contrôle combien de temps chaque étape réseau attend avant d'abandonner

Compromis :

  • des threads plus élevés = scans plus rapides, mais plus de charge sur le CPU/réseau/DNS et risque plus élevé de limitations de débit distantes
  • un timeout plus bas = scans plus rapides, mais risque plus élevé de manquer des cibles lentes mais valides (faux négatifs)

Profils recommandés :

  • scan petit/précis (peu de domaines) : --threads 50 --timeout 5
  • scan équilibré : --threads 150 --timeout 4
  • grand scan (10k+ domaines) : commencer avec --threads 250 --timeout 3

Si vous avez besoin à la fois de vitesse et d'exhaustivité sur de très grandes listes, utilisez une stratégie en deux passes :

  1. passe rapide : --threads 250 --timeout 3
  2. passe de réessai uniquement sur les cibles manquantes/incertaines : --threads 80 --timeout 5 (ou plus)

Remarques :

  • Les valeurs CLI remplacent toujours les valeurs de configuration enregistrées
  • les valeurs de configuration enregistrées (--setup) remplacent les valeurs par défaut intégrées
  • les valeurs par défaut intégrées actuelles sont threads=250, timeout=3

📌 Exemples

🔎 Recon + Force Brute

root@kitploit:~
knockpy -d example.com --recon --bruteforce

🧪 Test des services de reconnaissance

root@kitploit:~
knockpy -d example.com --recon --test

🔄 Mettre à jour le catalogue des dernières versions de serveurs web

root@kitploit:~
knockpy --update-versions

🆕 Vérifier les mises à jour de Knockpy

root@kitploit:~
knockpy --check-update

⚙️ Configuration des sources de reconnaissance (modifiable)

Lors de la première exécution, KnockPy crée :

root@kitploit:~
~/.knockpy/recon_services.json

Vous pouvez ajouter/désactiver des sources en modifiant le tableau services. Vous pouvez également pointer vers un chemin de fichier personnalisé sans modifier le code :

root@kitploit:~
export KNOCK_RECON_SERVICES=/path/to/recon_services.json

Chaque service prend en charge :

  • name
  • enabled (true/false)
  • parser
  • url_template (prend en charge {domain}, {virustotal_key}, {shodan_key})
  • requires_api (virustotal ou shodan, facultatif)

Analyseurs pris en charge :

  • csv_first_column
  • rapiddns_html_td
  • json_list
  • virustotal_subdomains
  • shodan_subdomains

📥 Domaine depuis stdin

root@kitploit:~
echo "example.com" | knockpy -d

🧠 Clés API (optionnel)

root@kitploit:~
export API_KEY_VIRUSTOTAL=your-virustotal-api-key
export API_KEY_SHODAN=your-shodan-api-key

Vous pouvez utiliser un fichier .env :

root@kitploit:~
API_KEY_VIRUSTOTAL=your-virustotal-api-key
API_KEY_SHODAN=your-shodan-api-key

💾 Rapports (SQLite + Export HTML interactif)

root@kitploit:~
knockpy -d example.com --recon --bruteforce
knockpy --report list
knockpy --report latest
knockpy --report

Menu de rapport interactif :

  • 1 afficher
  • 2 supprimer
  • 3 exporter
  • 4 rechercher
  • 0 réinitialiser la base de données (demande une confirmation explicite)

Quitter le mode rapport :

  • appuyez sur Entrée sur l'invite d'action vide
  • ou appuyez sur CTRL+C

🔍 Diagnostics d'un seul domaine

root@kitploit:~
knockpy -d forum.example.com --verbose

🧪 Test de DNS générique uniquement

root@kitploit:~
knockpy -d example.com --wildcard

🧬 Utilisation de l'API Python

KnockPy peut être utilisé comme module Python :

root@kitploit:~
import knockpy

result = knockpy.KNOCKPY("example.com", timeout=5.0, threads=20)
print(result["domain"], result["ip"])

ou :

root@kitploit:~
from knockpy import KNOCKPY

domain = 'example.com'

results = KNOCKPY(
    domain,
    dns="8.8.8.8",
    useragent="Mozilla/5.0",
    timeout=5,
    threads=10,
    recon=True,
    bruteforce=True,
    wordlist=None,
    silent=False
)

for entry in results:
    print(entry['domain'], entry['ip'], entry['http'], entry['cert'])

📂 Liste de mots

Une liste de mots par défaut est incluse dans knockpy/wordlist/wordlist.txt. Vous pouvez fournir la vôtre avec --wordlist.

Test

root@kitploit:~
python3 -m pytest

# (optional) smoke-run example script
python3 examples/poc.py

📖 Licence

Sous licence GPLv3.

Gianni Amato (@guelfoweb)

Télécharger l’outil
FlagDescription
-d, --domainDomaine cible (ou stdin si utilisé sans valeur)
-f, --fileFichier contenant une liste de domaines
--reconActiver la reconnaissance passive
--bruteforce, --bruteActiver la force brute avec une liste de mots
--exclude TYPE VALUEExclure les correspondances (status, length/lenght, body)
--verboseDiagnostics approfondis pour les scans d'un seul domaine uniquement
--wildcardTester le DNS générique et quitter
--testAvec --recon, tester chaque source de reconnaissance (échec/vide/données)
--setupConfiguration interactive (paramètres par défaut + clés API dans la base de données)
--update-versionsMettre à jour le catalogue local des dernières versions de serveurs web
--report [ID|latest|list]Mode rapport (interactif : afficher/supprimer/exporter/rechercher/réinitialiser la base de données, exporter HTML)
--check-updateVérifier en ligne si une nouvelle version de Knockpy est disponible sur PyPI
--wordlistRemplacement de la liste de mots à l'exécution
--dnsRemplacement du résolveur DNS à l'exécution
--useragentRemplacement de l'agent utilisateur HTTP à l'exécution
--timeoutRemplacement du délai d'attente à l'exécution (secondes)
--threadsRemplacement du nombre de workers concurrents à l'exécution
--silentMasquer la barre de progression
--jsonSortie JSON uniquement (force --silent)
--statusAfficher l'état d'exécution et continuer
-h, --helpAfficher le message d'aide