ShadowBroker dashboard OSINT thời gian thực tổng hợp dữ liệu toàn cầu

VNZ-TECHS
Một lập trình viên đã chia sẻ dự án cá nhân có tên ShadowBroker, một bảng điều khiển OSINT (Open Source Intelligence) thời gian thực có khả năng tổng hợp nhiều nguồn dữ liệu toàn cầu như máy bay, tàu biển, vệ tinh và dữ liệu xung đột trên cùng một bản đồ.

Dự án được giới thiệu trên cộng đồng công nghệ Hacker News và nhanh chóng thu hút sự chú ý của giới lập trình.

ShadowBroker1.jpg

Ý tưởng: gom mọi nguồn dữ liệu theo dõi toàn cầu vào một nơi​


Theo tác giả, ý tưởng ra đời vì anh cảm thấy bất tiện khi phải liên tục chuyển qua lại giữa các dịch vụ như:

  • Flightradar (theo dõi máy bay)
  • MarineTraffic (theo dõi tàu biển)
  • Twitter/X (tin tức sự kiện)
  • Các nguồn dữ liệu vệ tinh

Mỗi khi có sự kiện lớn trên thế giới, việc theo dõi tình hình thường đòi hỏi mở nhiều trang khác nhau. Vì vậy anh quyết định xây dựng một dashboard duy nhất để hiển thị tất cả dữ liệu này trên một bản đồ trực tiếp.

Dự án được đặt tên là ShadowBroker.

Hệ thống dữ liệu theo dõi thời gian thực​


ShadowBroker tổng hợp nhiều nguồn dữ liệu OSINT phổ biến, bao gồm:
  • ADS-B: dữ liệu máy bay dân sự và quân sự
  • AIS WebSocket stream: dữ liệu vị trí của hơn 25.000 tàu biển
  • N2YO: telemetry của vệ tinh
  • GDELT: dữ liệu sự kiện toàn cầu
Tất cả các dữ liệu này được hiển thị trên bản đồ sử dụng thư viện MapLibre.

Ngoài việc hiển thị vị trí, hệ thống còn có các lớp phân tích dữ liệu nâng cao.

Tính năng đặc biệt: phát hiện vùng gây nhiễu GPS​

Một trong những tính năng thú vị nhất của ShadowBroker là signal layer.
Lớp này phân tích dữ liệu bay để tính toán các khu vực có thể đang xảy ra gây nhiễu GPS.

Cách hoạt động:
  • Hệ thống phân tích chỉ số NAC-P (Navigation Accuracy Category for Position)
  • Khi nhiều máy bay cùng báo hiệu suy giảm độ chính xác định vị
  • Dashboard sẽ suy luận khu vực đó có thể đang xảy ra GPS jamming
Đây là kỹ thuật thường được sử dụng trong các hệ thống phân tích OSINT.

Thách thức kỹ thuật: hiển thị 30.000 đối tượng trên bản đồ​


Phần khó nhất của dự án không phải là thu thập dữ liệu mà là hiển thị dữ liệu trên trình duyệt.
Ban đầu, khi đổ hơn 30.000 đối tượng GeoJSON động lên bản đồ, trình duyệt gần như bị treo hoàn toàn.
Tác giả phải áp dụng nhiều kỹ thuật tối ưu:
  • Viewport culling
    chỉ render đối tượng nằm trong vùng bản đồ đang xem
  • Debounce state updates
    giảm tần suất cập nhật dữ liệu
  • Nén dữ liệu FastAPI
    giảm payload API khoảng 90%
Sau khi tối ưu, dashboard có thể chạy mượt trên laptop cá nhân với cấu hình:
  • CPU Intel i5
  • GPU RTX 3050

Công nghệ sử dụng​

