- 航空機、船舶、衛星、地震、紛争、CCTV、GPS妨害 など多様なリアルタイムデータを、1つの 地理情報ベースのインターフェース に統合
- Next.js、MapLibre GL、FastAPI、Python で構築されており、分析者や研究者が 地球規模の活動を単一画面で可視化 可能
- 航空・海上・宇宙・地政学・監視・信号情報 など6つの主要領域の詳細な追跡機能を提供し、各レイヤーは個別に制御可能
- Docker/Podman ベースの容易なデプロイと API連携の自動化 により、セルフホスティングや開発環境の構築が簡単
- すべてのデータは 公開OSINTソース から収集されており、教育および研究目的 のみで利用可能であることを明示
概要
- ShadowBroker はマルチドメインの リアルタイムオープンソースインテリジェンス(Real-Time OSINT) ダッシュボードで、数十の公開データフィードを統合して 単一のダークマップインターフェース に表示
- 航空機、船舶、衛星、地震、紛争地域、CCTVネットワーク、GPS妨害、地政学的イベントなどをリアルタイムで追跡
- Next.js、MapLibre GL、FastAPI、Python で構成されており、分析者・研究者・OSINT愛好家のための可視化ツールとして設計
主な活用例
- 富豪のプライベートジェット の追跡
- 衛星の軌道通過 の監視
- 世界の海上交通 の監視
- GPS妨害地域 の検出
- 地震および災害 のリアルタイム観測
機能概要
🛩️ 航空追跡 (Aviation Tracking)
- OpenSky Network を通じて約5,000機以上の商用航空機のリアルタイム位置を表示
- 個人用・軍用航空機 を別分類し、所有者情報を含むビジネスジェット の追跡に対応
- 飛行軌跡の蓄積、旋回検知、地上状態表示 などの詳細機能をサポート
- 航空機の種類ごとに 正確なSVGアイコン を提供
🚢 海上追跡 (Maritime Tracking)
- aisstream.io WebSocket による25,000隻超の船舶リアルタイムデータ
- 船種ごとの色分け(貨物船、タンカー、旅客船、軍艦など)
- 米海軍空母11隻 のOSINTベース位置推定と GDELTニューススクレイピング自動化
- クルーズ・旅客船専用レイヤー、ズームレベル別クラスタ表示 をサポート
🛰️ 宇宙・衛星 (Space & Satellites)
- CelesTrak TLE + SGP4 ベースで2,000基以上の衛星のリアルタイム軌道を表示
- 任務タイプ別に色分け: 軍事偵察(赤)、SAR(青緑)、SIGINT(白)、航法(青)、早期警戒(マゼンタ)、商用画像(緑)、宇宙ステーション(金)
🌍 地政学・紛争 (Geopolitics & Conflict)
- GDELT ベースで直近8時間以内の約1,000件の紛争事案を集計
- DeepState Map のウクライナ戦線リアルタイムデータ
- SIGINT/RISINTニュースフィード および 地域情報パネル を提供
- 国の人口・首都・言語・通貨・面積、政府形態、国家元首情報(Wikidata)、Wikipedia要約を含む
📷 監視 (Surveillance)
- 2,000件以上の交通CCTV のリアルタイムストリームを統合
- ロンドン(TfL)、オースティン(TxDOT)、ニューヨーク(NYC DOT)、シンガポール(LTA)など
- 自動フィード検出およびレンダリング、ズームベースのクラスタ表示 をサポート
📡 信号情報 (Signal Intelligence)
- GPS妨害検出: 航空機のNAC-P値分析による干渉地域の可視化
- 無線傍受パネル: 無線傍受風UIを提供
🌐 追加レイヤー
- USGS地震データ(24時間)、昼夜境界線表示、リアルタイム金融市場指数、距離・方位測定ツール を含む
システム構成
- Frontend (Next.js): MapLibre GLベースの2D WebGL地図、SIGINTニュースフィード、制御パネル、市場・無線モジュール
- Backend (FastAPI): 多数のデータソース(OpenSky、adsb.lol、CelesTrak、USGS、GDELT、CCTVなど)から定期収集
- REST APIを通じて60〜120秒間隔でフロントエンドにデータを配信
データソースとAPI
| 出典 |
データ |
更新周期 |
APIキー |
| OpenSky Network |
商用・個人航空機 |
約60秒 |
任意 |
| adsb.lol |
軍用航空機 |
約60秒 |
不要 |
| aisstream.io |
船舶位置 |
リアルタイム |
必要 |
| CelesTrak |
衛星軌道 |
約60秒 |
不要 |
| USGS |
地震 |
約60秒 |
不要 |
| GDELT |
紛争事案 |
約6時間 |
不要 |
| DeepState Map |
ウクライナ戦線 |
約30分 |
不要 |
| TfL, TxDOT, NYC DOT, LTA |
交通CCTV |
約5分 |
一部必要 |
| RestCountries, Wikidata, Wikipedia |
国・地図情報 |
リクエスト時 |
不要 |
インストールと実行
Docker/Podmanベース
git clone 後、./compose.sh up -d コマンドで自動実行
- デフォルトポート: フロントエンド
3000、バックエンド 8000
- 環境変数
NEXT_PUBLIC_API_URL でポート再設定可能
コード修正向け開発環境
- Node.js 18+、Python 3.10~3.12 が必要
aisstream.io APIキーは必須、OpenSky、LTA キーは任意
npm run dev でフロント・バックエンドを同時実行
データレイヤー制御
- 航空機、衛星、船舶、地震、CCTV、紛争、GPS妨害など すべてのレイヤーを個別にトグル可能
- 既定で有効: 商用・軍用航空機、衛星、空母、地震、紛争、GPS妨害、昼夜境界
パフォーマンス最適化
- Gzip圧縮(92%)、ETagキャッシュ、ビューポートカリング、クラスタレンダリング、座標精度の縮小(小数点以下5桁) などにより、大規模なリアルタイムデータ処理を効率化
- React.memo および デバウンス(300ms) の適用によりレンダリング負荷を最小化
環境変数
- 必須:
AIS_API_KEY
- 任意:
OPENSKY_CLIENT_ID, OPENSKY_CLIENT_SECRET, LTA_ACCOUNT_KEY
免責事項とライセンス
- すべてのデータは 公開OSINTソース に基づいており、非公開・機密情報は不使用
- 軍事・情報目的での利用禁止、教育・研究用途に限定
- 各API提供者の 利用規約の遵守が必要
プロジェクト構成
- backend/: FastAPIアプリ、データ収集スケジューラ、CCTV・空母・紛争データ処理
- frontend/: Next.jsベースの地図・パネル・フィルタ・ニュース・市場・無線コンポーネント構成
- docker-compose.yml、compose.sh など自動デプロイスクリプトを含む
要約
- ShadowBrokerは 世界のリアルタイムOSINTデータを統合可視化するオープンソースプラットフォーム
- 航空・海上・宇宙・地政学・監視・信号 など複数領域を1つの地図上で分析可能
- Dockerベースの容易なデプロイ、高性能レンダリング、公開データのみを使用
- セキュリティ・情報分析の研究者やスタートアップのデータエンジニア に有用なリアルタイムインテリジェンスツール
5件のコメント
シャドウブローカー! 久しぶりに『Mass Effect 2』を思い出しました。 https://masseffect.fandom.com/wiki/Shadow_Broker_(enemy)
Hacker Newsのコメントを見て爆笑しましたね
"最初のコミットのzipファイル内で
./frontend/.env.localと./backend/.envが漏洩していた""だから名前がOSINT(Open Source Intelligence)なんだ。全部公開されている"
ダウンロードしてみたら、本当にありますね
笑う、これはちょっと面白いですねwww
Hacker Newsのコメント
実際には何の対処もできないデータをこのように過剰に認識することが望ましいのか、それとも単にストレスや自己効力感の低下につながるだけなのか気になる。
一部のgeojsonをリアルタイムタイル向けに最適化する作業は、本当に楽しく没入感のあるプロジェクトだった。 こういうプロジェクトを見たことがあるか気になる → PMTiles, Martin
このプロジェクトはmonitor-the-situation.comに似て見える。
「ShadowBroker is a real-time, full-spectrum geospatial intelligence dashboard」という説明は少し大げさに感じる。 「Air and Space domain awareness」のような表現のほうが正確だと思う。 Geospatial intelligenceは通常、衛星画像ベースの情報収集を意味し、「spectrum」は光のスペクトルを指すことが多い。
最初のコミットに含まれていた
ShadowBroker_v0.1.zipの中で、./frontend/.env.localと./backend/.envが流出していた。このプロジェクトはすばらしい。このリンクを思い出した。
すばらしいデータ集約だ。ただ、フィードのパイプラインに鮮度低下のシグナルを追加するとよさそう。 一部のソース(特に脅威フィード)は更新周期が数秒ではなく数時間単位なので、各ソースの最終更新時刻を表示すればデータの鮮度判断に役立つはずだ。
本当にすごい。共有してくれてありがとう。 1日に数時間ずつ1か月ほど動かした場合、APIコストがどれくらいになるのか気になる。負担可能な範囲か知りたい。
とてもすばらしいプロジェクトだ。ただ、コンセプト、フィード、デザイン全般からworldmonitor.appをかなり連想する。 参考までに、あちらもすでにライブサービスとして公開されている。