
Nouvelle génération DorX. Construit par des Dorks, pour des Dorks. 🤓
DorXNG est une solution moderne pour récolter des données OSINT en utilisant des opérateurs de recherche avancés via plusieurs fournisseurs de recherche en amont. En arrière-plan, elle exploite une image conteneurisée spécialement conçue de SearXNG, un méta-moteur de recherche auto-hébergé, hackable et respectueux de la vie privée.
Notre implémentation de SearXNG route toutes les requêtes de recherche sur le réseau Tor tout en renouvelant les circuits toutes les dix secondes via la directive de configuration MaxCircuitDirtiness de Tor. Nous avons également désactivé toutes les fonctionnalités de timeout côté client de SearXNG. Ces paramètres permettent d'éviter les restrictions des moteurs de recherche souvent rencontrées lors de l'émission de nombreuses requêtes répétées.
L'application cliente DorXNG est écrite en Python3 et interagit avec l'API SearXNG pour émettre des requêtes de recherche simultanément. Elle peut même envoyer des requêtes à travers plusieurs instances SearXNG. Les résultats de recherche obtenus sont stockés dans une base de données SQLite3.

Nous avons activé tous les moteurs de recherche en amont supportés qui permettent les requêtes avec opérateurs avancés :
GoogleDuckDuckGoQwantBingBraveStartpageYahooPour plus d'informations sur les moteurs de recherche supportés par SearXNG, voir : Moteurs configurés
Un grand merci aux développeurs de Tor et SearXNG pour avoir rendu cela possible. Allez faire un don aux deux projets !
Merci également au développeur de pagodo pour l'inspiration et ce superbe script ghdb_scraper.py !
Enfin, et surtout, merci à j0hnny. Le Dork original. 🧠🏴☠
Installer DorXNG
git clone https://github.com/researchanddestroy/dorxng
cd dorxng
pip install -r requirements.txt
./DorXNG.py -h
Télécharger et exécuter notre conteneur Docker SearXNG personnalisé (au moins un). Plusieurs instances SearXNG peuvent être utilisées. Utilisez l'option --serverlist avec DorXNG. Voir : server.lst
docker run researchanddestroy/searxng:latest
Si vous souhaitez construire le conteneur vous-même :
git clone https://github.com/researchanddestroy/searxng # L'URL doit être entièrement en minuscules pour que la construction réussisse
cd searxng
DOCKER_BUILDKIT=1 make docker.build
docker images
docker run <image-id>
Par défaut, DorXNG a une variable server codée en dur dans parse_args.py qui est définie sur l'adresse IP que Docker attribuera au premier conteneur que vous exécuterez sur votre machine : 172.17.0.2. Cela peut être modifié, ou écrasé avec --server ou --serverlist.
Commencer à émettre des requêtes de recherche
./DorXNG.py -q 'search query'
Interroger la base de données DorXNG
./DorXNG.py -D 'regex search string'
-h, --help affiche ce message d'aide et quitte
-s SERVER, --server SERVER
Instance du serveur DorXNG - Exemple : 'https://172.17.0.2/search'
-S SERVERLIST, --serverlist SERVERLIST
Émettre des requêtes de recherche sur une liste de serveurs - Format : séparé par des sauts de ligne
-q QUERY, --query QUERY
Émettre une requête de recherche - Exemples : 'search query' | '!tch search query' | 'site:example.com intext:example'
-Q QUERYLIST, --querylist QUERYLIST
Parcourir une liste de requêtes de recherche - Format : séparé par des sauts de ligne
-n NUMBER, --number NUMBER
Définir le nombre d'itérations de résultats de pages
-c CONCURRENT, --concurrent CONCURRENT
Définir le nombre de requêtes de page simultanées
-l LIMITDATABASE, --limitdatabase LIMITDATABASE
Définir la taille maximale de la base de données - Démarre une nouvelle base après dépassement - Exemple : --limitdatabase 10 (10k entrées) - Taille max suggérée : 50k
lors d'une récursion profonde
-L LOOP, --loop LOOP Définir le nombre d'itérations de la boucle de la fonction principale - Boucle infinie avec 0
-d DATABASE, --database DATABASE
Spécifier le fichier de base de données SQL - Par défaut : 'dorxng.db'
-D DATABASEQUERY, --databasequery DATABASEQUERY
Interroger la base de données - Format : expression régulière
-m MERGEDATABASE, --mergedatabase MERGEDATABASE
Fusionner un fichier de base de données SQL - Exemple : --mergedatabase database.db
-t TIMEOUT, --timeout TIMEOUT
Spécifier l'intervalle de temporisation entre les requêtes - Par défaut : 4 secondes - Désactiver avec 0
-r NONEWRESULTS, --nonewresults NONEWRESULTS
Spécifier le nombre d'itérations sans nouveaux résultats - Par défaut : 4 (3 tentatives) - Désactiver avec 0
-v, --verbose Activer la sortie verbeuse
-vv, --veryverbose Activer la sortie très verbeuse - Affiche la sortie JSON brute
Parfois, vous tomberez sur un nœud de sortie Tor déjà mis sur liste noire par les fournisseurs de recherche en amont, ce qui vous donnera un nombre minimal de résultats de recherche. Pas d'inquiétude... Continuez simplement à envoyer des requêtes. 😉
Conservez votre fichier de base de données DorXNG SQL et relancez votre commande, ou utilisez l'option --loop pour itérer la fonction principale de manière répétée. 🔁
Le plus souvent, plus vous faites de passes sur une requête de recherche, plus vous trouverez de résultats. 🍻
Gardez également à l'esprit que nous avons sacrifié la vitesse pour un plus grand volume de données. Après tout, c'est un projet OSINT. 🔎🌎
Chaque requête de recherche que vous effectuez est envoyée à 7 fournisseurs de recherche en amont... Surtout avec les requêtes --concurrent, cela génère beaucoup de requêtes en amont... Alors soyez patient.
Sachez que DorXNG continuera d'ajouter de nouveaux résultats de recherche à votre fichier de base de données. Utilisez l'option --database pour spécifier un nom de fichier de base de données ; le nom par défaut est dorxng.db. Cela n'a probablement pas d'importance pour la plupart, mais si vous voulez garder vos investigations OSINT séparées, c'est là pour vous.
Quatre requêtes simultanées semblent être le point idéal. Vous pouvez en envoyer plus, mais plus vous en envoyez à la fois, plus il faut de temps pour recevoir les résultats. Cela augmente également la probabilité de recevoir des réponses HTTP/429 Too Many Requests des fournisseurs de recherche en amont sur ce circuit Tor spécifique.
Si vous démarrez plusieurs conteneurs Docker SearXNG trop rapidement, les connexions Tor peuvent échouer. Lors de l'initialisation d'un conteneur, une réponse valide de la fonction de vérification de la connectivité Tor ressemble à ceci :
Checking Tor Connectivity..
{"IsTor":true,"IP":"<tor-exit-node>"}
Si vous voyez autre chose, ou si vous commencez à voir des codes de réponse HTTP/500 provenant du script de surveillance de SearXNG (STDOUT dans le conteneur), tuez le conteneur Docker et lancez-en un nouveau.