| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4538 人关注过本帖
标题:恐怖,原来真的可以通过身份证后12位推测你的地址信息
取消只看楼主 加入收藏
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
结帖率:100%
收藏
 问题点数:0 回复次数:0 
恐怖,原来真的可以通过身份证后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
快速回复:恐怖,原来真的可以通过身份证后12位推测你的地址信息
数据加载中...
 
   



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

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