Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
dump1090 — Dump1090 是一个用于 RTLSDR 设备的简单 Mode S 解码器 | Kitploit
工具/GitHubGitHub/malcolmrobb/dump1090
嵌入式系统安全网络映射信息收集无线安全硬件安全实用工具与框架
GitHubmalcolmrobb/dump1090

dump1090

Dump1090 是一个用于 RTLSDR 设备的简单 Mode S 解码器

查看仓库
1.1k3192年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Dump1090 README

Dump 1090 是一款专门为 RTLSDR 设备设计的 Mode S 解码器。

主要特性如下:

  • 对弱报文进行稳健解码,许多用户观察到,与其它流行的解码器相比, mode1090 的有效距离更远。
  • 网络支持:TCP30003 数据流(MSG5...)、Raw 数据包、HTTP。
  • 内置 HTTP 服务器,可在谷歌地图上显示当前检测到的飞机。
  • 使用 24 位 CRC 进行单比特错误纠正。
  • 能够解码 DF11、DF17 报文。
  • 能够解码 DF0、DF4、DF5、DF16、DF20 和 DF21 等 DF 格式,这些格式 的校验和与 ICAO 地址进行了异或,程序通过使用最近出现的 ICAO 地址 暴力破解校验和字段。
  • 从文件解码原始 IQ 采样(使用 --ifile 命令行选项)。
  • 交互式命令行界面模式,以列表形式显示当前检测到的飞机, 并随更多数据到达而刷新。
  • CPR 坐标解码以及根据速度计算航迹。
  • TCP 服务器,用于向连接的客户端发送/接收原始数据 (使用 --net)。

安装

输入 "make"。

常规用法

要直接从 RTL 设备捕获数据流,并将捕获的数据显示在标准输出上,直接不带任何选项运行程序即可:

root@kitploit:~
./dump1090

仅输出十六进制报文:

root@kitploit:~
./dump1090 --raw

以交互模式运行程序:

root@kitploit:~
./dump1090 --interactive

以交互模式并启用网络支持运行程序,然后用浏览器访问 http://localhost:8080 查看实时数据流:

root@kitploit:~
./dump1090 --interactive --net

在交互模式下,可以切换到信息密度较低但更具"街机风格"的输出,屏幕每秒刷新一次,显示所有最近检测到的飞机,并附带从接收到的 Mode S 数据包中提取的额外信息,如高度和航班号。

使用文件作为数据源

要从文件解码数据,请使用:

root@kitploit:~
./dump1090 --ifile /path/to/binfile

该二进制文件应使用 rtl_sdr 按如下方式创建(或使用任何其它能够以 2Mhz 采样率输出 8 位无符号 IQ 采样的程序)。

root@kitploit:~
rtl_sdr -f 1090000000 -s 2000000 -g 50 output.bin

在示例中 rtl_sdr 使用了 50 的增益,简单来说,你应该使用调谐器支持的最高增益。调用 Dump1090 本身时则无需如此,因为它能够自动选择支持的最高增益。

还可以使用 --ifile 选项并将 "-" 作为参数,通过标准输入向程序提供数据。

其它选项

Dump1090 还可以配合其它命令行选项调用,以设置不同的增益、频率等。要查看选项列表,请使用:

root@kitploit:~
./dump1090 --help

这里没有记载的内容应该都很直观,对大多数用户来说,完全不带参数调用它是最好的做法。

可靠性

默认情况下,Dump1090 在可用时使用 24 位 CRC 校验和检查解码错误。带有错误的报文会被丢弃。

--fix 命令行选项启用基于 CRC 校验和的单比特错误纠正。从技术上讲,它使用一个由单比特错误导致的预计算校验和差异表,来查找出错的比特位置。

这确实能够修复错误,而且根据我的经验它工作得非常可靠;不过,如果你需要非常可靠的数据,我建议使用 --no-fix 命令行选项来禁用错误修复。

检测性能与灵敏度

就我有限的经验而言,即使在我使用其它程序遇到问题的情况下,Dump1090 也能解码大量报文;不过由于没有进行过正式测试,我不能断言该程序与其它类似程序相比是更好还是更差。

如果你能捕获到 Dump1090 无法正确解码的数据流,请给我发一封附带下载链接的电子邮件。我可能会在空闲时间尝试改进检测算法(这只是一个业余项目)。

网络服务器功能

通过 --net 启用网络支持后,Dump1090 会开始在端口 30002 和 30001 上监听客户端连接(如果需要,你可以更改这两个端口,参见 --help 输出)。

端口 30002

连接的客户端会尽快获得来自设备(如果使用了 --ifile,则来自文件)的数据,原始格式类似于以下内容:

root@kitploit:~
*8D451E8B99019699C00B0A81F36E;

每条记录由单个换行符(LF 字符,十六进制 0x0A)分隔。

端口 30001

端口 30001 是原始数据输入端口,可用于向 Dump1090 提供与上述相同格式的数据,即十六进制报文以 * 开头并以 ; 字符结尾。

