飞机飞行的中断可能会给航空公司造成数十亿美员的损失,但即便如此大多数现代商业航班仍旧依赖于存有严重安全问题的空中交通管制系统。到2020年,这些系统将会被升级为一个被称之为NextGen的系统,该系统依赖于ADS-B(广播式自动相关监视)系统。

“ADS-B Out”是ADS-B的基本功能,它负责将信号从飞机发送方经过视距传播发送给地面接收站或者其他飞机。在本教程中,我将带大家初步了解ADS-B系统,以及如何HACK ADS-B系统,并在智能手机上跟踪飞机航线。

ADS-B有多重要?

你可以想象自己现在是一名飞行员,需要完成一次横跨大西洋的飞行任务。在漆黑的夜晚,你主要依靠空中防撞系统(TCAS)来避免发生冲撞事故。再打个比方,现在在你飞行的方向突然出现了上百架的飞机。如果你此时你使用的是空客自动驾驶功能,那么它将自动为你作出飞行选择

其次在安全方面例如在繁忙的节假日期间,针对主要机场的ADS-B系统的入侵可能造成的后果。大自然已经为我们提供了很好的案例,例如“洛杉矶机场数以千计的旅客的噩梦”,“冰岛火山Eyjafjallajökull造成的飞机中断”使航空公司成本高达17亿美元等。而如今,黑客也可以做到这一点。

图为2010年4月15日(星期四)冰岛火山爆发后ADS-B数据

本文我将为大家展示的是,对于“ADS-B In”和TCAS的欺骗攻击的示例,它们在协作测距系统中协同工作,因为它们都建立在相同的基础模式S数据链路上。这代表了FAA的NextGen系统中一种类型的漏洞,该类漏洞早在2001年9月18日就已经被公认。并在11年后的2012年的入侵事件中被证明。嘲讽的是到2016年,该类漏洞再次被一名黑客使用廉价的SDR设备入侵。

某些应用程序可能需要对ADS-B信息进行独立验证以检测欺骗,这是提出安全性问题的方面。

— FAA’s Ron Jones (via AIN Online)

ADS-B是如何工作的?

ADS-B系统是一个集通信与监视于一体的信息系统,由信息源、信息传输通道和信息处理与显示三部分组成。ADS-B的主要信息是飞机的4维位置信息(经度、纬度、高度和时间)和其他可能附加信息(冲突告警信息,飞行员输入信息,航迹角,航线拐点等信息)以及飞机的识别信息和类别信息。此外,还可能包括一些别的附加信息,如航向、空速、风速、风向和飞机外界温度等等。

ADS-B的应用分为两类:发送(OUT)和接收(IN)。其中OUT是ADS-B的基本功能,它负责将信号从飞机发送方经过视距传播发送给地面接收站或者其他飞机。ADS-B IN是指航空器接收其他航空器发送的ADS-B OUT信息或地面服务设备发送的信息,为机组提供运行支持和情境意识。他们每秒钟以纯文本,未加密和未认证的方式执行此操作,也正是ADS-B In功能,为我们打开了飞机欺骗攻击的大门。

廉价的DVB-T加密狗可以获取250公里范围内的飞机ADS-B(飞机的身份,位置和速度)数据

尽管如此,ADS-B是FAA的NextGen系统的支柱。该系统旨在允许更多的飞机在特定空域内运行,同时增加安全性,减轻空中交通管制日益增加的负担

美国联邦航空局甚至授权“在大多数受控制的美国领空飞行的飞机必须在2020年1月1日之前装备ADS-B”,而不考虑ADS-B固有的安全问题的事实。美国联邦航空局正在尽最大努力以500美元的奖励说服大家使用ADS-B。

截至2017年8月,美国共约164,200架通用航空固定翼飞机已经装备了约29000架,占比达到17%。但配备商用飞机的百分比要大得多,约6,670架飞机中有2,000架装备,占比达到30%。

事实上FAA的Ron Jones,在Defcon 20的精彩演讲幻灯片)中,也指出了关于ADS-B系统存在的,包括干扰,注入以及窃听等基本安全问题。

如何HACK ADS-B?

虽然我们可以做到对飞机的数据欺骗,但这会造成严重的安全问题和影响并惹来牢狱之灾。因此,本教程将只侧重于ADS-B数据的接收。以下我们将会用到SDR,在之前我发布的文章做过介绍。只需插入25美金的SDR设备,将其调到1090 MHz即可!

然而在实际情况中,我们只要一部智能手机就可以实现该功能。我们只需简单的在手机上安装Flightradar24FlightAware这两个应用,就可以实现对航班信息数据的实时跟踪。

Step 1:安装Flightradar24

Flightradar24应用,可在Google Play商店iOS App Store中进行下载。需要说明的是该应用程序仅支持Android 4.1 / iOS 8.2或更高版本的系统。如果你的手机版本较旧,你也可以通过它的官方网站获取信息。

