按:我之前屡次提醒大家要注意数据隐私,因为它真的很重要。即便李彦宏说的是真的,“中国老百姓不太在乎隐私”,这些人似乎也没想过,也没有被教导过,数据隐私能够被如何利用,尤其是如何关联,这些关联应用的结果往往完全超乎普通人的意料。

今天授权转发iyouport的一篇(翻译)文章,讲述如何从一张空荡荡天空的照片找出拍摄者所在酒店的故事。相当好看,但更应当引人深思。


nixintel 做出了一个惊人的调查演示,它来自推特热门游戏侦探挑战的题目。可以说是史上最难的挑战了。

题目本身就是下面这张照片

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

你看到,什么标志都没有。空荡荡的蓝天,没有任何特色的建筑物,孤零零的一架飞机。

出题的人提供的信息少得可怜:

  • 天空中的飞机是从伦敦飞往香港的波音747

  • 该照片摄于2019年10月30日。

  • 拍摄者在旅馆里。

  • 面临的挑战是要确定拍摄者具体住在哪家旅馆。但是在此之前,还有很多其他东西要首先找到。

当然,照片中还有一些信息也可以帮助您:

  • 当时的天气晴朗。

  • 阴影表明太阳可能在拍摄者的后面。

  • 飞机在天空中的位置。这点将至关重要。

  • 如果您尝试通过上传图片用图片搜索解决此问题(开源情报调查的常规思考方式),在这里完全不管用,您将什么都找不到。

图片中的建筑物完全没有特点,无法与任何反向图像搜索相匹配。尝试裁剪以寻找匹配也没有任何意义。

检查发布者的 Twitter 帐户,以查看他在10月30日可能去过的地方,也完全一无所获。如果您曾经尝试过他的任何测验,那么您就会知道他经常旅行。有时在德国、有时在阿尔巴尼亚、甚至在蒙古。也就是说试图猜测他可能在哪个城市也是毫无意义的。

总之,几乎理论上的开源情报调查入手捷径都不存在。这就是挑战的魅力所在。

规划一个方法:从大到小

那么从哪里开始呢?从建筑物开始可能会花费很长的时间,不如从飞机开始,至少对此有一点了解。总之图片上就这俩东西。

👉 与往常一样,解决此类地理位置难题的最佳方法是从最大的地方开始,然后逐渐缩小,直到成为一个具体的点。

从理论上讲,这张照片几乎可以在世界任何地方拍摄,但是通过识别越来越多的信息,这意味着有可能使参数的设定越来越严格,直到识别出特定建筑物为止。

刚开始时看起来可能不是这样,但是只要能知道飞机的飞行日期和路线,就可以弄清拍摄者在看哪栋建筑物里。

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

剧透:目标人在这张照片里的某个地方……

该建筑可能在世界上的任何地方(在开始阶段这是一个安全的假设……),但我们也知道它在从伦敦到香港之间的飞行路线上。

👉于是,立刻可以确定,这意味着它不在北美或南美、非洲或大洋洲。它必须位于欧洲、中亚或亚洲本身。

这看起来似乎还是太大,但是已经缩小了可能的位置范围,超出了您的想象。

👉我们也知道拍照时是白天。这意味着一旦确定了飞机,就可以确定路线,并且在知道路线后,就可以说出飞机在任何给定时间的位置,以及飞机越过头顶时,该位置是白天还是黑夜。如果此处天黑了,那就可以舍弃其可能性。

为了做到这一点,必须首先确定飞机。

识别飞机

拍摄者说,这架飞机是10月30日从伦敦飞往香港的,那是一架波音747–8F。

为了识别飞机,我们需要知道当天伦敦和香港之间往返的所有航班和飞机类型。

唯一的问题是伦敦有五个国际机场(希思罗机场、盖特威克机场、城市机场、斯坦斯特德机场、和卢顿机场),而香港只有一个。

👉这意味着查看从任何伦敦机场到达香港的航班将更容易,而不是尝试以五个可能的起点进行相反的推测。(这是小窍门)

历史航班数据可从几个不同的地方获得。FlightRadar 是其中最知名的,但也有 Airportia 和 Flight Aware 等可用。

FlightAware 会针对此类历史数据收费,而 Airportia 仅列出定期的客运航班。幸运的是,Tobi Bluhm 已经确定该航班一定是 N617UP,这是UPS的货运航班,于10月30日世界标准时间6:12从伦敦斯坦斯特德机场(Stansted)出发,飞往香港。也就是说很幸运,这里可以省钱了(花钱在 FlightAware 上查到这点并不难)。

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

