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
OneForAll — Outil d'énumération de sous-domaines multi-sources avec plus de 50 modules de collecte, force brute DNS, analyse DNS passive, transparence des certificats, scraping de moteurs de recherche et détection de prise de contrôle de sous-domaines pour la reconnaissance. | Kitploit
Outils/GitHubGitHub/shmilylty/oneforall
OSINT (Renseignement de Sources Ouvertes)ReconnaissanceCollecte d'InformationsTests d'IntrusionÉnumération de Sous-domainesAnalyse DNS
GitHubshmilylty/oneforall

OneForAll

Outil d'énumération de sous-domaines multi-sources avec plus de 50 modules de collecte, force brute DNS, analyse DNS passive, transparence des certificats, scraping de moteurs de recherche et détection de prise de contrôle de sous-domaines pour la reconnaissance.

Voir le dépôt
10.0k1.4kil y a 3 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

OneForAll

Build Status codecov Maintainability License python python

👊OneForAll est un outil puissant de collecte de sous-domaines 📝Document en anglais

Exemple

🚀Démarrage rapide

📢 Veuillez prendre un moment pour lire ce document, il vous aidera à vous familiariser rapidement avec OneForAll !

🐍Prérequis d'installation

OneForAll est développé et testé sur Python 3.6.0. OneForAll nécessite une version de Python supérieure à 3.6.0 pour fonctionner. Pour installer l'environnement Python, consultez le Guide d'installation de Python 3. Exécutez les commandes suivantes pour vérifier les versions de Python et pip3 :

root@kitploit:~
python -V
pip3 -V

Si vous voyez une sortie similaire à celle-ci, l'environnement Python est correct :

root@kitploit:~
Python 3.6.0
pip 19.2.2 from C:\Users\shmilylty\AppData\Roaming\Python\Python36\site-packages\pip (python 3.6)
✔Étapes d'installation (version git)
  1. Téléchargement

Comme ce projet est en cours de développement, il sera constamment mis à jour. Utilisez git clone pour cloner le dernier dépôt de code, ce qui facilitera également les futures mises à jour. Il n'est pas recommandé de télécharger depuis Releases, car les versions y sont peu fréquentes et la mise à jour n'est pas pratique. Ce projet a été mis en miroir sur Gitee(码云). Il est recommandé d'utiliser Gitee pour un clonage plus rapide en Chine :

root@kitploit:~
git clone https://gitee.com/shmilylty/OneForAll.git

ou :

root@kitploit:~
git clone https://github.com/shmilylty/OneForAll.git
  1. Installation

Vous pouvez installer les dépendances de OneForAll avec pip3. Voici un exemple d'installation des dépendances avec pip3 sous Windows : Attention : si votre Python3 est installé dans le répertoire Program Files du système, par exemple C:\Program Files\Python36, exécutez l'invite de commande cmd en tant qu'administrateur pour exécuter les commandes suivantes !

root@kitploit:~
cd OneForAll/
python3 -m pip install -U pip setuptools wheel -i https://mirrors.aliyun.com/pypi/simple/
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
python3 oneforall.py --help

Pour les autres plateformes, veuillez vous référer à Installation des dépendances. Si vous rencontrez un échec de compilation d'une dépendance lors de l'installation, consultez le document pour les solutions. Si le problème persiste, n'hésitez pas à rejoindre le groupe pour signaler le problème.

✔Étapes d'installation (version docker)

Téléchargez et éditez d'abord le fichier de configuration, ajoutez vos propres api et paramètres personnalisés, et conservez la structure de fichiers d'origine

root@kitploit:~
config
├── api.py
├── default.py
├── __init__.py
├── log.py
└── setting.py

Tirez l'image et exécutez-la, où ~/.config est remplacé par le chemin du dossier contenant votre propre fichier de configuration

root@kitploit:~
docker pull shmilylty/oneforall
docker run -it --rm -v ~/results:/OneForAll/results -v ~/.config:/OneForAll/config shmilylty/oneforall --target example.com run

