Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
shadow-fleet-tracker-light — 발트해 그림자 선단 추적기 오픈소스. 1200+ 척 선박, 실시간 AIS, 해저 케이블 근접 알림. 클라우드 없음, 구독 없음, 로컬 실행. | Kitploit
도구/GitHubGitHub/formerlab/shadow-fleet-tracker-light
OSINT (Open Source Intelligence)ReconnaissanceNetwork MappingNetwork ForensicsData ExfiltrationForensicsInformation GatheringDigital ForensicsThreat Intelligence

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Incident Response
DNS Analysis
Log Analysis
GitHubformerlab/shadow-fleet-tracker-light

shadow-fleet-tracker-light

발트해 그림자 선단 추적기 오픈소스. 1200+ 척 선박, 실시간 AIS, 해저 케이블 근접 알림. 클라우드 없음, 구독 없음, 로컬 실행.

저장소 보기
421195개월 전Kitploit 검토 완료

Shadow Fleet Tracker Light

License: MIT

발트해 섀도우 플리트 모니터링을 라이브 AIS 데이터로 수행합니다. 우크라이나 GUR 전쟁 및 제재 카탈로그의 1200척 이상 선박을 AISStream 웹소켓 피드와 대조하여 추적하고, 자동 업데이트 맵에 위치를 표시하며, 해저 케이블 근접 여부를 플래그하고, 러시아↔서방 환적 패턴을 탐지합니다.

무료, 오픈 소스, 로컬에서 실행됩니다. 클라우드 및 무료 AISStream API 키 외의 구독이 필요하지 않습니다.

Former Lab 주권 인텔리전스 툴체인의 일부입니다.


Former Lab 후원하기

Shadow Fleet Tracker Light는 Former Lab 팀이 구축하고 유지 관리합니다 — 주권 컴퓨팅, 벤처 캐피털 없이 오래된 하드웨어에서 개방형 프라이버시 우선 도구를 만듭니다.

이 도구가 유용하다면 Patreon을 통한 후원을 고려해 주세요. 무료 티어가 제공되며, 유료 티어는 7일 무료 체험이 가능합니다. 항상 우크라이나를 지지합니다!

patreon.com/FormerLab

트래커에 대한 블로그 게시글, 스크린샷 등: https://www.patreon.com/posts/153285871

빠른 시작

git clone https://github.com/FormerLab/shadow-fleet-tracker-light.git
cd shadow-fleet-tracker-light
pip install -r requirements.txt
export AISSTREAM_API_KEY=your_key_here   # aisstream.io에서 무료
python shadow_tracker.py &
uvicorn webserver:app --host 0.0.0.0 --port 8000

http://localhost:8000을 엽니다 — 맵은 /map에 있습니다.

Windows 사용자: 환경 변수 구문은 Setup 섹션을 참조하세요 (PowerShell/cmd).

Linux / macOS 사용자는 start.sh를 사용할 수 있습니다. Windows 사용자는 start.bat 또는 start.ps1을 사용할 수 있습니다 — 두 스크립트 모두 트래커와 대시보드를 별도 창에서 열고 브라우저를 자동으로 실행합니다.


기능

  • AISStream WebSocket에 연결하여 발트해 경계 상자를 구독합니다
  • 우크라이나 GUR 카탈로그(Vessels1.db)에서 가져온 1200+ 선박 MMSI 목록에 대해 스트림을 필터링합니다
  • 3분마다 새로 고쳐지는 Folium/Leaflet 맵에 실시간 위치 및 경로 흔적을 표시합니다
  • 선박이 filtered_cables.kml의 케이블 세그먼트에서 10km 이내에 접근하면 경고합니다
  • 선회 탐지 — 선박이 고정된 영역에서 20분 이상 느리게 움직이거나 정지한 경우
  • 환적 패턴 탐지 — 선박이 21일 이내에 러시아 항구와 서방 허브를 방문한 경우
  • 모든 위치 데이터를 SQLite에 기록하여 오프라인 분석 가능
  • 웜 재시작 — 시작 시 위치 로그에서 마지막 알려진 위치로 즉시 맵을 채워 빈 화면 없음
  • FastAPI 대시보드 제공: 로그 검사, 선박 분석, GPX 내보내기, 환적 검토 및 대화형 경로 재생

맵

케이블 경로가 녹색으로 오버레이된 어두운 CartoDB 배경 지도. 선박 마커는 3분마다 업데이트되며 다음 새로 고침까지의 실시간 카운트다운이 표시됩니다 — 페이지가 자동으로 다시 로드됩니다. 팝업에는 MMSI, IMO, 국기, 속도, 방향, 목적지, MarineTraffic, VesselFinder 및 War&Sanctions에 대한 딥 링크가 포함됩니다. OpenSanctions API 키가 구성된 경우 제재 상태도 표시됩니다.

