-
항공기, 선박, 위성, 지진, 분쟁, CCTV, GPS 교란 등 다양한 실시간 데이터를 하나의 지리정보 기반 인터페이스로 통합
-
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 데이터를 통합 시각화하는 오픈소스 플랫폼
-
항공·해상·우주·지정학·감시·신호 등 다중 영역을 하나의 지도에서 분석 가능
-
Docker 기반 손쉬운 배포, 고성능 렌더링, 공개 데이터만 사용
-
보안·정보 분석 연구자 및 스타트업 데이터 엔지니어에게 유용한 실시간 인텔리전스 도구