警惕!千萬別發(fā)火車票照片,分分鐘暴露你的身份證號碼
事情的經(jīng)過是這樣的:我的同事李大偉最近出差去了。昨晚睡覺前翻了翻朋友圈,就跟他愉快地互懟交流了起來。
圖片來自 Pexels
估計是他想起了我從不打無把握之賭,后面就慫了。
一杯奶茶嘛,也可以接受,像杰倫一樣快樂就好啦,開工!
先看看李大偉的朋友圈中發(fā)的圖片:
該火車票來自其他平行世界,掃描可能發(fā)生奇怪現(xiàn)象
車票中暴露的個人信息為:3302211993****4914 李大偉,只缺少月份日期四位,那么也就是一共 365 種可能。
科普時間:
根據(jù)李大偉的身份證信息的前 6 位“330221”,輕易可得:
李大偉是浙江省寧波人,1993 年的。
那我先用 Python 生成 1993 年的所有日期吧:
- import time
- #生成出生當(dāng)年所有日期
- def dateRange(year):
- fmt = '%Y-%m-%d'
- bgn = int(time.mktime(time.strptime(year+'-01-01',fmt)))
- end = int(time.mktime(time.strptime(year+'-12-31',fmt)))
- list_date = [time.strftime(fmt,time.localtime(i)) for i in range(bgn,end+1,3600*24)]
- return [i.replace('-','') for i in list_date]
- data_time = dateRange('1993')
成功得到日期列表:
再用剛才的校驗碼計算規(guī)則,反向驗證哪個日期符合嘍!
自己寫計算規(guī)則?NONONO,太麻煩!給大家隆重介紹一個庫:id-validator。
安裝:pip install id-validator。
可以用來驗證身份證號合法性、獲取身份證號信息、生成可通過校驗的假數(shù)據(jù)、身份證升級。
那么我們利用 id-validator 來依次校驗剛才生成的身份證號碼:
- from id_validator import validator
- #遍歷所有日期,print通過校驗的身份證號碼
- def vali_dator(id1,id2,id3):
- for i in dateRange(id2):
- theid = id1 + i + id3
- if validator.is_valid(theid):
- print(theid)
- vali_dator('330221','1993','4914')
運(yùn)行結(jié)果:
額,有 33 個都符合校驗邏輯,這只篩掉了 90% 啊。
這就尷尬了,如何在 33 個日期中挑出來李大偉的真實出生日期呢?
思考了一下(其實是百度了一波),這里需要我們每個人都用過的 12306。
打開 12306 官網(wǎng),在 12306 添加常用聯(lián)系人,將李大偉+身份證號依次輸入。
若身份證和姓名一致,就會顯示校驗通過;若不能通過,則說明身份證和姓名不一致。
最終可以測出李大偉的出生日期是:19930608,收工,奶茶到手。
大家是不是想知道我到底試了多少次才成功的?剛剛回來的李大偉也表示很想知道。
其實一次也沒用試,現(xiàn)在我喝著李大偉買的奶茶,碼著文,打開釘釘,看著李大偉的昵稱。
心里笑出豬叫。(文中人物、身份證號碼純屬虛構(gòu),如有雷同,就是抄我的。)
本文相關(guān)代碼已上傳 Github:
- https://github.com/zpw1995/aotodata/tree/master/interest/ID_card
作者:朱小五
簡介:某互聯(lián)網(wǎng)公司數(shù)據(jù)分析師,熱衷于爬蟲,數(shù)據(jù)分析,可視化,個人公眾號《凹凸玩數(shù)據(jù)》,帶給大家有趣好玩的文章。