Les paramètres sont ajoutés directement à la fin de la commande, les résultats sont sortis dans le répertoire local ~/results. Pour les enregistrer à un autre emplacement, vous pouvez modifier le chemin vous-même.

✨Démonstration d'utilisation

Si vous avez installé les dépendances avec pip3, utilisez la commande suivante pour exécuter l'exemple :

root@kitploit:~
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./example.txt run

Exemple

🧐Explication des résultats

Prenons l'exemple de la commande python3 oneforall.py --target example.com run. Une fois OneForAll exécuté avec les paramètres par défaut, les résultats correspondants seront générés dans le répertoire results :

Résultat

example.com.csv contient les résultats de collecte des sous-domaines sous chaque domaine principal.

all_subdomain_result_1583034493.csv est un fichier récapitulatif des sous-domaines collectés à chaque exécution de OneForAll, incluant example.com.csv, ce qui facilite l'obtention de tous les résultats dans un scénario de collecte par lots.

result.sqlite3 est une base de données SQLite3 stockant les sous-domaines collectés à chaque exécution de OneForAll. Sa structure de base de données est illustrée ci-dessous :

Base de données

La table example_com_origin_result stocke les résultats de collecte initiaux des sous-domaines de chaque module.

La table example_com_resolve_result stocke les résultats après résolution des sous-domaines.

La table example_com_last_result stocke les résultats de la collecte précédente de sous-domaines (générée seulement après plus de deux collectes).

🤔Aide à l'utilisation

Les paramètres de ligne de commande ne fournissent que quelques paramètres courants. Pour une configuration plus détaillée, veuillez vous référer à setting.py. Si vous pensez que certains paramètres sont fréquemment utilisés dans l'interface de commande ou qu'il manque des paramètres, n'hésitez pas à nous faire part de vos retours. Pour des raisons évidentes, si vous devez utiliser certaines interfaces de collecte bloquées, veuillez d'abord configurer un proxy dans setting.py. Certains modules de collecte nécessitent de fournir une API (la plupart peuvent être obtenues gratuitement en s'inscrivant). Si vous avez besoin de les utiliser, veuillez configurer les informations API dans api.py. Sinon, ignorez les messages d'erreur correspondants. (Pour les modules détaillés, veuillez lire la Description des modules de collecte)

L'interface en ligne de commande de OneForAll est basée sur Fire. Pour des utilisations plus avancées de Fire, veuillez consulter Utilisation de Fire CLI.

oneforall.py est le point d'entrée principal. oneforall.py peut appeler des modules tels que brute.py, takerover.py et dbexport.py. Pour faciliter le bruteforce de sous-domaines, le fichier brute.py a été extrait ; pour vérifier les risques de prise de contrôle de sous-domaines, le fichier takerover.py a été extrait ; pour faciliter l'exportation de la base de données, dbexport.py a été extrait. Ces modules peuvent être exécutés individuellement et acceptent des paramètres plus riches. Si vous souhaitez les utiliser séparément, veuillez vous référer à Aide à l'utilisation

❗Attention : Si vous rencontrez des problèmes ou des doutes lors de l'utilisation, veuillez d'abord rechercher dans Issues à l'aide de la fonction de recherche. Vous pouvez également consulter .

🎉Présentation du projet

Adresse du projet : https://github.com/shmilylty/OneForAll

L'importance de la collecte d'informations dans les tests de pénétration est évidente. La collecte de sous-domaines est une étape indispensable et très importante. Actuellement, de nombreux outils de collecte de sous-domaines sont open source sur Internet, mais ils présentent souvent les problèmes suivants :

  • Pas assez puissants : les interfaces de collecte de sous-domaines ne sont pas assez nombreuses, ils ne peuvent pas effectuer automatiquement une collecte par lots, ils n'ont pas de résolution automatique des sous-domaines, de validation, de FUZZ ou d'extension d'informations.
  • Pas assez conviviaux : certes, le module en ligne de commande est pratique, mais lorsque les paramètres optionnels sont nombreux et que les opérations à réaliser sont complexes, le mode en ligne de commande devient moins convivial. Une interface frontale interactive et hautement opérationnelle améliorerait considérablement l'expérience utilisateur.
  • Manque de maintenance : de nombreux outils n'ont pas été mis à jour depuis des années, les issues et les PR, ça n'existe pas.
  • Problèmes d'efficacité : ils n'utilisent pas de multi-processus, multi-threading ou d'asynchrone/coroutines, ce qui les rend lents.

Pour résoudre ces problèmes, ce projet a vu le jour. Comme son nom l'indique, je souhaite que OneForAll soit un outil ultime de collecte rapide et complète de sous-domaines, rassemblant les forces de nombreux outils 🔨.

Actuellement, OneForAll est encore en développement, il y a certainement des points à améliorer. Les contributions sous forme d'Issues et de PR sont les bienvenues. Si l'outil vous plaît, n'hésitez pas à laisser une petite étoile ✨. Un groupe QQ dédié aux échanges et aux retours sur OneForAll est disponible 👨‍👨‍👦‍👦 : 824414244 (Vérification du groupe : collecte d'informations).

