Contents
  1. 1. 通过一张火车票可以得到什么
    1. 1.1. 摘要
    2. 1.2. 身份证编码方式
    3. 1.3. 验证身份证号码
  2. 2. 总结

通过一张火车票可以得到什么

摘要

假期回学校的时候,在火车东站被陌生人骗钱200块,气哭。报警之后也没有反馈,出警费可能都不止200吧(。)
自己太不小心了…以后一定警惕QAQ
当时照了一张骗子出示的火车票。虽然不一定是本人的…就试着看看通过一张火车票能查到什么。

身份证编码方式

火车票面上有个人完整姓名和少了四位出生日期的身份证号码。
身份证号码是由六位数字地址码+八位数字出生日期码+三位数字顺序码+一位校验码。
hcp.jpg
火车票打码部分是生日月份日期,则只有366种可能。
而通过校验码去除校验失败的号码后,还剩下30余可能的号码。
1、地址码
表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。

2、出生日期码
表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。

3、顺序码
表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

4、校验码

计算步骤:
(1)十七位数字本体码加权求和公式
  S = Sum(Ai * Wi), i = 0, … , 16 ,先对前17位数字的权求和
  Ai:表示第i位置上的身份证号码数字值(0~9)
  Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第i位置上的加权因子)
(2)计算模
  Y = mod(S, 11)
(3)根据模,查找得到对应的校验码
  Y: 0 1 2 3 4 5 6 7 8 9 10
  校验码: 1 0 X 9 8 7 6 5 4 3 2
python代码:

#coding:utf-8
import time
#coding:utf-8
import time

# 身份证号 5001071997****2042
# 姓名 黄滟茹

s="5001071997****2042"

sfz = [s.replace('****',j[4:])# 将****替换为j数组的字符串
       for j in [time.strftime('%Y%m%d',time.localtime(i))#时间字符串
                 for i in range(int(time.mktime(time.strptime(s[6:10]+'0101','%Y%m%d'))),#时间字符串解析为时间元组
                                int(time.mktime(time.strptime(s[6:10]+'1231','%Y%m%d')))+1,3600*24)]
       if s[-1] == '10X98765432'[sum(map(lambda x: int(x[0]) * x[1], zip(s.replace('****',j[4:]), [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]) )) % 11]]
        #判断最后一位校验码
for i in sfz:
  print(i)

可以得到身份证可能的号码有:

500107199701022042
500107199701102042
500107199701292042
500107199702092042
500107199702172042
500107199702252042
500107199703052042
500107199703132042
500107199703212042
500107199704012042
500107199704282042
500107199705082042
500107199705162042
500107199705242042
500107199706042042
500107199706122042
500107199706202042
500107199707192042
500107199707272042
500107199708072042
500107199708152042
500107199708232042
500107199708312042
500107199709032042
500107199709112042
500107199710092042
500107199710172042
500107199710252042
500107199711052042
500107199711132042
500107199711212042
500107199712012042
500107199712282042

Process finished with exit code 0

验证身份证号码

1.尝试输入身份证号码在谷歌查询。
在谷歌试过搜索一些身份证号码,因为高中学校的数据库好像被脱过,找到过自己的个人信息orz。除了这个以外,谷歌上还保存着很多网页快照信息。包括现在学校的学生个人信息,也可以通过一些关键字搜索到一些Excel文件,然后甚至可以查到该生身份证,电话号码之类的隐私信息。(尤其是评奖评优的(。

2.实名验证api
网络上现在有很多各种用途的api。也有供实名验证的api。注意辨别数据库的来源。一般需要收费。会返回不同状态码来表示查询结果。

3.实名验证网站
感觉最方便的是12306的常用联系人选项。
不过需要等一段时间才会有结果。如果验证通过则说明实名成功。
试了可能身份证号码的前一半,都没通过,也没接到公安的后续电话了,觉得麻烦就没继续了。

总结

火车票尽管做了一定模糊处理但是还是可以通过技术手段获取对方身份证号码。可能造成的危害有:

1.实名身份被占用。注册某些服务的时候需要去重申。或者用于一些非法活动。
2.查到更多个人信息,针对性的进行诈骗。
3.进入社工库的身份证信息。可以用于如抢票软件等实名认证部分。
...

解决方法:
一个是个人注意票根隐私,不要乱扔。
希望12306给校验码部分打码。

Contents
  1. 1. 通过一张火车票可以得到什么
    1. 1.1. 摘要
    2. 1.2. 身份证编码方式
    3. 1.3. 验证身份证号码
  2. 2. 总结