OPENOSINTは、AIエージェントがOSINT調査を自動的に実行するオープンソースのPythonフレームワークです。
ターゲットを自然言語で入力するだけで、エージェントが適切なツールを選択し、発見した情報に基づいて自動的に連鎖させ、構造化されたMarkdownレポートを保存します。
デモ
実際のセッション例:
$ openosint
openosint ❯ investigate target@example.com
→ generate_dorks('target@example.com')
→ search_email('target@example.com')
✓ Found: Spotify, WordPress, Gravatar, Office365
→ search_breach('target@example.com')
✓ Found in 2 breaches: LinkedIn (2016), Adobe (2013)
→ search_username('target_handle')
✓ Found on: GitHub, Reddit, HackerNews, Twitter
╭──────────────── Report ────────────────╮
│ ## Online Presence │
│ Spotify · WordPress · Gravatar │
│ │
│ ## Data Breaches │
│ LinkedIn (2016) · Adobe (2013) │
╰────────────────────────────────────────╯
✓ Report saved → reports/2026-05-16_report.md
メールアドレス → 関連アカウント → ユーザー名の自動ピボット → プラットフォーム横断検索まで、人の手を介さずに実行されます。
なぜ作ったのか
OSINT調査の典型的なワークフローはこうです:
- ターミナルを開いて
holeheでメールを調査 - 見つかったユーザー名をコピー
-
sherlockに切り替えてユーザー名を検索 - ブラウザでHaveIBeenPwnedを確認
- 別のタブでWHOIS検索
- ノートを取りながら繰り返す
ツールはすべてサイロ化されています。ピボットはすべて手動です。調査のロジックは頭の中にしかなく、ターミナルを閉じると消えてしまいます。
OpenOSINTはこの問題を解決します。
幻覚が構造的に不可能な理由
ほとんどのAIツールにはツール結果の幻覚という根本的な問題があります。モデルが実際のツール出力ではなく、もっともらしい結果を生成してしまう可能性があります。
OpenOSINTはAnthropicのネイティブtool use APIを使用しています。
while True:
response = client.messages.create(
model="claude-...",
tools=TOOL_SCHEMAS,
messages=messages
)
if response.stop_reason == "end_turn":
break # 調査完了
if response.stop_reason == "tool_use":
tool_results = []
for block in response.content:
if block.type == "tool_use":
# 実際のバイナリを実行(holehe、sherlock等)
real_output = await execute_tool(block.name, block.input)
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": real_output # 実際の出力、生成ではない
})
messages.append({"role": "assistant", "content": response.content})
messages.append({"role": "user", "content": tool_results})
モデルがツールを呼び出す必要がある場合、ハードストップします。実際のバイナリが実行されます。実際の出力がコンテキストに戻ります。
モデルはツール結果を生成しません。読むだけです。
sherlockが12件のプロフィールを見つけた場合、その12件のURLがそのままコンテキストに戻ります。モデルは存在しない13件目を追加することができません。
9つのツール
| ツール | バックエンド | 取得できる情報 |
|---|---|---|
search_email |
holehe | メールに紐づくSNSアカウント |
search_username |
sherlock | 300以上のプラットフォームのアカウント |
search_breach |
HaveIBeenPwned v3 | 情報漏洩履歴と漏洩データ種別 |
search_whois |
python-whois | 登録者、レジストラ、作成日 |
search_ip |
ipinfo.io | 位置情報、ASN、ホスト名 |
search_domain |
sublist3r | サブドメイン列挙 |
generate_dorks |
built-in | 12個のGoogle Dork URL(ネットワーク通信なし) |
search_paste |
psbdmp.ws | Pastebinダンプの言及検索 |
search_phone |
phoneinfoga | キャリア、国、回線種別 |
依存バイナリが未インストールの場合、そのツールはエラー文字列を返し、他のツールは通常通り動作し続けます。
3つのインターフェース
インタラクティブAI REPL(デフォルト)
$ openosint
# または
$ openosint shell
自然言語でターゲットや質問を入力できます:
openosint ❯ investigate target@example.com
openosint ❯ johndoe99の全アカウントを探して
openosint ❯ example.comのサブドメインは?
openosint ❯ +14155552671はモバイル番号?
調査後、レポートは自動的にreports/ディレクトリにMarkdown形式で保存されます。
REPLコマンド一覧:
| コマンド | 説明 |
|---|---|
clear |
会話メモリをリセット |
save |
最後のレポートを手動保存 |
tools |
利用可能なツールと状態を表示 |
config |
現在の設定を表示 |
help |
全コマンドを表示 |
exit または Ctrl-D |
終了 |
ダイレクトCLI(AI不要)
スクリプティングや自動化に最適:
# メールアカウント列挙(デフォルトタイムアウト:120秒)
openosint email target@example.com
# カスタムタイムアウト
openosint email target@example.com -t 60
# ユーザー名検索(デフォルトタイムアウト:180秒)
openosint username johndoe99
# 詳細出力
openosint -v email target@example.com
Anthropic APIキー不要で動作します。
MCPサーバー
全9ツールをMCP対応クライアントに公開します。
Claude Codeへの登録:
claude mcp add openosint python /path/to/OpenOSINT/openosint/mcp_server.py
claude mcp list # 確認
Claude Desktopの設定(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"openosint": {
"command": "python",
"args": ["/path/to/OpenOSINT/openosint/mcp_server.py"]
}
}
}
OllamaでローカルLLMも使用可能(APIキー不要):
openosint --provider ollama --ollama-model llama3.2
アーキテクチャ
コードベースは5つのレイヤーで構成されています。上位レイヤーのインポートは禁止です:
openosint/tools/ コアツール
実際のバイナリとAPIの非同期ラッパー
ステートレス。AI不要。純粋な関数。
openosint/agent.py AIエージェント
Anthropic tool useループ
セッションごとの会話履歴
openosint/repl.py インタラクティブREPL(prompt_toolkit + Rich)
openosint/mcp_server.py MCPサーバー(stdio転送)
openosint/cli.py CLIエントリーポイント
AIレイヤーは完全にオプションです。APIキーがなくても、CLIとMCPサーバーは独立して動作します。
インストール
git clone https://github.com/OpenOSINT/OpenOSINT.git
cd OpenOSINT
pip install -e .
またはPyPIから直接インストール:
pip install openosint
外部ツールのインストール:
pip install holehe sherlock-project sublist3r
オプション設定:
export ANTHROPIC_API_KEY=sk-ant-... # AI REPLに必要
export HIBP_API_KEY=your_key # HaveIBeenPwned v3
export IPINFO_TOKEN=your_token # ipinfo.io レート制限緩和
export VIRUSTOTAL_API_KEY=your_key # VirusTotal
export SHODAN_API_KEY=your_key # Shodan
まとめ
OpenOSINTは以下の3つのインターフェースで使用できます:
-
openosint— AI REPL(自動チェーニングによる完全調査) -
openosint email/openosint username— ダイレクトCLI(スクリプティング) - MCPサーバー — Claude Code / Claude Desktopでの調査実行
MITライセンス。Python 3.10以上。承認された調査目的のみ使用可能です。
GitHubでスターをつけていただけると嬉しいです ⭐
- GitHub: https://github.com/OpenOSINT/OpenOSINT
- ドキュメント: https://openosint.tech
⚠️ 本ツールは、承認されたセキュリティ調査、ペネトレーションテスト、調査報道のみを目的としています。適用される法律(GDPR、CCPA等)への準拠はユーザーの責任です。