👍Fonctionnalités

  • Grande capacité de collecte : pour les modules détaillés, veuillez lire la Description des modules de collecte.
    1. Collecte de sous-domaines via la transparence des certificats (actuellement 6 modules : censys_api, certspotter, crtsh, entrust, google, spyse_api)
    2. Collecte de sous-domaines par vérifications de routine (actuellement 4 modules : exploitation de la vulnérabilité de transfert de zone axfr, vérification des politiques de partage des ressources entre origines cdx, vérification du certificat HTTPS cert, vérification de la politique de sécurité du contenu csp, vérification du fichier robots robots, vérification du fichier sitemap sitemap, parcours du DNS via les enregistrements NSEC ; d'autres modules comme NSEC3 seront ajoutés ultérieurement)

Si vous avez d'autres excellentes idées, n'hésitez pas à me le faire savoir ! 😎

🌲Structure du répertoire

Pour plus d'informations, veuillez consulter Description de la structure du répertoire.

Le répertoire docs de ce projet contient également des aides et des explications, comme Source des dictionnaires de sous-domaines, Processus de détection de résolution générique.

👏Frameworks utilisés

  • aiohttp - Framework client/serveur HTTP asynchrone
  • beautifulsoup4 - Bibliothèque Python facilitant l'extraction de données à partir de fichiers HTML ou XML
  • fire - Python Fire est une bibliothèque qui génère automatiquement une interface en ligne de commande (CLI) à partir de n'importe quel objet Python
  • loguru - Bibliothèque Python de logging agréable
  • massdns - Résolveur DNS haute performance
  • records - Records est une bibliothèque très simple mais puissante pour effectuer des requêtes SQL brutes sur la plupart des bases de données relationnelles.
  • requests - La seule bibliothèque HTTP Python non génétiquement modifiée, à consommer sans modération.
  • tqdm - Barre de progression rapide et extensible pour Python et CLI

Merci à ces excellentes bibliothèques Python !

🔖Gestion des versions

Ce projet utilise le format de version sémantique SemVer pour la gestion des versions. Vous pouvez consulter le Journal des modifications pour connaître l'historique des changements.

⌛Planification future

  • Optimisation et amélioration continues de chaque module
  • Implémentation d'une interface frontale interactive et puissante

Pour plus d'informations, veuillez consulter le Plan de développement futur.

🙏Contributions

Les contributions de tous sont chaleureusement les bienvenues pour améliorer ce projet !

👨‍💻Contributeurs

  • Jing Ling
    • Développeur principal

Vous pouvez consulter la liste de tous les contributeurs et leurs contributions dans le Document des contributeurs. Merci à eux d'avoir rendu OneForAll plus puissant et plus facile à utiliser.

☕Soutien

Si ce projet vous a aidé, vous pouvez m'offrir un café pour m'encourager :)