Vessels1.db에 알려진 선박 이름은 AIS 정적 메시지를 기다리지 않고 첫 번째 출현 시 즉시 표시됩니다.

시작 시 맵은 지난 24시간 동안의 위치 로그로 미리 채워집니다. 현재 세션에서 아직 보지 못한 선박은 "마지막으로 본 X시간 전" 레이블과 함께 회색 마커로 표시되며, 새 핑이 도착하면 실시간 색상으로 전환됩니다.


파일

shadow_tracker.py          메인 프로세스 — WS 소비자, 맵 렌더러, DB 쓰기
loitering_module.py        선회 탐지 및 맵 주석
transshipment_module.py    항구 호출 감지 및 러시아↔서방 환적 플래깅
webserver.py               FastAPI 대시보드
gur_scrape.py              원샷 스크래퍼 — IMO→GUR-ID 매핑 + 전체 선박 카탈로그 구축
check.py                   사전 점검 — Python 버전, 의존성, API 키, 네트워크
start.sh                   Linux / macOS 실행기
start.bat                  Windows 실행기 (명령 프롬프트)
start.ps1                  Windows 실행기 (PowerShell)
requirements.txt           의존성

Vessels1.db                감시 목록 — 1200+ 선박 (알려진 경우 MMSI + IMO + 이름)
vessel_data_log.db         위치 로그 — 런타임, 추가 전용
vessel_static.db           AIS 정적 데이터 캐시 (이름, 목적지, 국기 기록)
transshipment.db           항구 호출 로그 및 환적 이벤트
loitering_events.db        선회 이벤트
filtered_cables.kml        발트해 해저 케이블 지오메트리
cables.kml                 전체 케이블 데이터셋 (사전 필터 소스)
gur_mapping.json           IMO→GUR-ID 매핑 (gur_scrape.py에서 생성, 선택 사항)
gur_vessels_full.json      전체 GUR 카탈로그 — GUR-ID→{imo, mmsi, name, flag} (gur_scrape.py에서 생성)

감시 목록

Vessels1.db는 추적 선박의 표준 목록입니다. 우크라이나 GUR 전쟁 및 제재 카탈로그에서 가져온 1200개 이상의 항목으로, 러시아 섀도우 플리트의 일부로 식별되거나 발트해 하이브리드 활동에 연루된 유조선 및 화물선을 포함합니다.

목록에는 발트해 당국이 최근 압수 또는 차단한 선박이 포함됩니다:

선박IMO사건
EAGLE S9329760핀란드, 2024년 12월 압수 — Estlink-2 케이블 사보타주, 스파이 장비 발견
EVENTIN9308065독일, 2025년 1~3월 압수 — Rügen 표류, 100,000톤 러시아 원유 압수
KIWALA9332810에스토니아, 2025년 4월 억류 — 국기 없음, EU/영국 제재
JAGUAR9293002에스토니아, 2025년 5월 차단 — 러시아 Su-35 출격 호위
KIRA K93467202025년 12월 Wagner/GRU 승무원 확인
QENDIL93105252025년 9월 Wagner/GRU 승무원 — 2025년 12월 우크라이나 드론 공격
FITBURG9250397핀란드, 2025년 12월 31일 압수 — 헬싱키-탈린 케이블 사보타주
CAFFA9143611스웨덴, 2026년 3월 6일 압수 — 도난된 우크라이나 곡물, 위장 국기
SEA OWL I9321172스웨덴, 2026년 3월 12일 압수 — EU 제재, 위장 코모로 국기

MMSI는 현재 AIS 데이터에 맞게 수정됩니다 — 섀도우 플리트 선박은 자주 국기를 변경합니다. update_vessels_2026_03.sql 파일에는 출처와 함께 모든 변경 사항이 문서화되어 있습니다.

감시 목록은 의도적으로 열려 있습니다. 트래커가 실행되는 동안 Vessels1.db에 직접 선박을 추가할 수 있습니다. 재시작 없이 5분 이내에 적용됩니다.

Linux / macOS:

sqlite3 Vessels1.db "INSERT OR IGNORE INTO vessels (mmsi, imo, name) VALUES ('123456789', '9999999', 'VESSEL NAME');"

Windows (sqlite3 CLI 불필요):

