lizTheDeveloper/flyover-scrub
安全从音频和视频中消除人耳听不到的飞机多普勒痕迹以保护录音地点,并附带参考攻击评分器来检验防御效果。
项目介绍
飞机飞过头顶时留下的多普勒音调人耳听不见,却能从录音里提取出来,再和公开的 ADS-B 航迹匹配,从而推断出录音地点。flyover-scrub 是一个防御工具:它重写音频或视频文件,让这些曲线不再携带可用的位置信息。仓库同时提供攻击评分器的独立实现,使防御效果可以被测量,而不是只靠宣称。
处理发生在默认 20–2000 Hz 保护频段的 STFT 分箱上。距局部底噪 12 dB 以内的背景分箱会用同功率的新随机相位噪声重新合成;长而缓慢滑动的窄带脊线替换为底噪级噪声;语音、音乐、瞬态等其他前景原样保留。电平校正对每个频率只用一个整文件数值,因此不会重新引入随时间变化的结构。两种模式都会报告电网嗡声(ENF),默认也会将其清除。
它面向发布自己录音、希望降低被定位风险的人。包内的 flyover_scrub.attack 是参考评分器,flyover_scrub.trace 是 trace-and-fit 变体,可用同一套攻击流程检验处理前后的差异。
快速使用
用 uv 安装:
uv tool install .
处理文件并输出净化后的副本(音频被处理、视频原样复制、元数据被剥离):
flyover-scrub input.mov -o output.mov
只想检查文件而不写任何内容,可用检查模式,它会报告长音调脊线和电网嗡声:
flyover-scrub --check input.mp4
要拿自己的录音对接真实航班做审计,先在录音期间采集实时 ADS-B 数据,再运行审计:
flyover-capture --at 42.36,-83.13 --minutes 15 -o flights.jsonl
flyover-audit recording.mov --flights flights.jsonl --scrub
审计会打印最近的飞机,并分别对原始文件和处理后文件给出最佳位置猜测、真实位置的排名以及信号与偶然匹配的比值。如果能在频谱图中看到曲线,还可以用 --trace 10,75,65,95(t_lo、t_hi、f_lo、f_hi)直接拟合。
README 中的示例输出如下:
N123AB (C172, cat A1) closest 1.1 km
original top guess 158 m from you, your spot ranked 3/1357, signal 34.4x chance -> EXPOSED
scrubbed top guess 1553 m from you, your spot ranked 506/1352, signal 1.1x chance -> not located
使用约束
- 审计需要你的真实位置。它从文件标签读取起始时间和位置(iPhone 的
.MOV两者都有),也接受--start和--at。文件经过导出、编辑或聊天软件后,请显式传入--start。 - 实时 API 只记录当下,因此要在录音前启动
flyover-capture。包内没有批量或历史航班下载功能;研究脚本中包含读取 adsb.lol 公开每日归档的读取器。 - 评分器是针对螺旋桨音调调校的;喷气机和直升机也在测试范围内,但校准只基于少量合成样本。2–4 倍且真实位置在前 10 的边界结果,应按「可能暴露」对待,而不是已有定论。
- 与响亮前景重叠的飞机能量(例如穿过曲线的语音谐波)会随前景一起保留;持续讲话下更响的飞越声是最可能的泄漏点。
- 只保护你发布的那份副本。原始文件、直播、通话和监控不在范围内。把音频切成短段仍是低成本的补充防御,而元数据是比这更容易的泄漏渠道,因此 CLI 默认将其剥离。
- 立体声左右声道独立处理,背景噪声会因此去相关,房间底噪听起来略宽。
- 使用 MIT 许可证。
结果与证据
评估中,一段物理建模的螺旋桨飞越声被混入两段真实 iPhone 录音,攻击方拿到的是类似 ADS-B 的航迹、偏移的时钟和 10 × 10 km 的搜索范围。未处理的不可听飞越声定位误差为 0–461 m,六次运行中有四次把真实位置排在第一位。处理后误差为 1.1–5.1 km,真实位置排名 351–2087,与随机猜测无异。质量检查显示 2 kHz 以上未受影响,120 Hz–2 kHz 的长期音调平衡误差约 1 dB 以内,100 Hz 以下因稳态嗡声和机器音调被移除而下降 4–9 dB。完整的分析、数据和可复现的概念验证见研究文档。
HotRepo 点评
HotRepo 只记录到 2026 年 11 月 10 日的一条快照:该项目出现在新项目榜,在一小时窗口内新增 15 星,13:45–14:15 UTC 的采样中累计 122 星,未记录到 GitHub 全部语言日榜名次。历史很薄,只能说明它曾短暂获得一小波早期关注,不能据此判断后续热度。技术上值得注意的是,它把可运行的攻击评分器与防御放在一起,并给出明确的校准表,让声明可以沿同一流程复核;但「可能暴露」的 2–4 倍区间与 4 倍判定之间的界线,仍建立在有限的合成样本上。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。