📄Copyright

Ce projet est sous licence GPL-3.0. Pour plus de détails, veuillez consulter LICENSE.

😘Remerciements

Merci aux différents projets open source de collecte de sous-domaines !

Merci aux membres de A-Team pour leurs réponses chaleureuses et désintéressées !

📜Avertissement

Cet outil ne doit être utilisé que dans le cadre d'une sécurité d'entreprise légalement autorisée. Lors de l'utilisation de cet outil, vous devez vous assurer que toutes vos actions sont conformes aux lois et réglementations locales. Si vous commettez un acte illégal en utilisant cet outil, vous en assumerez l'entière responsabilité. Les développeurs et tous les contributeurs de cet outil déclinent toute responsabilité légale et solidaire. À moins que vous n'ayez lu, compris et accepté toutes les clauses de cet accord, veuillez ne pas installer ni utiliser cet outil. Votre utilisation ou toute autre manifestation expresse ou implicite de votre acceptation de cet accord sera considérée comme votre consentement à être lié par cet accord.

💖Tendance des étoiles

Évolution des étoiles dans le temps

Télécharger l’outil
Problèmes fréquents et réponses.md
  1. Mise à jour

Exécutez les commandes suivantes pour mettre à jour le projet (les modifications apportées à /config/setting.py et /config/api.py peuvent être conservées) :

root@kitploit:~
git stash        # Mettre de côté les modifications locales
git fetch --all  # Récupérer les mises à jour du projet
git pull         # Télécharger et écraser
git stash pop    # Restaurer les modifications locales

La table example_com_now_result stocke les résultats actuels de collecte des sous-domaines. En général, il suffit de se concentrer sur cette table.

Pour plus d'informations, veuillez consulter Explication des champs.

Problèmes fréquents et réponses

Aide pour oneforall.py

Les informations d'aide suivantes peuvent ne pas être à jour. Vous pouvez utiliser python oneforall.py --help pour obtenir les dernières informations d'aide.

root@kitploit:~
python oneforall.py --help
root@kitploit:~
NAME
    oneforall.py - Aide de OneForAll

SYNOPSIS
    oneforall.py COMMAND | --target=TARGET <flags>

DESCRIPTION
    OneForAll est un outil puissant de collecte de sous-domaines

    Exemple :
        python3 oneforall.py version
        python3 oneforall.py --target example.com run
        python3 oneforall.py --targets ./domains.txt run
        python3 oneforall.py --target example.com --valid None run
        python3 oneforall.py --target example.com --brute True run
        python3 oneforall.py --target example.com --port small run
        python3 oneforall.py --target example.com --fmt csv run
        python3 oneforall.py --target example.com --dns False run
        python3 oneforall.py --target example.com --req False run
        python3 oneforall.py --target example.com --takeover False run
        python3 oneforall.py --target example.com --show True run

    Note :
        Le paramètre `alive` peut prendre les valeurs True, False pour exporter respectivement les sous-domaines actifs ou tous les sous-domaines.
        Le paramètre `port` peut prendre les valeurs 'default', 'small', 'large', voir la configuration dans config.py.
        Le paramètre `fmt` accepte les formats 'csv', 'json'.
        Le paramètre `path` par défaut None utilise le chemin de génération du répertoire des résultats de OneForAll.

ARGUMENTS
    TARGET
        Nom de domaine unique (paramètre obligatoire, un des deux)
    TARGETS
        Chemin du fichier contenant un nom de domaine par ligne (paramètre obligatoire, un des deux)

FLAGS
    --brute=BRUTE
        Activation du bruteforce des sous-domaines (par défaut False)
    --dns=DNS
        Résolution DNS des sous-domaines (par défaut True)
    --req=REQ
        Requête HTTP sur les sous-domaines (par défaut True)
    --port=PORT
        Plage de ports pour la validation des sous-domaines (par défaut seulement le port 80)
    --valid=VALID
        Exporter uniquement les sous-domaines actifs (par défaut False)
    --fmt=FMT
        Format de sauvegarde des résultats (par défaut csv)
    --path=PATH
        Chemin de sauvegarde des résultats (par défaut None)
    --takeover=TAKEOVER
        Vérifier les risques de prise de contrôle des sous-domaines (par défaut False)