FRONTEND (Next.js) │
│ │
│ ┌─────────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ MapLibre GL │ │ NewsFeed │ │ Control Panels│ │
│ │ 2D WebGL │ │ SIGINT │ │ Layers/Filters│ │
│ │ Map Render │ │ Intel │ │ Markets/Radio │ │
│ └──────┬──────┘ └────┬─────┘ └───────┬───────┘ │
│ └────────────────┼──────────────────┘ │
│ │ REST API (15s / 60s) │
├──────────────────────────┼─────────────────────────────┤
│ BACKEND (FastAPI) │
│ │ │
│ ┌───────────────────────┼──────────────────────────┐ │
│ │ Data Fetcher (Scheduler) │ │
│ │ │ │
│ │ ┌──────────┬──────────┬──────────┬───────────┐ │ │
│ │ │ OpenSky │ adsb.lol │ N2YO │ USGS │ │ │
│ │ │ Flights │ Military │ Sats │ Quakes │ │ │
│ │ ├──────────┼──────────┼──────────┼───────────┤ │ │
│ │ │ AIS WS │ Carrier │ GDELT │ CCTV │ │ │
│ │ │ Ships │ Tracker │ Conflict │ Cameras │ │ │
│ │ ├──────────┼──────────┼──────────┼───────────┤ │ │
│ │ │ DeepState│ RSS │ Region │ GPS │ │ │
│ │ │ Frontline│ Intel │ Dossier │ Jamming │ │ │
│ │ └──────────┴──────────┴──────────┴───────────┘ │ │
│ └──────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────┘
ShadowBroker được xây dựng bằng stack:

Frontend
  • Next.js

Backend
  • Python
  • FastAPI
Bản đồ
  • MapLibre

Dữ liệu được stream trực tiếp từ backend đến frontend mỗi 60 giây để giữ chuyển động mượt.

Khả năng mở rộng trong tương lai​


Tác giả cho biết trong tương lai có thể nâng cấp kiến trúc bằng các công nghệ bản đồ như:
  • PMTiles
  • Martin (vector tile server)
Điều này sẽ cho phép hệ thống xử lý nhiều thực thể hơn nữa, đặc biệt khi lưu trữ dữ liệu lịch sử vào PostGIS.

Tuy nhiên, đối với dữ liệu thời gian thực, việc dùng vector tile cache có thể gây khó khăn vì:
  • các đối tượng luôn di chuyển
  • cache phải bị invalid liên tục
Do đó hiện tại hệ thống vẫn stream trực tiếp GeoJSON.

Các vấn đề ban đầu khi thử nghiệm​


Một số người dùng thử dự án gặp lỗi:
  • bản đồ không hiển thị dữ liệu
  • thiếu API key
  • lỗi dependency Python
Nguyên nhân chủ yếu là:
  • thiếu các khóa API như
    • AISSTREAM_API_KEY
    • N2YO_API_KEY
Ngoài ra một số script frontend ban đầu chỉ chạy được trên Windows.

Tác giả đã cập nhật repository để cải thiện hướng dẫn cài đặt.

Vận hành miễn phí !​

Một điểm thú vị là dự án không tốn chi phí API.

Theo tác giả:

“Its all free baby lol”

Tất cả dữ liệu đều lấy từ các nguồn OSINT miễn phí.

Có thể chạy trên server không?​

Dự án hiện chủ yếu được thiết kế để chạy local trên máy cá nhân.
Tuy nhiên người dùng vẫn có thể:
  • deploy lên VPS
  • chạy bằng Docker
  • dùng Cloudflare Tunnel hoặc Ngrok để chia sẻ cho người khác xem
Tác giả cho biết trong tương lai có thể phát triển phiên bản cho phép người dùng tự nhập API key của họ.

Tranh luận: dự án cá nhân vs hệ thống Dashboard OSINT chuyên nghiệp thực tế.​


Một số bình luận trên Hacker News cũng nhấn mạnh sự khác biệt giữa các dashboard OSINT cá nhân và hệ thống giám sát thật.
Một cựu kỹ sư từng làm việc cho hệ thống Maritime Domain Awareness của Hải quân Mỹ cho biết:
  • hệ thống thật cần hàng nghìn lập trình viên
  • mất hơn 10 năm phát triển
  • phải xây dựng mạng lưới cảm biến toàn cầu
Trong khi các dashboard OSINT chỉ đơn giản là tổng hợp dữ liệu đã công khai trên internet.

Xu hướng dashboard OSINT​

Theo nhiều bình luận trên mạng xã hội , thời gian gần đây xuất hiện rất nhiều dashboard OSINT tương tự.

Một người dùng còn đùa rằng:

“Tôi cần một dashboard OSINT để theo dõi các dashboard OSINT.”

Tuy vậy, ShadowBroker vẫn được đánh giá cao vì:
  • giao diện trực quan
  • khả năng tổng hợp nhiều nguồn dữ liệu
  • tối ưu hóa tốt cho dữ liệu thời gian thực
Mã nguồn chi tiết các bạn tham khảo tại đây