身份证爆破

admin 2022年11月16日11:18:26评论349 views字数 2212阅读7分22秒阅读模式

身份证爆破

此文章仅供用于学习研究,严禁用于非法用途,否则后果自负。

身份证结构

位数 12 34 56 7-14 15、16 17 18
代表 省份 城市 区县 年月日 所在地的派出所代码 奇数男偶数女 随机出现的校验码

1-6:地址码,常住户口所在地的行政区划代码

7-14:出生年月日

15-17:顺序码,且第17为由性别决定,男性为奇数,女性为偶数

18:校验码,将前面17位代入公式计算,结果为0-10,若为10则用x代表


举例:440106 19990101 0010

  • 44广东省,01广州市,06天河区

  • 19990101,出生年月日

  • 001,第17位为1即男性

  • 0,最后一位为校验码


注意:由于历史原因可能有些被撤销的行政区划代码,可登陆https://xingzhengquhua.bmcx.com/ 开通vip进行查询。例如:你查询的目标出生日期在90年,则可使用91年前被撤销的行政区划代码进行尝试。如果目标因为某种原因导致的更改过身份证,则可使用近年的行政区划代码进行尝试。

因该网站查询历史行政区划代码需要付费,所以帮各位整理了一份历史行政区划代码资料。

行政区划代码大全下载链接见文章底部


社工构造身份证

对目标进行信息收集,根据收集的信息进行整理,

假设收集到的信息如下:

姓名:xxx
性别:女
生日:19900909
地址:浙江省湖州市德清县

1、查询历史行政区代码

https://xingzhengquhua.bmcx.com/  在此处搜索德清县

身份证爆破

可以看出来只有两个行政区代码,该目标的出生年份为1990,则使用最新的行政区代码330521,如果遇到目标为1982年之前出生的则使用1982年之前的行政区代码。

2、简单构造

33052119900909

到目前为止15、16、17、18不知道。

17位为女,则可能是0/2/4/6/8

18位为随机的校验码,则可能为0/1/2/3/4/5/6/7/8/9/x,共11中结果

15/16位可能是0-9,共10中结果

10*10*5*11共计5500 种结果

python脚本

生成后4位
import itertools

if __name__ == '__main__':
  sex = '02468' if int(input("性别(男1女2): ")) % 2 == 0 else '13579' # 性别位
  check = '0123456789X' # 校验位
  other = '0123456789'   # 其它位
  nums = itertools.product(other, other, sex, check)
  cards = []
  for num in nums:
      card = "".join(num)
      cards.append(card)
  print(len(cards))
  print(cards)
生成完整的18位
import itertools

if __name__ == '__main__':
  date = input("身份证前14位: ")
  sex = '02468' if int(input("性别(男1女2): ")) % 2 == 0 else '13579' # 性别位
  check = '0123456789X' # 校验位
  other = '0123456789'   # 其它位
  nums = itertools.product(other, other, sex, check)
  cards = []
  for num in nums:
      card = date + "".join(num)
      cards.append(card)
  print(len(cards))
  print(cards)

3、身份验证

在获取到5500个身份证号码后,可使用相关的身份验证进行验证,其中正确的概率为1/5500。

好了点到为止,具体自行研究。再次提醒该文章仅供技术参考,严禁违法违规,否则后果自负。


后六位爆破

如果需要爆破后6位,即身份证的第13~18位,那么就有10*10*10*10*10*11(最后一位有0~X共11位)种可能

  • 后6位中的第1位,即出生日期的十位,只能为0~3,即4*10*10*10*10*11

  • 而如果是针对某人而写的字典,知道目标的性别,那么第5位就可以减掉一半。男性为1/3/5/7/9,女性为0/2/4/6/8,即4*10*10*10*5*11

  • 同时,如果知道目标的出生日期(学校发的很多信息表中都会包含出生年月日等信息),即第1~2位也可以确定了。那么需要爆破的只有15~18位,即10*10*5*11=5500,这个数量级已经对于电脑来说很轻松就可以完成。

import itertools

if __name__ == '__main__':
  date = input("出生日期: ")
  date=date[6:8:1]
  sex = '02468' if int(input("性别(男1女2): ")) % 2 == 0 else '13579' # 性别位
  check = '0123456789X' # 校验位
  other = '0123456789'   # 其它位
  nums = itertools.product(other, other, sex, check)
  cards = []
  for num in nums:
      card = date + "".join(num)
      cards.append(card)
  print(len(cards))
  print(cards)

行政区划代码大全下载

关注公众号漏洞挖掘之路

回复"*行政区划代码*"获取下载连接



原文始发于微信公众号(漏洞挖掘之路):身份证爆破

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月16日11:18:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   身份证爆破http://cn-sec.com/archives/1410652.html

发表评论

匿名网友 填写信息