dnssec
  • Collecte de sous-domaines à partir d'archives web (actuellement 2 modules : archivecrawl, commoncrawl ; ce module est encore en phase de débogage, d'autres modules seront ajoutés et améliorés)
  • Collecte de sous-domaines à partir d'ensembles de données DNS (actuellement 24 modules : bevigil_api, binaryedge_api, bufferover, cebaidu, chinaz, chinaz_api, circl_api, cloudflare, dnsdb_api, dnsdumpster, hackertarget, ip138, ipv4info_api, netcraft, passivedns_api, ptrarchive, qianxun, rapiddns, riddler, robtex, securitytrails_api, sitedossier, threatcrowd, wzpc, ximcx)
  • Collecte de sous-domaines par requêtes DNS (actuellement 5 modules : énumération des enregistrements SRV courants et requêtes pour collecter des sous-domaines srv, et collecte via les enregistrements DNS MX, NS, SOA, TXT)
  • Collecte de sous-domaines à partir de données de plateformes de renseignement sur les menaces (actuellement 6 modules : alienvault, riskiq_api, threatbook_api, threatminer, virustotal, virustotal_api ; d'autres modules seront ajoutés et améliorés)
  • Découverte de sous-domaines via les moteurs de recherche (actuellement 18 modules : ask, baidu, bing, bing_api, duckduckgo, exalead, fofa_api, gitee, github, github_api, google, google_api, shodan_api, so, sogou, yahoo, yandex, zoomeye_api). Dans les modules de recherche, sauf pour les moteurs spéciaux, les moteurs génériques prennent en charge l'exclusion automatique, la recherche complète et la recherche récursive.
  • Prise en charge du bruteforce de sous-domaines : ce module propose un dictionnaire classique ainsi qu'un mode de fuzzing personnalisé, prend en charge le bruteforce par lots et récursif, et détecte et traite automatiquement la résolution générique.
  • Prise en charge de la validation des sous-domaines : activée par défaut, elle résout automatiquement les DNS des sous-domaines, effectue des requêtes HTTP pour obtenir le titre et le banner, et évalue de manière globale l'état de vie du sous-domaine.
  • Prise en charge du crawling de sous-domaines : à partir des sous-domaines existants, il effectue des requêtes sur le corps de la réponse et le JavaScript contenu pour découvrir de nouveaux sous-domaines.
  • Prise en charge du remplacement de sous-domaines : à partir des sous-domaines existants, il utilise des techniques de remplacement pour découvrir de nouveaux sous-domaines.
  • Prise en charge de la détection de prise de contrôle de sous-domaines : activée par défaut, elle vérifie les risques de prise de contrôle et prend en charge la prise de contrôle automatique (actuellement seulement GitHub, à améliorer) ainsi que la vérification par lots.
  • Fonctionnalités de traitement puissantes : les résultats des sous-domaines découverts prennent en charge la suppression automatique, la résolution DNS automatique, la détection par requêtes HTTP, le filtrage automatique des sous-domaines valides, l'extension des informations de banner. Les formats d'exportation pris en charge sont txt, csv, json.
  • Très rapide : le module de collecte utilise le multi-threading, le module de bruteforce utilise massdns, la résolution DNS peut atteindre plus de 350 000 noms de domaine par seconde. La résolution DNS et les requêtes HTTP dans la validation des sous-domaines utilisent des coroutines asynchrones, et la vérification des risques de prise de contrôle de sous-domaines utilise le multi-threading.
  • Bonne expérience utilisateur : chaque module dispose d'une barre de progression, les résultats de chaque module sont sauvegardés de manière asynchrone.