Step 2:运行和帐户设置

应用程序完成安装后,当我们运行它时将会要求获取我们的位置信息,我们点击允许即可。这一步非常重要,将直接影响后续所有功能的实现,如增强现实。

点击右上角的登录图标。你将看到一个界面,为你提供免费试用版,我们根据提示点击获取。这里需要我们注册登录,可以使用Facebook或Google账户登录,它将自动为你创建一个新的帐户。

Step 3:设置调整

在主界面我们可以看到,左下角一个齿轮状的设置图标。我们可以定制自己喜欢的形式,例如更改地图类型,在飞机图标上放置标签,添加地图日/夜线等。

Step 4:雷达视图观察你周围的飞机

以下是你打开APP在主界面看到的标准视图。视图中的飞机已用不同类型的图标为你标出,想要获取目标航班更多的信息,只需点击相应的飞机图标即可。

你可能已经注意到Flightradar24,并未对一些较小型的飞机进行标注,如Cessnas和Pipers也被称为通用航空。这是因为它们是以单独的978 MHz频率运行,而不是1090 MHz的商用飞机,Flightradar24FlightAware等应用程序都不会对该频率的流量解码。

Step 5:AR视图效果

现在我们可以使用应用程序中最酷的部分。点击左上角的AR选项卡,并赋予APP使用你相机的权限。你也可以通过校准屏幕来提高其准确度。

这里应用程序在手机中使用惯性测量单元(IMU),与GPS配合使用,以估计你的位置。目前Flightradar24的数据库支持查看全球约 60 %的航班信息,其中七成为欧洲航班,其它为美国航班。通过在overview和details之间的切换,可以帮助我们更好的获取航班信息。

Step 6:3D视图效果

另一个更酷的功能是,Flightradar24还可以为我们模拟类似于驾驶舱看到的视觉体验。在地图或AR视图中选择飞机后,点击左下角的3D视图即可。

Step 7:开源威胁情报收集

如果你想了解更多有关特定航班的信息,你只需点击“更多信息”图标。

随后我们将获取到一个曲线视图,其中包含了飞机的类型,速度和高度。

实际上,除了以上直观的数据外,通过简单的分析我们还可以得到一些其它的信息,比如他们到达巡航高度的时间(高度线变平),以及由于头/尾风导致的飞行速度的减慢或加速。

Step 8:跟踪全球的飞机

点击底部栏上的 “Route” 图标,它会为你显示航班的位置。

值得一提的是,Flightradar24尝试使用了多点定位技术(MLAT),来尽可能的避免之前提到的一些漏洞,特别是对于欺骗的防范,并提供最准确的飞机线路图。

MLAT(Multilateration,多点定位技术)利用多个地面接收机接收到机载应答机信号的时间差,计算得出飞机位置。机载应答机在T0发出信号,由于飞机距地面多个地面接收机的距离不同,会导致多个地面接收机接收到应答机信号的时间也不同,接收机1/2/3/4接收到信号的时间分别为T1/T2/T3/T4,这就表示,飞机到接收机1/2/3/4的距离分别为(T1-T0)*C(光速),(T2-T0)*C,(T3-T0)*C,(T4-T0)*C。知道了飞机到4个点的距离,就可以计算出飞机的位置了。(这样解释是为了便于理解,但事实上不是这么计算的,因为我们无法获知T0。实际的计算方式,是利用T1/T2/T3/T4之间的时间差,从而计算出飞机到4个接收机间的距离差,再计算出飞机的位置。多点定位是一种很常用的定位方式,在各行业都有应用,GPS也是一种多点定位,可以将MLAT想象为将GPS放到地上了)。

Flightradar24在其网站中声称:“欧洲和北美的大部分地区如今都覆盖着大约3,000-10,000英尺的MLAT。在墨西哥,巴西,南非,印度,中国,日本,台湾,泰国,马来西亚,印度尼西亚,澳大利亚和新西兰地区也有MLAT覆盖。未来将会有更多的地区覆盖MLAT,我们将继续向我们的网络添加新的接收器。“

Step 9:搜索特定航班信息

通过点击主界面顶部的搜索栏来查询数据库。通过该功能你可以实时的查看和跟踪,亲人或朋友的航班是否已准时到达。或者你也可以像那位无聊的波音飞行员一样,花费18个小时在美国版图上画出一架波音787客机

Step 10:添加提醒

在主界面,你还可以在底部栏的中央添加提醒。由于是免费试用版,因此自定义提醒功能无法使用,我们可以勾选”Squawk 7700 General Emergency”(紧急情况)选项。

通过本文,我们对ADS-B及其漏洞有了初步的了解。在我的下篇文章中,我将教大家使用Rasberry Pi和RTL-SDR加密狗来构建我们自己的ADS-B接收机,尽请关注!

