<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          我用python算出了同事的身份證號碼!

          共 1653字,需瀏覽 4分鐘

           ·

          2021-01-21 13:41


          為了一杯奶茶。

          大家好,歡迎來到 Crossin的編程教室 !
          事情的經(jīng)過是這樣的:


          我的同事李大偉最近出差去了。


          昨晚睡覺前翻了翻朋友圈,


          就跟他愉快地 互懟 交流了起來。



          估計是他想起了我朱小五從不打無把握之賭,后面就慫了。


          一杯奶茶嘛,也可以接受,


          像杰倫一樣快樂就好啦。


          開工。


          先看看李大偉的朋友圈中發(fā)的圖片。


          (該火車票來自其他平行世界,掃描可能發(fā)生奇怪現(xiàn)象)


          車票中暴露的個人信息為:

          3302211993****4914? 李大偉


          只缺少月份日期四位。


          那么也就是一共365種可能。


          科普時間:


          根據(jù)李大偉的身份證信息的前6位“330221


          輕易可得:



          浙江省寧波人,1993年滴


          那我先用python生成1993年的所有日期吧


          import?time

          #生成出生當年所有日期
          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')


          運行結果:




          有33個都符合校驗邏輯,這只篩掉了90%啊


          這就尷尬了……



          如何在33個日期中挑出來李大偉的真實出生日期呢?


          思考了一下


          (其實是百度了一波)


          這里需要我們每個人都用過的12306。



          打開12306官網(wǎng),


          在12306添加常用聯(lián)系人,


          將李大偉+身份證號依次輸入。


          若身份證和姓名一致,就會顯示校驗通過;


          若不能通過,則說明身份證和姓名不一致。



          最終可以測出李大偉的出生日期是:19930608


          收工,


          奶茶到手。













          大家是不是想知道我到底試了多少次才成功的?


          剛剛回來的李大偉也表示很想知道。


          其實一次也沒用試。


          現(xiàn)在我喝著李大偉買的奶茶


          碼著文


          打開釘釘


          看著李大偉的昵稱



          心里笑出豬叫。



          文中人物、身份證號碼純屬虛構,如有雷同,就是抄我的。


          作者:朱小五,某互聯(lián)網(wǎng)公司數(shù)據(jù)分析師,熱衷于爬蟲,數(shù)據(jù)分析,可視化,個人公眾號《凹凸數(shù)據(jù)》,帶給大家有趣好玩的文章。

          本文相關代碼已上傳github:

          https://github.com/zpw1995/aotodata/tree/master/interest/ID_card



          _往期文章推薦_

          身份證號碼校驗算法




          瀏覽 56
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费 69视频 | 大胆国模免费视频 | 中文字幕777 | 欧美 国产 综合 | 最新黄色在线 |