import sqlite3
conn = sqlite3.connect("Vessels1.db")
conn.execute("INSERT OR IGNORE INTO vessels (mmsi, imo, name) VALUES ('123456789', '9999999', 'VESSEL NAME')")
conn.commit()
conn.close()

데이터 모델

Vessels1.db — 감시 목록

vessels(mmsi TEXT PK, imo TEXT, name TEXT, destination TEXT)

vessel_data_log.db — 위치 로그

vessel_data_log(timestamp, mmsi, name, imo, destination, speed, heading, latitude, longitude, cable_alert)

추가 전용. 맵 렌더링 주기마다 기록됩니다.

vessel_static.db — AIS 정적 데이터 캐시

vessel_static(mmsi TEXT PK, name TEXT, imo TEXT, destination TEXT, flag TEXT)
flag_history(id, mmsi, flag, timestamp)

실시간 ShipStaticData AIS 메시지에서 채워집니다. 수신되면 Vessels1.db 이름보다 우선합니다. flag_history는 모든 국기 변경을 타임스탬프와 함께 기록합니다 — 재국기 사건이 로그에 기록되고 선박별 페이지에 표시됩니다.

loitering_events.db — 선회 로그 (런타임에 생성)

loitering_events(id, mmsi, timestamp, latitude, longitude, near_cable)

transshipment.db — 항구 호출 및 환적 로그 (런타임에 생성)

port_calls(id, mmsi, name, port, port_type, entry_ts, exit_ts, min_speed)
transshipment_events(id, mmsi, name, direction, from_port, from_exit_ts,
                     to_port, to_entry_ts, days_between, detected_ts)

요구 사항

  • Python 3.11 이상 — python.org/downloads
  • AISStream API 키 — aisstream.io에서 무료 (등록 후 대시보드에서 키 복사)
  • requirements.txt의 의존성

시작 스크립트

트래커를 실행하는 가장 쉬운 방법입니다. 각 스크립트는 의존성을 설치하고 사전 점검을 실행하며 두 프로세스를 모두 시작합니다.

Linux / macOS:

chmod +x start.sh
export AISSTREAM_API_KEY=your_key_here
./start.sh

Windows (PowerShell):

$env:AISSTREAM_API_KEY = "your_key_here"
.\start.ps1

Windows (명령 프롬프트):

set AISSTREAM_API_KEY=your_key_here
start.bat

세 스크립트 모두 먼저 check.py를 실행합니다 — Python 버전, 의존성, 데이터 파일, API 키 및 네트워크 연결 가능성을 확인하고 누락된 항목에 대해 명확한 오류 메시지를 표시합니다.

사전 점검은 언제든지 단독으로 실행할 수도 있습니다:

python check.py

설정 (수동)

1. 클론 및 의존성 설치

git clone https://github.com/FormerLab/shadow-fleet-tracker-light.git
cd shadow-fleet-tracker-light
pip install -r requirements.txt

Ubuntu 22.04+ 및 Debian 12+에서는 pip에서 "외부 관리 환경" 오류가 발생할 수 있습니다. 시작 스크립트는 가상 환경을 자동으로 생성하여 처리합니다 — start.sh를 실행하면 알아서 처리됩니다. 수동으로 설치하는 경우 먼저 venv를 만드세요:

python3 -m venv .venv
source .venv/bin/activate   # Linux/macOS
.venv\Scripts\activate      # Windows
pip install -r requirements.txt

2. AISStream API 키 설정

Linux / macOS:

export AISSTREAM_API_KEY=your_key_here
export OPENSANCTIONS_API_KEY=your_key_here  # 선택 사항

Windows (명령 프롬프트):

set AISSTREAM_API_KEY=your_key_here
set OPENSANCTIONS_API_KEY=your_key_here

Windows (PowerShell):

$env:AISSTREAM_API_KEY = "your_key_here"
$env:OPENSANCTIONS_API_KEY = "your_key_here"

3. 트래커와 대시보드를 두 개의 별도 터미널에서 실행

터미널 1 — AIS 피드 소비자:

python shadow_tracker.py

터미널 2 — 웹 대시보드:

uvicorn webserver:app --host 0.0.0.0 --port 8000

4. 대시보드 열기

http://localhost:8000

실시간 맵은 http://localhost:8000/map에 있으며 3분마다 업데이트됩니다. 첫 번째 실행 시 맵은 데이터베이스에 이미 있는 위치 기록에서 즉시 렌더링됩니다 — 빈 화면 대기 없음


API 키

서비스필수무료 티어링크
AISStream예예 — 비상업적 용도 무제한aisstream.io
OpenSanctions아니오예 — 비상업적 용도opensanctions.org/api
도구 다운로드