在智能手机上跟踪ADS-B系统的飞机航线信息的更多相关文章

  1. Android智能手机上的音频浅析

    手机可以说是现在人日常生活中最离不开的电子设备了.它自诞生以来,从模拟的发展到数字的,从1G发展到目前的4G以及不久将来的5G,从最初的只有唯一的功能(打电话)发展到目前的全功能,从功能机(featu ...

  2. Android智能手机上的音频浅析【转】

    本文转载自:https://blog.csdn.net/david_tym/article/details/80903385 手机可以说是现在人日常生活中最离不开的电子设备了.它自诞生以来,从模拟的发 ...

  3. Linux 如何使用压缩与解压缩的方式将Windows下的zip压缩包上传到Linux系统

    当我们无法使用xftp方式上传文件到Linux系统时,我们可以使用在Windows下压缩文件夹,然后到Linux系统下解压缩的方式,完成整个上传工作. 第一步:在Windows系统下,将整个文件夹压缩 ...

  4. 在VMware Workstation上安装CentOS6.5系统步

    在VMware Workstation上安装CentOS6.5系统步骤 听语音 | 浏览:147 | 更新:2016-07-28 15:45 | 标签:安装 虚拟机 CENTOS 1 2 3 4 5 ...

  5. 在 Linux 的 KVM虚拟机 上安装 Mac OS 系统的研究总结

    在 Linux 的 KVM虚拟机 上安装 Mac OS 系统的研究总结 一.资料来源:    网上一共找到两个方法,一个是视频上的教程,一个是网页资料. 二.视频资料方法内容:1.install qe ...

  6. [ssh]如何设计ARM板上多用户key登录系统

    如何设计ARM板上多用户key登录系统

  7. 目标世界上最小的Linux系统—ttylinux体验

    ttylinux的官方网址:http://ttylinux.net/ 简单翻译一下: 你当前访问的是ttylinux的主页,一个针对多种CPU架构的极小的GNU/Linux系统.最小的ttylinux ...

  8. 如何在老惠普电脑上安装windows xp系统

    如何在老惠普电脑上安装windows xp系统 前提,老式的紧凑的惠普台式机,装了linux系统,想要装windows xp系统另作他用.但是使用U盘PE怎么也进不了? 解决办法: 1.拆下惠普主机上 ...

  9. 如何使用压缩的方式将Windows下的zip压缩包上传到Linux系统

      我们可以使用在Windows下压缩文件夹,然后到Linux系统下解压缩的方式,完成整个上传工作. 第一步:在Windows系统下,将整个文件夹压缩成zip后缀的压缩包 方法一:

随机推荐

  1. Django_外键查询和反查询

    一.ForeignKey @property装饰器的作用是返回一个属性特性,在数据库中也有一些小技巧可以拿来用,比如今天要写的外键查询和反向查询的内容. from django.db import m ...

  2. ps命令查看子进程

    [root@centos7 log]# ps -f -e -o pid,ppid,pgid,comm PID PPID PGID COMMAND 5070 5068 5070 bash 7169 50 ...

  3. CSS3-transform-style

    transform-style属性 transform-style属性是3D空间一个重要属性,指定嵌套元素如何在3D空间中呈现.他主要有两个属性值:flat和preserve-3d. transfor ...

  4. 常用c++函数

    strrev(str)  (str为字符串)倒序输出字符串 floor(x),有时候也写做Floor(x),其功能是“向下取整”,或者说“向下舍入”,即取不大于x的最大整数(与“四舍五入”不同,下取整 ...

  5. django第9天(多表操作)

    django第9天 models类 class Book(Model): id = AutoField(primary_key=True) name = CharField(max_length=20 ...

  6. SVM 支持向量机算法介绍

    转自:https://zhuanlan.zhihu.com/p/21932911?refer=baina 参考:http://www.cnblogs.com/LeftNotEasy/archive/2 ...

  7. redis 内存管理与数据淘汰机制(转载)

    原文地址:http://www.jianshu.com/p/2f14bc570563?from=jiantop.com 最大内存设置 默认情况下,在32位OS中,Redis最大使用3GB的内存,在64 ...

  8. c#中的String方法

    1.Replace(替换字符):public string Replace(char oldChar,char newChar);在对象中寻找oldChar,如果寻找到,就用newChar将oldCh ...

  9. [转]构建Python+Selenium2自动化测试环境(二)

    构建Python+Selenium2自动化测试环境完成之后,就需要测试支持python的selenium的版本是否都支持在不同浏览器上运行,当前我们分别在三个最通用的浏览器上通过脚本来测试. 1.在I ...

  10. Consecutive Subsequence (DP+map)

    You are given an integer array of length nn. You have to choose some subsequence of this array of ma ...