13P by GN⁺ 13시간전 | ★ favorite | 댓글 5개
  • 항공기, 선박, 위성, 지진, 분쟁, 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 기반 손쉬운 배포, 고성능 렌더링, 공개 데이터만 사용
  • 보안·정보 분석 연구자 및 스타트업 데이터 엔지니어에게 유용한 실시간 인텔리전스 도구

쉐도우브로커! 오랫만에 메스이펙트 2를 떠올렸습니다. https://masseffect.fandom.com/wiki/Shadow_Broker_(enemy)

해커뉴스 댓글보고 빵터졌네요

"첫 커밋 zip파일안에 ./frontend/.env.local과 ./backend/.env가 유출되어 있었음"

"그래서 이름이 OSINT(Open Source Intelligence)인 것임. 모든 게 공개되어 있음"

다운 받아보니 진짜로 있네요

ㅋㅋ 아 이건 좀 웃기네요 ㅋㅋㅋ

Hacker News 의견들
  • 실제로 아무 조치를 취할 수 없는 데이터를 이렇게 과도하게 인식하는 게 바람직한 일인지, 아니면 단지 스트레스와 자기효능감 저하로 이어지는 길인지 궁금함

  • 일부 geojson을 실시간 타일로 최적화하는 작업이 정말 재미있고 몰입감 있는 프로젝트였음
    이런 프로젝트들 봤는지 궁금함 → PMTiles, Martin

    • 두 프로젝트 모두 정말 좋아함. 현재 ShadowBroker는 실시간 레이더 트래킹(60초마다 FastAPI 백엔드에서 MapLibre로 GeoJSON 스트리밍)에 최적화되어 있음
      그래서 지도 위에서 거의 60fps 애니메이션 수준의 부드러운 움직임을 얻고 있음
      나중에 PostGIS 기반으로 항공 및 AIS 데이터를 아카이빙하게 되면 Martin으로 옮기는 게 좋겠지만, 실시간 타깃 때문에 타일 캐시를 계속 무효화해야 해서 지금은 과한 선택임
    • Protomaps는 국가 단위 지도를 간단히 제공할 때도 유용함. CLI에 필요한 기능이 거의 다 들어있음 → Protomaps CLI 문서
      예전에 농업 프로젝트에 이걸 세팅해서 잘 썼음
  • 이 프로젝트가 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유출되어 있었음

    • 그래서 이름이 OSINT(Open Source Intelligence)인 것임. 모든 게 공개되어 있음
    • 진짜 OSINT는 댓글 속에 있다는 농담을 던짐
    • 왜 그걸 확인했는지 궁금함
  • 이 프로젝트 멋짐. 이 링크가 떠오름

    • 나도 비슷한 걸 만들고 있었음 → cimple-gis 프로젝트
      완성해야 하는데 아직 시간이 없음
    • 클릭하기 위험해 보였지만 괜찮았음
  • 멋진 데이터 집계임. 다만 피드 파이프라인에 staleness 신호를 추가하면 좋겠음
    일부 소스(특히 위협 피드)는 업데이트 주기가 몇 초가 아니라 몇 시간 단위라서, 각 소스의 마지막 업데이트 시각을 표시하면 데이터 신선도 판단에 도움이 될 것임

  • 정말 멋짐. 공유해줘서 고마움.
    하루에 몇 시간씩 한 달 정도 돌린다면 API 비용이 얼마나 나올지 궁금함. 감당 가능한 수준인지 알고 싶음

    • 전부 무료라고 함
  • 아주 멋진 프로젝트임. 다만 개념, 피드, 디자인 전반이 worldmonitor.app을 많이 떠올리게 함
    참고로 그쪽도 이미 라이브 서비스로 배포되어 있음