代码侦探

Posted Debroon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码侦探相关的知识,希望对你有一定的参考价值。

                                                                                     《目录》


有时候,会遇到比较古怪的要求。    比如,帮忙看看男朋友去哪了......

 

元侦

我们平时拍摄的图片,保留着一些信息。    比如 拍摄时间、GPS。

我们可以在 朋友圈/网站 采集一些照片。

一些平台上的图片,为了节省空间,会删除掉图片的元信息。比如 CSDN。

您可以使用下面的代码,查看元信息。

import piexif
import sys
import os
import re
import PIL

from PIL import Image
from PIL.ExifTags import TAGS

def remove_all_exif(image_names):
    for image_name in image_names:
        try:
            piexif.remove(image_name)
            print(image_name, "exif信息清除完毕")
        except Exception:
            pass


def del_images():
    all_file_names = os.listdir()
    image_names = list()
    for file_name in all_file_names:
        if re.match(r".*\\.(jpg|JPG|png)", file_name):
            image_names.append(file_name)
            print("已经将", file_name, "添加到列表!")
        else:
            pass
    return image_names


def get_Exif(image_names):
    for image_name in image_names:
        print("\\n\\n开始读取", image_name)
        exifData = dict()
        imgFile = Image.open(image_name)
        try:
            info = imgFile._getexif()
            if info:
                print(image_name, "的信息为:")
                for (key, value) in info.items():
                    nice = TAGS.get(key, key)
                    print("%s(%s) = %s" % (nice, key, value))
                    if nice == "GPSInfo":
                        print("---%s(%s) = %s---" % (nice, key, value))
                    elif re.match(r"^Date.*", nice):
                        print("%s(%s) = %s" % (nice, key, value))
                    else:
                        pass
            else:
                print("没有任何元信息!")

        except Exception as e:
            print(e)


def get_images():
    all_file_names = os.listdir()
    image_names = list()
    for file_name in all_file_names:
        if re.match(r".*\\.(jpg|JPG|png|jpeg)", file_name):
            image_names.append(file_name)
        else:
            pass
    return image_names


def main():
    image_names = get_images()
    get_Exif(image_names)

    jude = input("是否删除元信息? [是] or [任意键结束]:>  ")
    if jude == "是":
        image_names = del_images()
        remove_all_exif(image_names)
    else:
        pass

if __name__ == "__main__":
    main()

程序运行后,会把所有的元信息打印出来。

注意这几个:

  • DateTime 是 拍摄时间
  • Make、Model、Software 是 拍摄设置的信息
  • GPSInfo 是 位置信息

通过里面的 GPS 信息放到 谷歌地图 里,就能找到拍摄的地方了。

 

如果拍摄对象是人且距离拍摄设备在 1.5m 以内,手👋是对着摄像头的(剪刀手也是)。

那能 100% 还原TA的指纹信息,如果是 1.5m~3m,就只能还原 50% 了。

指纹被提取后通过专业材料做成指纹膜,就可以用来干很多事情了。

 

先和需要调查的目标套近乎,聊聊天、崇拜一波、而后加个微信。

接着,在微信里。巧妙的要TA拍照过来,比如 :

  • 你家团团(宠物)正在干嘛呢,能拍张照片看看吗?
  • 你那边天气怎么样,能怕张天空的照片看看吗?
  • 你今天有好好学习,我监督你哟,发一下你的笔记本呗~
  •  ......

 


图侦

如果图片没有任何元信息的话,可能图像中有呢。

比如,近距离的拍摄,我们可以从拍摄人的眼睛里看到世界的倒影。

在日本就有人靠女生眼睛里的倒影,找到了她,并堵住了她......

 

举几个🌰,开阔一下思路。

首先,确让我们收集的图,到底是私下拍摄的,还是网上下载的。

我们可以通过搜索引擎的 以图搜图 功能,如果这张图是网上的,那就能搜索到或者搜索到与之类似的图片。

如果是私下拍摄的,我们就从图中找信息。您的福尔摩斯已经上线。

 

福尔摩斯接到一个任务:拍摄下面图片的人,当时站在哪里 ?(需要建筑物的具体位置,并精确到楼层)

 

福尔摩斯又接到一个任务:拍摄下面图片的人,在哪里 ? (需要知道住址,并精确到小区的楼层)

 

福尔摩斯接到又一个任务:拍摄下面图片的人,在哪里 ? (需要知道具体位置,并精确到这个视角/角度的位置)

 

话分三头,我们一一解决。

 

第一任务。

拍摄下面图片的人,当时站在哪里 ?(需要建筑物的具体位置,并精确到楼层)

在第一副图中,栏里的不是中文,那我们搜索的时候最好用英文。

 

【线索1】:

 

【线索2】: 

 

为了确保寻找的正确性,从【线索2】开始寻找,【线索1】做验证。

【线索2】好像是一张国家的国旗,但国旗的边框又是邮票的,所以可能是国旗主题的邮票。

$xxx$ :表示搜索 xxx。

使用 Chrome 搜索 $世界各国国旗$,但试着改用英文搜索 $flags of the world$。

于是,我们推断这张图应该是在 埃及🇪🇬 境内。去找一些埃及首都开罗的照片,但并没有与之类似的。

好吧,只能利用【线索1】了。

