破解火车票上的身份证号码

首先我在百度上找到了一个他人的火车票图片

接着从图片里我们可以获取到信息如下:

姓名 梅勇
性别 男 (倒数第四位至倒数第二位3位数为顺序码,顺序码为奇数所以为男性)
(可参考http://www.cnblogs.com/xudong-bupt/p/3293838.html)
来自 武汉市新洲区 (身份证号码前六位代表地区)
(可参考http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/200406/t20040607_38302.html)

身份证号码:4201171988xxxx1638

得到上述消息后,我们可以通过身份证号码验证算法对其进行有效性验证和排除。
(可参考http://www.cnblogs.com/xudong-bupt/p/3293838.html)

我用JS实现了一个有效性验证,代码如下:

 1 var sfz_qian="4201171988";
 2 var sfz_hou4="1638";
 3 var sfzhm="";
 4 for(i=1;i<=12;i++)
 5 {
 6   //为了程序的方便,我就假设每个月有31天
 7   for(j=1;j<=31;j++){
 8         if(i<10){
 9             if(j<10){
10                 sfzhm=sfz_qian+"0"+i+"0"+j+sfz_hou4;
11             }else{
12                 sfzhm=sfz_qian+"0"+i+j+sfz_hou4;
13             }
14             result=getvalidcode(sfzhm);
15                 if(result!=false){
16                         console.log(result);
17                 }
18
19         }else{
20             if(j<10){
21                                sfzhm=sfz_qian+i+"0"+j+sfz_hou4;
22                         }else{
23                                sfzhm=sfz_qian+i+j+sfz_hou4;
24                         }
25             result=getvalidcode(sfzhm);
26                     if(result!=false){
27                   console.log(result);
28                     }
29
30         }
31
32         }
33     }
34
35
36
37 function getvalidcode(sfzhm_new){
38
39 var sum=0;
40 var weight=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
41 var validate=['1','0','X','9','8','7','6','5','4','3','2'];
42 for(m=0;m<sfzhm_new.length-1;m++){
43 sum+=sfzhm_new[m]*weight[m];
44 }
45 mode=sum%11;
46 if(sfzhm_new[17]==validate[mode]){
47     return sfzhm_new;
48 }else{
49     return false;
50 }
51
52 }

代码运行后如下:

接着我们导出35条记录做为字典,拿到12306进行暴力添加常用联系人,最后我们得到了该图片上面的身份证号码了

时间: 2024-09-26 00:25:34

破解火车票上的身份证号码的相关文章

身份证号码15位升18位(C#)

  身份证号码15位升18位 身份证18位验证      18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999<公民身份号码>中做了明确的规定. GB11643-1999<公民身份号码>为GB11643-1989<社会保障号码>的修订版,其中指出将原标准名称"社会保障号码"更名为"公民身份号码",另外GB11643-1999<公民身份号码>从实施之日起代替GB11643-1989.GB

php中如何验证身份证号码

身份证号码的结构 身份证号码是特征组合码,由17位数字本体码和一位校验码组成. 排列顺序从左至右依此为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 地址码(前六位数) 表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行. 出生日期码(第七位至十四位) 表示编码对象出生的年.月.日,按GB/T7408的规定执行,年.月.日代码之间不用分隔符. 顺序码(第十五位至十七位) 表示在同一地址码所标识的区域范围,对同年.同月.同日出生的人编定的顺

MaxCompute UDF系列之身份证校验及15位身份证号码转换成18位

为了验证一些老证件上的身份证号码到底是不是本人,今天为大家提供一个15位身份证号码转换成18位的MaxCompute的UDF,下载地址见附件. 效果如下: MaxCompute UDF代码如下: /*** * 身份证号码构成:6位地址编码+8位生日+3位顺序码+1位校验码 * 验证15位,18位证件号码是否有效:15位号码将直接转为18位: * 校验身份证号码除了校验位是否为数值,校验省份.出生日期 * 校验位不正确的会被正确的替代 * 出生日期逻辑有效性,即是否1900年前出生,是否当前日期后

身份证号码验证算法深入研究和Java实现_java

做项目的时候需要对拿到的数据进行"清洗",比如剔除一些不可能存在的身份证号码.查阅了网上的身份证号码验证算法,自己也总结一下. (一)18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成. 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码. 1.地址码 表示编码对象常住户口所在县(市.旗.区)的行政区域划分代码,按GB/T2260的规定执行. 2.出生日期码 表示编码对象出生的年.月.日,按GB/T7408的规定执行,

javascript身份证号码验证实例代码

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-

PHP实现中国公民身份证号码有效性验证示例代码

本文将使用Java实现中国公民(15位或者18位)身份证号码的相关验证,功能如下: 身份证号有效性验证 分析详细身份证信息 生成一个虚拟的省份证号码. 身份证号码验证 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 2.地址码(前六位数) 表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行. 3.出生日期码(第七位至十四位) 表示编码对象出

自己写的身份证号码15位升18位的函数

今天在网上找到一个身份证号码15位升18位的算法,就随手自己写了一个函数来实现 Public Function s15to18()Function s15to18(ByVal str15 As String) As String        Dim strtemp As String        strtemp = Replace(str15, str15.Substring(0, 6), str15.Substring(0, 6) & "19")        Dim A

excel中输入身份证号码正常显示方法

我们在用Excel 输入身份证号码.银行账户等较长数字后,会变成了有加号和字母的形式了(如下图),为什么呢? 这是一个普遍的数字输入问题.Excel 中默认的数字格式是"常规",最多可以显示11位有效的数字,超过11位就会以科学记数形式表达. 要输入多位数字且能完全显示,可以尝试以下两种方法: 一.将单元格格式设置为文本 选中目标单元格,右击鼠标,选择"设置单元格格式". 在"数字"选项卡上,从"分类"下面选中"文本

JS实现身份证号码15位转18位时最后一位的算法

js|算法 <SCRIPT LANGUAGE="JavaScript"><!--var lastNumber;var id = "15位身份证号码"//15位身份证号码var getNum=eval(id.charAt(0)*7+id.charAt(1)*9+id.charAt(2)*10+id.charAt(3)*5+id.charAt(4)*8+id.charAt(5)*4+id.charAt(6)*2+id.charAt(7)*1+id.ch