新技术论坛
搜索
查看: 678|回复: 0
打印 上一主题 下一主题

【转载】看我如何通过火车票还原身份证号码

[复制链接]
  • TA的每日心情
    无聊
    2016-9-11 15:26
  • 签到天数: 107 天

    连续签到: 1 天

    [LV.6]常住居民II

    扫一扫,手机访问本帖
    楼主
    跳转到指定楼层
    发表于 2016-3-19 16:27:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    原文转自 七安全(微信id:qi_anquan)
             今天给大家演示如何通过一张火车票还原完整的身份证号码。大家都知道火车票是可以得到姓名和不完整的身份证号码,身份证有四位是打码的,这样就真的安全吗?事实上通过一些简单的方法就可以还原出来完整的身份证号码。社工中我们会用的非常多,比如验证密保问题,重置各种帐号密码。我又邪恶了(:
            进入正题,下图是本次实验使用的一张火车票。
    0x1
            要想还原打了码的身份证号码,首先得了解下身份证号码的编码。身份证号码的前六位是地区码,通过这六位可以得知一个人的身份所在地。之后的八位是生日的年月日。后面的四位,其中最后一个是检验位,倒数第二位可以区分性别,通常奇数为男性,偶数为女性。这就是编码的基本信息。
    0x2
            火车票上打码的部分怎么还原呢?打码的是生日的月份和日期,所以一共只有366种可能,而不是四位数对应的10000种,这是一个弱点。如果遍历,只需要遍历最多366次就可以确定一个人的身份证号。但是有办法可以将这个数字再次减少,那就是通过校验码来去除部分检验失败的号码。检验算法网络上有很多说明,是通过前17位号码分别与一组数字相乘,然后模11得到余数,就是最后一位的校验码。其中X表示10。所以通过检验可以排除10/11的日期,最终只剩下30多个可能的号码。下图是通过该方法获取的所有34种可能的日期。


    那么在哪里验证这剩下的30多个号码呢?其实12306上就可以。在“常用联系人”管理里面。

            在添加常用联系人的时候,如果姓名和身份证号码不匹配,那么就会出现“待验证”的字样,如果匹配,就会提示“已通过”,所以可以确定后端是有验证接口的。
            那么只需要将这30多个可能的遍历添加,就可以得到姓名对应的正确的身份证号码了。运气好的话,工作量很小,比如实验中的只用了7次就确定了实验所用的火车票的身份证号码,运气差最多也就是30多次。
    得到的结果如下图。可以看到生日已经还原出来了。
    0x3
            总结。站在互联网安全的角度上讲,从实验可以说明,火车票的打码效果并不安全,12306的添加乘客验证机制也需要限制。其实最后四位打码的效果会好的多,姓名也是有必要打一个字的星号的。12306添加联系人的地方应该限制同一姓名的验证次数,失败3次就不再验证。而作为乘客的我们,一定要保护好自己的火车票的信息,千万不能随手乱扔,或拍照不处理直接上传到互联网,以防图谋不轨之人加以利用。


    原文地址:七安全



    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    手机版|Archiver|开发者俱乐部 ( ICP/ISP证:辽B-2-4-20110106号 IDC证:辽B-1-2-20070003号 )

    GMT+8, 2024-12-23 22:32 , Processed in 0.123445 second(s), 21 queries .

    X+ Open Developer Network (xodn.com)

    © 2009-2017 沈阳讯网网络科技有限公司

    快速回复 返回顶部 返回列表