搜索 $tp logo$(tp 图标),没有任何发现,再接再厉。

搜索 $tp office building$ (tp 办公楼),找到了这张图:

这张图里面的这个楼就是 [tp 办公楼],得到是 [波兰电信] 在华沙的办公楼。

可以使用 Google 获取街道信息,Google街景+Google地球。

定位到 [华沙波兰电信办公楼],经过分析,拍摄照片的地方应该是 Warsaw Financial Center (华沙金融中心)。

利用 Google 地球的 3D 建模,对比原图根据拍摄角度调整到拍摄所在的高度。

初步判断拍摄者应该站在华沙金融中心大楼的十五层上下,那到底是哪一层呢?

细看原始照片,波兰电信大楼的中间位置有几个蓝色的反光,好像是什么字。

用 Photoshop 把那几个字反过来,看着好像是 Google —— 拍摄者就站在 Google 的华沙办公室里。

Google在那设有办事处。搜索 $google offices warsaw$(谷歌办公室华沙),得到 http://www.google.com/about/company/address.html

【总结】

  • 位置: 波兰🇵🇱首都-华沙金融中心-谷歌办公室 15 楼左右
  • 电话: +48 22 207 19 00
  • 传真: +48 22 207 19 2

好吧,我们到达任务的标准了 --- 具体位置+精确楼层。

 


第二任务,因为第二张图是中国的,所以用中文搜索会比较好。

拍摄下面图片的人,在哪里 ? (需要知道住址,并精确到小区的楼层)

把这张图片放大,可以看到窗外右侧的外景信息。

有一个很好的线索,用 Photoshop 把那几个字反过来:天汽车城。

搜索 $天汽车城$:

有四个位置:长沙河西、车营车展蓝天、平昌通天、丽辛杨天。

因为照片比较建筑物比较多,应该属于比较发达的城市,县城可以排除。

查看 长沙河西天汽车城的实景地图:

附近植被比较多,而照片背景是大片的建筑,不太符号。我们先去看看别的。

换一个浏览器试试,搜索  $天汽车城$:

查看 泉州海天汽车城:

对比照片,里面有个公园,可以深入看看。

再从网上找到海天汽车城的照片对比:

左图放大后不太清晰,原图如下:

再通过谷歌地图,确认。

从图中看出,公园是在汽车城与目标楼层中间。

往公园左边看,会看到一个泉州万隅中骏商城公寓。

从照片里看,公寓靠近公路,和地图上的符号。

接着,在百度上搜索 $泉州万隅中骏商城公寓$。

再根据谷歌地图看到公寓的大厅,对比玻璃门上的景色,是照片里外景树木。

再根据照片里窗外的柱子,以及向下的角度推断到几楼。

还可以进一步打探,可以打电话咨询,排除哪些是空的,缩小范围。

【总结】

  • 位置: 泉州海天汽车城泉州万隅中骏商城公寓 xx楼
  • 电话: 2728 xxxx

 

 


地理侦

第三任务。

拍摄下面图片的人,在哪里 ? (需要知道具体位置,并精确到这个视角/角度的位置)

结合地理来分析,因为我们是北半球,所以影子肯定不会出现在本体的南边,而建筑物面积最大的侧面一般又是向阳的,所以这幅图的东西南北。

太阳东升西落,所以拍这幅照片的时候是下午,大概 3~4 点。

之后进一步分析各种光线的夹角、实体高度与投影长度关系,得到太阳高度角和影子长度的大致数据

得到太阳高度角和影子长度的大致数据后,通过 Sun Earth Tools 查找这个这个地方的信息。

Sun Earth Tools:https://www.sunearthtools.com/dp/tools/pos_sun.php

Sun Earth Tools 能获取地球所有地点、所有时刻的太阳高度角和影子长度。

以上图估算的数据代入,就能得到照片拍摄地点的大致经纬度。

再回到影子定位的网站,当我们把月份调到 7 月的时候,下午 16 点的那条直线的方向正好和照片中影子的方向吻合!!!

而后呢,在这个建筑物附近寻找一下,就找到准确的位置。

再进去一些,就发现和原图简直一模一样。

 


工具侦

下面的就简单的概况一下,不讲细节。

比如,https://oracleofbacon.org/

通过这个网站,您可以看到 可以计算出任意两个电影明星之间的距离。

比如,中国演员章子怡认识特斯拉的马斯克,需要哪些人做铺垫。

比如,你猜猜看,中国女演员章子怡要联系上特斯拉的老板伊隆·马斯克,需要经过几个人?

答案是一个。

这个人经常演配角,很多人可能不认识,他叫做唐·钱德尔(Don Cheadle)。

他和章子怡一起出演了一部电影,叫《尖峰时刻2》(Rush Hour 2)。

他还出演了另外一部电影,叫《钢铁侠2》(Iron Man 2),伊隆·马斯克在里面有客串。

如果您有心,可以认识世界上任何一个人。

 


邮箱侦

 


IP侦

 


数据库侦

 

 

以上是关于代码侦探的主要内容,如果未能解决你的问题,请参考以下文章

求《名侦探柯南》中与黑暗组织、FBL、CLA相关的集数

福尔摩斯的约会

1014 福尔摩斯的约会

1014 福尔摩斯的约会

1014. 福尔摩斯的约会 (20)

福尔摩斯的约会 (20)