ravi923615/AeroGuardian-Core
GitHub: ravi923615/AeroGuardian-Core
实时监控OpenSky状态向量,检测商业航班性能异常与潜在欺骗行为。
Stars: 0 | Forks: 0
# AeroGuardian-Core
[](https://www.python.org/downloads/)
[](https://github.com/ravi923615/AeroGuardian-Core/stargazers)
实时监控OpenSky网络状态向量,用于识别商业航班流量中的可疑飞机性能异常。
AeroGuardian-Core轮询实时飞机状态向量,为每架飞机保留短暂的历史记录,并在飞机表现出违反简单最大性能合理性过滤器的行为时发出`SPOOF_DETECTION`事件。
## 为什么这很有趣
- 使用实时OpenSky状态向量,而非静态样本。
- 专注于航空安全领域的检测问题,易于演示和扩展。
- 保持逻辑简洁,便于审计,同时为后续更强的ADS-B和欺骗启发式算法留有余地。
## 检测逻辑
当前的最大性能过滤器在满足以下任一条件时标记商业飞机:
1. 绝对垂直速率超过`6000 fpm`。
2. 在单个观察到的`2秒`更新内,地速变化超过`50 knots`,且没有匹配的机动代理。
`SPOOF_DETECTION`以JSON格式发出,包含触发指标,以便下游系统记录、路由或增强告警。
## 快速开始
```
git clone https://github.com/ravi923615/AeroGuardian-Core.git
cd AeroGuardian-Core
PYTHONPATH=src python3 scripts/pull_live_state_vectors.py --interval 5 --iterations 3
```
建议使用认证访问以获得更好的速率限制和更高分辨率:
```
export OPENSKY_CLIENT_ID="your_client_id"
export OPENSKY_CLIENT_SECRET="your_client_secret"
PYTHONPATH=src python3 scripts/pull_live_state_vectors.py --interval 5 --iterations 3
```
## 示例输出
监控器的代表性输出如下所示:
```
{"snapshot_time":1713491402,"state_count":7342,"commercial_count":2128,"rate_limit_remaining":"397"}
{"code":"SPOOF_DETECTION","icao24":"a1b2c3","callsign":"DAL204 ","observed_at":1713491402.381,"reason":"Commercial aircraft vertical rate exceeded maximum-performance threshold.","metrics":{"vertical_rate_fpm":6432.15,"threshold_fpm":6000.0}}
{"code":"SPOOF_DETECTION","icao24":"d4e5f6","callsign":"UAL991 ","observed_at":1713491404.214,"reason":"Commercial aircraft ground speed changed abruptly without a matching maneuver proxy.","metrics":{"ground_speed_delta_knots":57.81,"threshold_knots":50.0,"observed_delta_seconds":1.833}}
```
## 工作原理
```
flowchart LR
A["OpenSky /api/states/all"] --> B["OpenSkyClient"]
B --> C["Snapshot parser"]
C --> D["Commercial aircraft filter"]
D --> E["MaximumPerformanceFilter"]
E --> F["SPOOF_DETECTION JSON events"]
```
核心代码路径:
- [`src/aeroguardian/opensky_client.py`](src/aeroguardian/opensky_client.py) 处理OpenSky认证和轮询。
- [`src/aeroguardian/detector.py`](src/aeroguardian/detector.py) 应用最大性能规则。
- [`src/aeroguardian/cli.py`](src/aeroguardian/cli.py) 运行轮询循环并输出JSON。
## 重要的OpenSky限制
根据当前官方的OpenSky REST文档:
- 认证的状态向量请求分辨率约为`5秒`。
- 匿名状态向量请求分辨率约为`10秒`。
- 官方状态向量模式不公开飞机俯仰角。
由于俯仰角不可用,第二个欺骗规则使用显式代理:仅当`true_track`和`vertical_rate`在连续观测中几乎保持不变时,才标记速度尖峰。这使实现与发布的模式保持一致,同时保留“无匹配俯仰变化”的意图。
## CLI用法
```
PYTHONPATH=src python3 -m aeroguardian.cli --help
```
```
--interval INTERVAL Polling interval in seconds
--iterations ITERATIONS Number of polling cycles. Zero means run forever
--icao24 ICAO24 Filter to one or more ICAO24 addresses
--bbox LAMIN LOMIN LAMAX LOMAX
Restrict the query to a latitude/longitude bounding box
--no-extended Skip the extended category field
```
## 本地验证
```
PYTHONPATH=src python3 -m unittest discover -s tests
PYTHONPYCACHEPREFIX=/tmp/aeroguardian-pyc python3 -m compileall src tests scripts
```
## 路线图
- 添加超越单一阈值过滤器的更丰富异常评分。
- 将检测流式传输到持久化接收器或API。
- 比较邻近飞机的行为以减少误报。
- 添加重放模式,用于归档的OpenSky样本和可重复基准测试。
- 探索围绕航迹跳跃、高度不连续性和不可能运动学的额外反欺骗功能。
## 搜索关键词
如果您在寻找以下内容,本仓库可能有用:`OpenSky`、`ADS-B`、`航空安全`、`航班跟踪`、`状态向量`、`飞机欺骗检测`、`OSINT` 或 `Python 飞机监控`。
## 参考
- [OpenSky API入口页面](https://opensky-network.org/data/api)
- [OpenSky REST API文档](https://openskynetwork.github.io/opensky-api/rest.html)
- [OpenSky FAQ认证指南](https://opensky-network.org/about/faq)
标签:ADS-B, OpenSky, Python, Python 3.9, SPOOF_DETECTION, URL发现, WSL, 交通监控, 反欺骗, 地速, 地面站, 垂直速率, 安全检测, 开源监控, 异常检测, 性能过滤, 数据流处理, 文档结构分析, 无后门, 最大性能校验, 状态向量, 状态监测, 短时历史, 航空交通, 航空安全, 逆向工具, 飞机监控, 飞行数据