👉只要能识别飞机就意味着我们拥有最终识别拍摄者所住的酒店(和房间)以及准确拍摄照片的时间(误差在几分钟之内)所需的所有信息。

他将在这条线的附近:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

Flight Aware GPS track

只需要一点几何学、历史天气预报和日落计算,就可以使用该飞行路径来大幅缩小拍摄者的位置,直到最终找到目标人。

使用KML文件绘制路径

从理论上讲,所有这一切都足够容易,但是如何才能从 6000 英里的飞行路线中找到确切的酒店呢?

幸运的是,FlightRadar 和 FlightAware 都可以将飞行轨迹下载为KML文件。KML文件包含的是按时间点记录的一系列地理位置(例如GPS坐标和海拔高度等)数据的文件(转载注:KML文件的故事可以在我之前写的《 Google Maps的故事【精华版】》中看到)。

你可以在 Google Earth 中打开该文件,然后可以查看和分析 KML 映射数据。这意味着将能够在飞机旅程的每个阶段看到飞机的确切位置、高度和方向。

👉在 Google Earth 中查看这些数据将有助于直观地看到飞机所在的位置,然后通过将 Google Earth 中的视图与照片中的信息进行交叉引用,就可以确定拍摄者的位置。

要获得任何航班的 KML 文件,您需要一个 Flightradar 付费帐户,或者您可以注册 FlightAware 以获得为期三个月的免费试用,该服务将允许访问KML文件。

在 Google Earth 中打开KML文件时,整个飞行路线都会覆盖在地图上。这是从斯坦斯特德起飞的飞机:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

👉请注意,KML 不仅显示位置,还显示高度。滑块(图片的左上角)可以移动到特定时间,这样您就可以看到飞机的位置。这是在香港的下降和降落:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

那么,如何使用这些信息来帮您找到拍摄者的位置?需要先做一点几何。

几何

现在有了所有的飞行路线数据,可以将其与日落/日出信息和一些几何图形结合起来,以计算拍摄者的位置。

我们知道飞机在 UTC 06:12 从伦敦斯坦斯特德起飞。将这些信息放到 Suncalc 中,这表明当时斯坦斯特德的天空还很暗:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

接下来,飞机驶向阿姆斯特丹。这是可能的目标位置城市吗?如果我们对阿姆斯特丹重复相同的 Suncalc 方法,则可以看到,当飞机在 UTC 06:37 越过该城市上空时,那里的天色还很暗,所以它不可能是拍摄者所在的地方。

👉 请务必记住,无论本地时间如何,航班数据始终以UTC表示。这包括谷歌地图中的时间滑块,可用于显示飞机的位置。而另一方面,Suncalc 总是显示相对于UTC的当地时间,所以阿姆斯特丹是 UTC +1。这非常重要,如果您不记得这个细节,很容易感到困惑!

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

因此,阿姆斯特丹不是答案,但是除了检查飞行路线附近的每个城市之外,还有没有简单一些的方法可以找到拍摄者可能所在的城市?

这是一些几何图形的来源。经过阿姆斯特丹之后,飞机在089度上改变了航向,几乎是直接向东。实际上,如果查看跟踪日志会找到,飞机在荷兰、德国、波兰、白俄罗斯和俄罗斯的整个过程中进行的一些微小的航向校正。

仅在俄罗斯,它才朝着哈萨克斯坦、中国大陆和香港做出重要航向修正:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

Flight Aware的航班跟踪日志的摘要

图中你可以看到,飞机大约在 UTC 10:00(当地时间15:00)越过哈萨克斯坦,但是到越过中国时当地已经很黑了。

这意味着在拍摄者不可能在中国。再排除一个。

👉此外,由于飞机的航向通常总是东移,因此拍摄者一定是大致面向西的,才能使飞机在视觉上看起来朝向他。太阳从他身后照射的事实加上阴影的角度表明,太阳大约在东南方,即在他的左肩上方:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

这意味着,无论拍摄者在哪里,他拍照的时间都是一大早。不可能在晚上。

👉因此,可能的国家/地区包括荷兰东部、德国、波兰、白俄罗斯或俄罗斯西部,因为这是飞机在白天和阳光仍然位于东南部时飞过的一系列地点。

这仍然留下了许多可能的城镇,但还有一种方法可以进一步缩小范围。

由于图片中建筑物的大小,有信心推测拍摄者在城市中。共有五层楼高,至少还有另外一到两层(基于拍摄者的身高)。因此,该建筑物至少高六到七层,并靠近拍摄者所在的酒店。

