| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4626 人关注过本帖
标题:恐怖,原来真的可以通过身份证后12位推测你的地址信息
只看楼主 加入收藏
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
结帖率:100%
收藏
 问题点数:0 回复次数:3 
恐怖,原来真的可以通过身份证后12位推测你的地址信息
今天,被一个大神根据我部分身份证信息推出了我大致的地址信息,吓了一大跳,赶紧百度身份证相关知识,大致明白了他是怎么做的。
估计是通过身份证最后一位校验位推的,赶紧先下了个身份证前6位地址编码数据库,然后根据自己的思路,写了个根据后12位身份证信息推测地址的c代码,一运行,还真能得到想要的结果,就是结果多了点。现将相关代码和身份证地址编码表一并提供给各位参考,望不吝赐教!
程序代码:
#include <stdio.h>
int idtest(char *p)
{//验证身份证,合格返回1,不合格返回0
    int i,s,a[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
    char m,n,b[]="10X98765432";
    for(i=0;p[i];i++);
    if(i!=18)return 0;     //只验证18位身份证
    m=p[17];
    if(m=='x')m='X';
    for(i=s=0;p[i+1];i++)s+=(p[i]-'0')*a[i];
    n=b[s%11];
    return m==n;
}
void main()
{//身份证前6位地址编码推测,稍加修改可以根据已知条件推测省、市、区、年龄、性别,已知条件越多,推测越准确
    FILE *fp;
    char id[19],bm[10],addr[100];
    int i;
    printf("请输入身份证后12位:");
    scanf("%s",id);
    for(i=19;i>5;i--)id[i]=id[i-6];                      //向后移动6位,空出地址编码
    if(fp=fopen("idinfo.txt","rt"))                      //打开地址编码文件,地址编码里的数据好像不全
    {
        while(fscanf(fp,"%s%s",bm,addr)!=EOF)
        {
            for(i=0;i<6;i++)id[i]=bm[i];                 //复制地址编码拼凑18位完整身份证信息
            if(idtest(id))printf("%s---%s\n",id,addr);   //校验身份信息,如果校验合格则输出该身份证所在地址信息
        }
        fclose(fp);
    }
}

身份证前6位地址编码信息表(idinfo.txt):
idinfo.zip (25.36 KB)
搜索更多相关主题的帖子: 数据库 百度身份证 信息 知识 
2017-05-13 23:46
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
虽然我不明白具体校验规则是什么~但是我知道应该是先把身份证凑齐然后匹配看是否满足校验条件~不过这样得出来的多种结果一定都是附近的么~如果结果是分散的那就无话可说了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-14 00:06
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
用 EXCEL 做的。

先把 前6位 及 省市县 导入 EXCEL 二列。

然后分解为 6列。
再后面列放已知的 12位,同样分为12列。

写公式计算每列积,继续放到后面的列
求和,
求余数
使用 LOOKUP ,直接查表 ,不查表,直接看余数也行。

然后对结果进行排序,对着看校验位相同的那几行就是了。
公式写完一行的,就可以复制下去。


授人于鱼,不如授人于渔
早已停用QQ了
2017-05-23 14:54
初步浅
Rank: 1
来 自:山东
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-10-14
收藏
得分:0 
身份证前六位就是代表所在的省份城市和区县啊
挨个枚举出来,没什么技术含量的吧
窃取信息倒是可以的

或许是不知梦的缘故
流离之人追逐幻影
2018-10-14 21:17
快速回复:恐怖,原来真的可以通过身份证后12位推测你的地址信息
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025599 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved