hwyzw 发表于 4 天前

揭秘:如何通过一张火车票还原完整身份证号码及编码规则

    今日,我将向大家展示如何仅凭一张火车票,就能恢复出完整的身份证号码。众所周知,火车票上能够显示出乘客的姓名以及部分身份证号码,但其中四位是加密的。这样的做法真的能确保安全吗?实际上,只需运用一些简便的方法,就能轻松恢复出完整的身份证号码。在社工领域,这种方法被广泛运用,例如在验证密保问题、重置各类账号密码时。哎呀,我又调皮了(:)

    进入正题,下图是本次实验使用的一张火车票。

    0x1

    要恢复被遮挡的身份证号码,必须首先掌握身份证号码的构成规则。该号码的前六位数字代表地区码,据此可以判断持证人的户籍所在地。接下来的八位数字记录了持证人的出生日期。紧随其后的四位中,最后一位是校验码,而倒数第二位则用于辨别性别,男性通常对应奇数,女性则对应偶数。以上便是身份证号码编码的基本要素。

    0x2

    https://img2.baidu.com/it/u=3323548223,1331322398&fm=253&fmt=JPEG&app=138&f=JPEG?w=667&h=500

    火车票上的编码如何恢复呢?该编码记录了出生的月份与日期,因此总共只有366种组合,而非四位数所代表的10000种可能性,这构成了一个缺陷。若进行遍历,最多只需进行366次尝试即可锁定某个人的身份证号码。然而,存在一种方法能够进一步降低这个数字,那就是利用校验码来剔除那些验证失败的号码。关于检验算法,网络上提供了丰富的资料,它涉及将前17位数字与特定数字相乘,接着通过模11运算得到余数,这个余数即为校验码的最后一位。在这里,X代表数字10。据此,我们可以排除10号或11号的日期,从而筛选出30多个可能的号码。下图中展示了利用这一方法得出的所有34种可能的日期。

    那么,我们该如何核实这剩余的三十余个号码呢?实际上,这一过程完全可以在12306平台上完成。只需进入“常用联系人”这一管理模块即可。

    在添加常用联系人信息时,若发现姓名与身份证号码不符,系统将显示“待验证”状态;若两者相符,则会弹出“已通过”的提示信息。由此可见,系统后端确实设有验证功能。

    只需将这三十余种可能的遍历一一尝试,便能够找到与姓名相对应的正确身份证号码。若运气颇佳,所需工作量将十分有限,例如在实验中仅通过七次尝试便成功确定了火车票的身份证号码;而即便运气不佳,最多也仅需三十余次尝试。

    https://img2.baidu.com/it/u=2828360804,29413372&fm=253&fmt=JPEG&app=120&f=JPEG?w=418&h=4102

    得到的结果如下图。可以看到生日已经还原出来了。

    0x3

    总结而言,从互联网安全的角度审视,实验结果揭示了火车票打码存在安全隐患,而12306的乘客验证机制亦需加以规范。实际上,若仅对最后四位进行打码,其安全性将显著提升;同时,在姓名处添加一个星号标记亦属必要。此外,12306在添加联系人环节,应限制同一姓名的验证尝试次数,一旦连续失败三次,便应停止验证。身为乘客,我们必须确保火车票信息的安全,绝不可随意丢弃,亦不可拍照后未经处理便上传至网络,以免不法分子趁机利用。

    文章来自《七安全》
页: [1]
查看完整版本: 揭秘:如何通过一张火车票还原完整身份证号码及编码规则