
次世代のDorX。Dorksによって、Dorksのために作られました。🤓
DorXNG は、複数の上流検索プロバイダーを介して高度な検索エンジンオペレーターを使用して OSINT データを収集する最新のソリューションです。バックエンドでは、SearXNG(セルフホスト可能で、カスタマイズ可能、プライバシー重視のメタ検索エンジン)の専用コンテナイメージを活用しています。
当社の SearXNG 実装は、すべての検索クエリを Tor ネットワーク経由でルーティングし、Tor の MaxCircuitDirtiness 設定ディレクティブを使用して 10 秒ごとに回線をリフレッシュします。また、SearXNG のクライアント側タイムアウト機能はすべて無効化しています。これらの設定により、多くの検索クエリを繰り返し発行する際に一般的に発生する検索エンジンの制限を回避できます。
DorXNG クライアントアプリケーションは Python3 で記述されており、SearXNG API と連携して検索クエリを同時に発行します。さらに、複数の SearXNG インスタンスにまたがってリクエストを発行することもできます。取得した検索結果は SQLite3 データベースに保存されます。

高度な検索オペレータークエリを許可する、サポートされているすべての上流検索エンジンを有効化しています。
GoogleDuckDuckGoQwantBingBraveStartpageYahooSearXNG がサポートする検索エンジンの詳細については、Configured Engines を参照してください。
これを可能にしてくれた Tor と SearXNG の開発者に称賛を送ります。両方のプロジェクトに寄付してください!
インスピレーションを与えてくれた pagodo の開発者と、あの素晴らしい ghdb_scraper.py スクリプトにも称賛を!
最後になりましたが、何よりも j0hnny に称賛を。OG ダーク。🧠🏴☠
DorXNG をインストール
git clone https://github.com/researchanddestroy/dorxng
cd dorxng
pip install -r requirements.txt
./DorXNG.py -h
カスタム SearXNG Docker コンテナをダウンロードして実行(少なくとも1つ)。複数の SearXNG インスタンスを使用できます。DorXNG で --serverlist オプションを使用してください。参照: server.lst
docker run researchanddestroy/searxng:latest
自分でコンテナをビルドしたい場合:
git clone https://github.com/researchanddestroy/searxng # ビルドプロセスを完了するには URL をすべて小文字にする必要があります
cd searxng
DOCKER_BUILDKIT=1 make docker.build
docker images
docker run <image-id>
デフォルトでは、DorXNG は parse_args.py 内にハードコードされた server 変数を持ち、これはマシン上で最初に実行するコンテナに Docker が割り当てる IP アドレス 172.17.0.2 に設定されています。これは変更するか、--server または --serverlist で上書きできます。
検索クエリを発行開始
./DorXNG.py -q 'search query'
DorXNG データベースをクエリ
./DorXNG.py -D 'regex search string'
-h, --help このヘルプメッセージを表示して終了
-s SERVER, --server SERVER
DorXNG サーバーインスタンス - 例: 'https://172.17.0.2/search'
-S SERVERLIST, --serverlist SERVERLIST
サーバーリスト全体に検索クエリを発行 - 形式: 改行区切り
-q QUERY, --query QUERY
検索クエリを発行 - 例: 'search query' | '!tch search query' | 'site:example.com intext:example'
-Q QUERYLIST, --querylist QUERYLIST
検索クエリリストを反復処理 - 形式: 改行区切り
-n NUMBER, --number NUMBER
ページ結果の反復回数を指定
-c CONCURRENT, --concurrent CONCURRENT
同時ページリクエストの数を指定
-l LIMITDATABASE, --limitdatabase LIMITDATABASE
データベースの最大サイズ制限を設定 - 超過後は新しいデータベースを開始 - 例: --limitdatabase 10 (10k データベースエントリ) - 推奨最大データベースサイズは 50k
深い再帰を行う場合
-L LOOP, --loop LOOP メイン関数ループの反復回数を定義 - 0 で無限ループ
-d DATABASE, --database DATABASE
SQL データベースファイルを指定 - デフォルト: 'dorxng.db'
-D DATABASEQUERY, --databasequery DATABASEQUERY
データベースクエリを発行 - 形式: 正規表現
-m MERGEDATABASE, --mergedatabase MERGEDATABASE
SQL データベースファイルをマージ - 例: --mergedatabase database.db
-t TIMEOUT, --timeout TIMEOUT
リクエスト間のタイムアウト間隔を指定 - デフォルト: 4 秒 - 0 で無効化
-r NONEWRESULTS, --nonewresults NONEWRESULTS
新しい結果がない場合の反復回数を指定 - デフォルト: 4 (3 回試行) - 0 で無効化
-v, --verbose 冗長出力を有効化
-vv, --veryverbose 非常に冗長な出力を有効化 - 生の JSON 出力を表示
場合によっては、上流の検索プロバイダーによってすでにシャントされている Tor 出口ノードに当たることがあり、その結果、最小限の検索結果しか得られないことがあります。心配はいりません... クエリを発射し続けてください。😉
DorXNG SQL データベースファイルを保持し、コマンドを再実行するか、--loop スイッチを使用してメイン関数を繰り返し実行してください。🔁
多くの場合、検索クエリを何度もパスするほど、より多くの結果が見つかります。🍻
また、速度を犠牲にしてより多くのデータ出力を得ていることに注意してください。結局これは OSINT プロジェクトですから。🔎🌎
発行する検索クエリはそれぞれ 7 つの上流検索プロバイダーに送信されます... 特に --concurrent クエリでは、多くの上流リクエストが発生します... なので辛抱強く待ちましょう。
DorXNG は新しい検索結果をデータベースファイルに追加し続けることに注意してください。--database スイッチを使用してデータベースファイル名を指定してください。デフォルトのファイル名は dorxng.db です。これはほとんどの人には関係ないかもしれませんが、OSINT 調査を分けて管理したい場合に便利です。
同時検索リクエスト数は 4 が最適のようです。それ以上発行することもできますが、一度に多くのクエリを発行するほど結果を受け取るまでに時間がかかります。また、その特定の Tor 回線で上流検索プロバイダーから HTTP/429 Too Many Requests 応答を受け取る可能性も高まります。
複数の SearXNG Docker コンテナをあまりに急速に起動すると、Tor 接続が確立できない場合があります。 コンテナの初期化中に、Tor 接続確認機能からの有効な応答は次のようになります:
Checking Tor Connectivity..
{"IsTor":true,"IP":"<tor-exit-node>"}
これ以外の表示が見られた場合、または SearXNG モニタースクリプト(コンテナ内の STDOUT)から HTTP/500 応答コードが返ってき始めた場合は、Docker コンテナを強制終了して新しいものを起動してください。
DorXNG 内での HTTP/504 Gateway Time-out 応答コードは時々発生することがあります。これは SearXNG インスタンスが 1 分以内に有効な応答を受け取れなかったことを意味します。その特定の Tor 回線が遅すぎる可能性があります。続行してください!
これらのコンテナを大量に実行する理由は特にありません... まだ... 😉 いくつ実行するかは、何をしているかによって大きく異なります。各コンテナは約 1.25GB の RAM を使用します。
1 つのコンテナで実行しても問題なく動作しますが、検索結果を見逃す可能性があります。そのため、--loop を使用し、--timeout は無効にしないでください。
複数のコンテナを実行すると便利なのは、それぞれが 10 秒ごとにリフレッシュされる独自の Tor 回線を持つからです。
--serverlist モードを実行するときは、--timeout 機能を無効にしてリクエスト間に遅延がないようにしてください(デフォルトの遅延間隔は 4 秒です)。
コンテナを多く実行するほど、より多くのメモリが必要になることに注意してください。これは深い再帰にも当てはまります... Python の最大再帰制限を無効にしています... 🔁😉
main に戻らずにコマンドが経由する再帰の数が多いほど、プロセスが消費するメモリが増えます。戻ってきたときにプロセスが Killed エラーメッセージでクラッシュしていることがあります。その場合、マシンのメモリが不足してプロセスが強制終了されたことを意味します。ただし、データベースファイルは問題ありません。👍👍
データベースファイルが非常に大きくなると、プログラムが遅くなり、反復のたびにより多くのメモリを消費する可能性があります...
あの Python スタックフレームはとても分厚いです... 🍑😅
約 5 万エントリを超えるデータベースファイルでパフォーマンスの著しい低下が見られました。
--limitdatabase オプションは、これらのメモリ消費問題を軽減するために実装されました。--loop と組み合わせて使用すると、iterator.py 内での深い再帰的繰り返しを中断し、中断したところから main を再開できます。
一連のデータベースファイルができたら、--mergedatabase を使用して(一度に 1 つずつ)すべてをマージできます。--database で未使用のファイル名を指定すれば、新しいデータベースファイルにすべてをマージすることもできます。
同梱の query.lst ファイルは、現在 Google Hacking Database (GHDB) に存在するすべてのダークです。参照: ghdb_scraper.py
すでに実行済みです... 😉 当社の ghdb.db ファイルには 100 万以上のエントリが含まれています!🤩 コピーが必要な場合は、こちらからダウンロードできます ghdb.db。😉
ghdb.db データベースのクエリ例:
./DorXNG.py -d ghdb.db -D '^http.*\.sql$'
DorXNG の Golang による書き直しはすでに進行中です。😉 (GorXNG? | DorXNGNG?) 😆
もっと多くのダークが必要です... 😅 DorkGPT をチェックしてください 👀
単一検索クエリ
./DorXNG.py -q 'search query'
同時検索クエリ
./DorXNG.py -q 'search query' -c4
ページ反復モード
./DorXNG.py -q 'search query' -n4
反復的同時検索クエリ
./DorXNG.py -q 'search query' -c4 -n64
サーバーリスト反復モード
./DorXNG.py -S server.lst -q 'search query' -c4 -n64 -t0
クエリリスト反復モード
./DorXNG.py -Q query.lst -c4 -n64
クエリとサーバーリストの反復
./DorXNG.py -S server.lst -Q query.lst -c4 -n64 -t0
メイン関数ループ反復モード
./DorXNG.py -S server.lst -Q query.lst -c4 -n64 -t0 -L4
データベースファイルサイズ制限を 10k エントリに設定した無限メイン関数ループ反復モード
./DorXNG.py -S server.lst -Q query.lst -c4 -n64 -t0 -L0 -l10
データベースのマージ(一度に1つ)を新しいデータベースファイルへ
./DorXNG.py -d new-database.db -m dorxng.db
現在の作業ディレクトリ内のすべてのデータベースファイルを新しいデータベースファイルにマージ
for i in `ls *.db`; do ./DorXNG.py -d new-database.db -m $i; done
データベースのクエリ
./DorXNG.py -d new-database.db -D 'regex search string'