这有力地暗示了城市位置,而不是农村甚至郊区。

👉因此,这意味着我们需要在一个可能的国家/地区中找到一个城市,该城市不仅靠近飞行路线,而且要相对于飞行路线正确地定向。

因此,接下来我们需要做一些几何以帮助正确确定方向:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

👉从飞行数据中可以知道,这架飞机在整个欧洲的大部分旅程中都几乎要向东方行驶。通过在原始图像上覆盖罗盘点,可以推断出拍摄者的位置必须在飞行路线的北部。

如果拍摄者在飞机向东飞行的航迹的南侧,凝结尾迹将如下所示:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

如果您很难运用大脑这样思考,也不要担心,因为稍后将展示如何通过 Google Earth 从视觉上确认这一点。

还有一个问题,为什么飞机似乎是垂直的姿势?这个问题也将在短期内解决,因为它也将有助于确定确切的位置,但是我们需要首先知道拍摄者在哪个城市。

最可能的地点

由于图片中的角度表示拍摄者位于飞行路线的北部,因此可以消除相对于飞机不正确的位置。

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

不能是汉诺威或不伦瑞克,因为它们在南部。

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

绝对不是波兹南或华沙。伏尔加格勒可能是候选,但是对于太阳光线位置来说,飞机飞过头顶时应该是那里的一天中较晚的时刻:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

无论如何,这些地点得到天气都不符合拍摄者所在的晴朗蓝天:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

但是,有一个城市是非常有可能的。它靠近飞行路线,并且城市的大部分也在正确的一侧:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

历史性的天气记录也证实当时柏林上空没有云:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

飞机经过柏林时,太阳也位于正确的位置(东南):

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

因此,柏林似乎是拍摄者最有可能的所在地。

👉 从 “伦敦和香港之间的某个地方” 的搜索参数开始,通过检查飞机经过某地时的日光状况,进一步筛选,去除不可能的国家。然后使用照片相对于飞行路径的方向,进一步淘汰一些国家中不可能的城市。这就是 “从最大到最小” 的思考方式。

柏林确实是唯一符合日光、天气条件、太阳位置以及相对于飞机飞行路线的方向和位置的正确标准的城市。

进一步缩小

因此,如果拍摄者在柏林,我们如何利用对图片和飞行路线的了解来找到他呢?

当然,您可以只用 Google 搜索 “柏林的酒店”,然后寻找匹配的东西,或者花数小时在 Google Maps 上过滤整个城市。这种暴力地理定位的方法会很无聊,非常缓慢并且效率极低。

所以需要找点窍门。

👉 KML 文件中有足够的数据,这些数据将使您能够使用 Google Earth 设置非常密集细致的参数以进行最终的视觉搜索,因此,现在将拍摄者放置在柏林,便可以很快找到他。

在此之前,此图中仍然有一个未解决的问题需要解决。那就是,为什么飞机的姿态是似乎垂直向上飞行?

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

拍摄者的角度并没有刻意仰视,他只是仰望地平线,而飞机似乎在垂直飞行。即使飞机水平飞行,也起来像是垂直行进的原因是由于地球的曲率。

只有当飞机在头顶上方时,它们的真实水平飞行位置才会变得更加明显,而当它们飞走时,看起来似乎正在朝着地平线下降。

