某年某月某日,某无(国)限(安)垫(局)技(茶)术(道)讨(研)论(究)群(组)中出现了这样一段对话。
呐,听大佬说,FlightAware 的 FlightFeeder 套件本体是 Raspberry Pi 呢。
So?白嫖安排上?
据说 FlightFeeder 会把 ADS-B 资讯上传到国外,有人因为这个喝了茶的。
国安的怎么知道 FlightFeeder 使用者的确切位置?这不科学啊!钓鱼执法?
可能是通过网络抓包吧?这个我也不清楚哈哈。
谁管这么多,先弄到手再说。
…
作为一个遵纪守法的好公(居)民,看到这种危险的言论,就应该立刻 jvbao,然后把这些不法分子一锅端掉,为维护国家的稳定做出贡献(手动滑稽
鼠标移到了“举报”键上,在离一锅端只有一步之遥时,博主却犹豫了…
博主是个穷人,买不起 Raspberry Pi 这种奢侈品,只能看其他人玩,能有一块 Raspberry Pi 是博主多年以来的梦想(大雾
然而现在,一个免费领 Raspberry Pi 的机会就在面前,为何要做 jvbao 这种傻事!
鼠标滑到 Chrome 的图标上,接着博主去到了 FlightAware 的网站。
壹
在填完一堆表格,并上传了居所东南西北方向的照片过后,博主终于通过了审核,并在 3 月初收到了来自德国的包裹。
除了 FlightFeeder 本体之外,还有 5M 长的电缆、ADS-B 天线、固定支架和树莓派的原装电源(awsl!原装电源诶!)
对了,还有一件丑到爆的 T 恤衫(
报价单上显示,这些物件总共价值 75 欧元,而且不包括邮费。
博主不得不感叹于 FlightAware 的大方,同时也因捡如此大的便宜而窃喜。
但事情真的就这么简单吗?
貳
收到 FlightFeeder 套件的第二天,博主收到了来自 FlightAware 的邮件,提醒博主需要在一周之内打开 FlightFeeder。
1 | Hello from FlightAware! |
博主将 ADS-B 天线固定在了卧室落地窗前的护栏上,与外界只有一块玻璃之隔,至少这样能够避免天线被风吹雨打日晒,同时免去维护的麻烦。
部署好了天线和电缆,并连接到了 FlightFeeder,在准备打开 FlightFeeder 前的一刻,博主却心血来潮想要看看 FlightFeeder 本体内部树莓派 SD 卡中的内容…
于是,博主卸下了螺丝钉,打开了 FlightFeeder 的外壳,取出了树莓派和 SD 卡。
让博主没有想到的是,这个心血来潮的举动,让博主看到了 FlightFeeder 免费背后的阴谋,从而避免了一场世界大战的发生…
故事就此开始。
叁
接上读卡器,电脑识别出了一个 FAT16 分区和一个 Ext4 分区,前者存储了启动时的引导文件,而用于 FlightFeeder 的系统文件则在 Ext4 分区。
Fedora Linux 上,博主将这个分区挂载到了 /mnt
1 | [[email protected] ~]# mount /dev/sdb2 /mnt |
先来看看 FlightFeeder 所使用的 Linux 发行版。
1 | [[email protected] ~]# cat /mnt/etc/issue |
FlightFeeder 使用的是 Debian jessie,算是比较老的版本了,此外,这个系统的软件源被替换成了 FlightAware 的地址,不光如此,系统还被添加了一个额外的 FlightAware 的软件源。
1 | [[email protected] ~]# ls /mnt/etc/apt/sources.list.d |
有猫腻!
博主决定继续查下去。
肆
FlightFeeder 的进站提示(motd)已经被修改过,内容如下。
1 | [[email protected] ~]# cat /mnt/etc/motd |
浓缩为一句话,就是“访问限制于经批准者”。
接着,在 /mnt/etc 下,博主看到了 openvpn 的影子。
1 | [[email protected] ~]# ls /mnt/etc/openvpn |
换句话说,借助这个 VPN 连接,FlightAware 的工作人员可以随便出入这个系统。
这怎么行?自己不能访问 SSH,还帮别人免费运行一台服务器,博主开始有些后悔了。
由于 OpenVPN 早已被某伟大的墙精准识别,博主怀疑那些被喝茶的先人,恐怕也是因为这个 VPN。
1 | [[email protected] ~]# cat /mnt/etc/openvpn/ffvpn.conf |
此外,不难发现,FlightAware 的 OpenVPN 服务器 IP 地址是固定的,换言之,对于想要“精准扶贫”的国安人员来说,这是一个再好不过的特征。
既然已经拿到了这套设备,总不能放着吃灰啊。在一番深思熟虑过后,博主打算对这套设备进行改装,使之符合国情。
伍
根据 FlightAware 官网的用户条款,用户是被明确要求不得对 FlightFeeder 进行改装的。
然而博主将这一项规定拿给 BH4ERB 大佬过目时,却发现大佬一脸的不屑。
这玩意在国内本来就是违法的,你不给他们上传数据很正确,怎么处理是你的事情。
同时,他也表达了对 FlightFeeder 进行改装的愿望。
我申请到过后就一直扔在角落里没管,如果你能把他里面的驱动搞出来,在局域网里面玩玩,那还挺不错的。
既然这样的话,那就试试吧。
陆
FlightFeeder 内部,除了树莓派 3B,还有一块刻有 Mode-S Beast GPS 字样的板子。
Google 一番后,博主发现 Mode-S Beast 的驱动是开源的,这为改装的操作提供了很大的便利,不然就只能靠添加 FlightAware 的软件仓库来实现了…
准备好一张新的 SD 卡,刷入了来自树莓派官方的 Raspbian Buster 系统,于是博主开始搞事了。
计划中的,要从源码编译打包的软件有 beast-splitter 和 dump1090-fa,此外还需要编译安装作为 dump1090 依赖项而存在的 bladeRF。
首先准备编译的环境。
1 | [email protected]:~$ sudo apt update |
然后将所需的源码拉取到本地,由于 Github 在国内速度太慢,博主是将其导入至国内的 Gitee 后再进行的拉取操作。
1 | [email protected]:~$ git clone https://gitee.com/bclswl0827/bladeRF ~/src/bladeRF |
进入 beast-splitter 的源码目录,然后通过 dpkg 生成 deb 包。
1 | [email protected]:~$ cd ~/src/beast-splitter |
生成的 deb 位于上级目录,安装 beast-splitter_3.8.0_armhf.deb 即可。
1 | [email protected]:~/src/beast-splitter$ sudo dpkg --install ../beast-splitter_3.8.0_armhf.deb |
现在,将 Mode-S Beast 与天线和树莓派连接,启动 beast-spliter。
1 | [email protected]:~/src/beast-splitter$ sudo systemctl start beast-splitter |
待到绿色指示灯闪烁时,可以看到 /dev 目录多出了一个名为 beast 的设备。
1 | [email protected]:~/src/beast-splitter$ ls /dev |
安装好了 Beast 的驱动,已经成功了一半,接下来是编译打包 bladeRF 和 dump1090-fa。
前面已经提到,dump1090-fa 依赖于 bladeRF,所以先要安装 bladeRF 才能编译 dump1090-fa。
1 | [email protected]:~/src/beast-splitter$ cd ~/src/bladeRF |
在安装好 bladeRF 过后,就可以编译 dump1090-fa 了。
1 | [email protected]:~/src/bladeRF$ cd ~/src/dump1090 |
由于 dump1090-fa 依赖于 lighttpd 工作,所以安装打包好的 dump1090-fa 之前还要先安装 lighttpd,否则会报错。
1 | [email protected]:~/src/dump1090$ sudo apt install -y lighttpd |
接下来才是安装 dump1090-fa。
1 | [email protected]:~/src/dump1090$ sudo dpkg --install ~/src/dump1090-fa_3.8.0_armhf.deb |
最后重启设备。
1 | [email protected]:~/src/dump1090$ sudo reboot |
重启完毕后,打开 http://[树莓派 IP]:80/dump1090-fa/
即可看到实时的 ADS-B 资讯。
柒
一切结束了吗?
不。因为 BH4ERB 还要求博主把方法告诉他,然而博主已经不想连上 Teamviewer 远程指导了。
干脆做一个 Docker 镜像吧!
最后博主将做好的 Docker 镜像 Push 到了 DockerHub。
除去安装 Docker 的步骤,部署起来只有两步。
- 连接 Mode-S Beast;
- 部署 Docker 镜像。
1
2
3
4
5
6
7
8
9[email protected]:~$ sudo docker run -d -i -t \
--name=FlightFeeder \
--restart always \
-p 0.0.0.0:8000:80 \
--memory="32m" \
--memory-swap="64m" \
--oom-kill-disable \
--privileged \
bclswl0827/flightfeeder-docker:latest
部署成功后,打开 http://[树莓派 IP]:8000/dump1090-fa/
即可看到 ADS-B 资讯。
此时,博主真想说一声 Docker YES!
捌
好在留了个心眼,才使得博主没有沦为被喝茶的处境。但鉴于博主白嫖了一堆 FlightAware 的设备,对 FlightAware 心存愧疚,最后博主将这块树莓派装上了 PiAware,通过 V2Ray 透明代理为 FlightAware 提供数据。
这也算是符合国情了吧?