因此,例如如果有另一个远程 Dump1090 实例正在收集数据,可以通过如下方式将它的输出汇总到本地 Dump1090 实例:

root@kitploit:~
nc remote-dump1090.example.net 30002 | nc localhost 30001

需要特别注意的是,通过端口 30001 接收到的内容也会广播给监听端口 30002 的客户端。

一般来说,从端口 30001 接收到的所有内容都会像来自 RTL 设备的正常数据流(或使用 --ifile 时来自文件的数据)一样被处理。

可以仅将 Dump1090 用作一个集线器(hub),使用 --ifile 并将 /dev/zero 作为参数,如下例所示:

root@kitploit:~
./dump1090 --net-only

或者,也可以在屏幕上查看正在发生的事情:

root@kitploit:~
./dump1090 --net-only --interactive

然后你就可以从互联网上的不同数据源向它提供数据。

端口 30003

连接的客户端会获得 SBS1(BaseStation)格式的报文,类似于:

root@kitploit:~
MSG,4,,,738065,,,,,,,,420,179,,,0,,0,0,0,0
MSG,3,,,738065,,,,,,,35000,,,34.81609,34.07810,,,0,0,0,0

这可用于向各种数据共享网站提供数据,而无需使用另一个解码器。

天线

Mode S 报文在 1090 Mhz 频率上传输。如果你有一根像样的天线,就能接收到离你位置相当远的飞机的信号,尤其是当你在户外且处于视野开阔的位置时。

你可以按照以下链接中的说明轻松制作一根非常便宜的天线:

root@kitploit:~
http://antirez.com/news/46

凭借这根简易天线,我能够接收到 200 多公里外飞机的信号。

如果你对更专业的天线感兴趣,请查看以下资源:

  • http://gnuradio.org/redmine/attachments/download/246/06-foster-adsb.pdf
  • http://www.lll.lu/~edward/edward/adsb/antenna/ADSBantenna.html
  • http://modesbeast.com/pix/adsb-ant-drawing.gif

激进模式

使用 --aggressive 可以激活 激进模式,它是 Mode S 数据包检测与解码的改进版本。激进模式通常会占用更多 CPU(尤其是当有许多飞机发送 DF17 数据包时),但能够多检测到一些报文。

激进模式下的算法在以下方面进行了修改:

  • 容忍最多两个解调错误(幅度向量中具有相同 eight 的相邻条目)。 通常只检查没有错误的报文。
  • 它尝试修复由任意两个比特错误导致 CRC 错误的 DF17 报文。

建议仅在数据流量较低的环境中使用激进模式,以便有机会捕获更多报文。

调试模式

调试模式是一种可视化辅助手段,用于改进检测算法,或理解程序为何对给定输入不起作用。

在此模式下,报文以 ASCII 艺术风格的图形表示形式显示,展示以 2Mhz 采样的各个幅度条。

索引显示采样编号,其中 0 是检测到第一个 Mode S 峰值的采样点。在第一个峰值之前还会添加一些额外的背景噪声,以提供上下文。

要启用调试模式并查看可以记录哪些数据包组合,请使用 mode1090 --help 获取可用调试标志列表。

调试模式包含一个可选的 JavaScript 输出,用于通过 Web 浏览器可视化数据包;你可以使用 'tools' 目录下的 debug.html 文件来加载生成的 frames.js 文件。

该程序是如何工作的?

代码有非常完善的注释,并且编写时力求易于理解。对于手头有 Mode S 规范的勤勉程序员来说,理解其工作原理应该是轻而易举的。

我使用的算法基本上是通过观察许多报文(使用一个临时的 SDL 程序显示)并尝试根据报文的图形外观来建模得到的。

如何测试该程序?

如果你有 RTLSDR 设备,并且恰好身处飞机飞越头顶的区域,只需运行程序并检查信号即可。

不过,如果你没有 RTLSDR 设备,或者你所在地区飞机很少,你可以尝试 Dump1090 发行版中 "testfiles" 目录下附带的示例文件。

像这样运行即可:

root@kitploit:~
./dump1090 --ifile testfiles/modes1.bin

什么是 --strip 模式?

它只是一个简单的过滤器,将原始 IQ 8 位采样作为输入,并输出一个文件,该文件去除了所有 I 和 Q 连续超过 32 个采样点低于指定 的部分。

像这样使用:

root@kitploit:~
cat big.bin | ./dump1090 --snip 25 > small.bin

我用它来创建一个小型测试文件,以包含在该程序源代码发行版中。

贡献

Dump1090 是在 2012 年圣诞节期间利用一些空闲时间编写的,这是一个业余项目,因此我只能利用空闲时间处理问题并改进它;不过,我们鼓励你发送 pull request 来改进该程序。源代码发行版中附带的 TODO 列表可以作为一个很好的起点。

致谢

Dump1090 由 Salvatore Sanfilippo [email protected] 编写,并根据 BSD 三条款许可证发布。

下载工具