您可以在此处(https://contrailscience.com/contrails-are-usually-horizontal/)阅读有关此效果的更多信息。但就本测验而言,这足以表明,当拍摄者拍照时,飞机正向他飞来,但仍相距一定的距离,可能不在柏林本身上空。

重建视图

因此,我们现在知道拍摄者在柏林的某个地方,飞机正朝着他所在位置的方向飞行,那么如何才能不花数小时的时间在地图上滚动,就找到确切的位置呢?

👉使用 KML 文件和 Google Earth 的3D功能,可以(以)飞机轨迹为参考点,(几乎)完美地再现拍摄者的照片。

为此,需要确定拍摄者拍摄照片时飞机相对于柏林的位置。

飞机移动非常快。通过使用时间滑块,可以看到在 UTC 07:11(柏林时间08:11),飞机远离柏林,大约在勃兰登堡附近:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

仅仅五分钟后,这架飞机几乎就看不见了,并且已经完全越过柏林:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

👉因此,为了尝试从地面重新创建视图,需要尝试捕捉飞机飞越地平线驶向拍摄者位置的那一刻。

但是,如果并不知道目标人在哪里,该如何开始在 Google Earth 中重新创建视图呢?这不是一步到位就能完成的,但稍作一些试验就能很快使事情变得更清楚。

👉记得拍摄者一定在飞行路线的北边,那么将自己的注意力集中在勃兰登堡门的地面上,并面朝西就如拍摄者在照片中的位置:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

请注意,从 Google地球的地面上可以看到飞机的路径(距离为灰色的线)。KML文件还包含高度数据,因此飞机将相对于地面以正确的高度出现。

在这张照片中,时间设置为 UTC 07:11。这时飞机实际上是在勃兰登堡市附近(距离勃兰登堡门约60公里/ 37英里),但是您可以看到 Google Earth 如何复制由于地球曲率而在天空中呈现垂直状的效果。

两分钟后的 07:13 UTC 时效果就是这样:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

然后是 07:15 UTC,👉 请注意,此时飞机已完全越过头顶。这也意味着拍摄者必须在 07:15 UTC 之前拍照:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

👉 因此,要让拍摄者看到飞机如照片中那样垂直状态朝他飞行,他必须早于 UTC 07:08 拍摄图像,当然也不得晚于 07:15。

为了尝试最好地重新创建确切条件,将时间滑块设置为 UTC 07:13,给出了以下视图:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

拍摄者的角度几乎是笔直地向前看,因此要重现相同的视图,我们应该能够从地面水平向前看时以相同的高度和角度看到飞机。(要在谷歌地球中找到这个视角,请按住Ctrl键并使用鼠标 “环顾四周”)

这当然是非常有帮助的,但是拍摄者并没有待在勃兰登堡门,只是离此不远。我们需要设置更严格的参数来找到他的确切位置。

这很简单,只需在 Google Earth 中不断转换方向,直到飞行路径的角度与原始照片中的凝结尾迹的角度匹配即可。

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

我没有使用任何复杂的数学公式,只是这样调整画面,并一直左右(南北)转动,直到角度大致匹配为止。

匹配过程可以非常快。因为无法以匹配的尾迹角度来精确地控制飞机的运动,所以我想设置一个拍摄者所在酒店必须位于的某个区域内的边界,然后手动检查该区域。为此必须将搜索边界设置为北、南、东、西。

东西边界的设置非常简单。拍摄者在高大的建筑物旁边,因此建筑物较小的郊区就可以排除了。柏林郊区构成了搜索区域的东西边界:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

事实证明,这有点过于粗放了,但总的来说,设置得过大总比过小要好。

为了设置北部边界,在面向西的同时向右移动直到与原始视点相比轨迹的角度已经变得太平。这意味着我必须在拍摄者位置的北侧延展:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

然后向南移动,也就是向左移动,重复相同的过程。这次我知道当轨迹变得太陡峭时就该停住了:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

👉 请注意,当停在飞行路线以北并向南移动时会发生什么。角度完全倒置:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

这样就可以绝对确定,如果飞机正向东方飞行,那么拍摄者一定是在飞行路线的北部。

因此,现在在 Google地球上有了一个漂亮的蓝色搜索区域。就是下面这样。拍摄者必须在其中的某个地方,但是在环顾四周街道之前还有更多的工作要做。

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

这个红色区域中没有任何大型建筑物(就如图片中的建筑物那样)这里都是绿地或郊区房屋。拍摄者必须在蓝色区域,而不是红色区域。

我知道在界定原始边界时过于宽容了,但我不想无意间错过任何东西。即使过大,搜索区域也仍然只有2公里宽,因此检查时间不会很长。

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

接下来,就像拍摄者所做的那样,我只需要大致向西面对即将到达的飞机:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

接下来,在这个高度上以东西方向移动穿越整个城市:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

左边有一幢非常熟悉的建筑出现了 …

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

完美匹配!!这意味着拍摄者所在的酒店是 H+ Hotel Mitte Berlin:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

那么重新创建试图的精准度如何?可以说已经非常接近了。为了使飞机相对于拍摄者所处的位置,他必须在 07:13 ~07:14 UTC(当地时间 08:13 ~08:14)拍摄照片。

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

下面是原始照片和重建试图的对比:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

我们甚至可以估算出拍摄者必须位于该酒店的哪个房间:

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

就是画圈的那个窗户

这个挑战可以说是史上难度最高的了。nixintel 的演示非常精彩!如果您也想试试,可以点击此处(https://drive.google.com/open?id=1gOH7aGJnOJfIvqoZSvbjUu_bHBEbvJ2t)查看KML文件。

点击“阅读原文”可以抵达nixintel的原始报道。

An image to describe post 重视数据隐私,从空荡荡天空的一架飞机说起

如果喜欢本文,欢迎长按识别二维码订阅。