12306 密码分析

前几天,得到了12306的一批可登录密码。就是网络上风传的那些。当场就打算分析以下。可惜一直都没时间。一直到昨天晚上才有点时间,看了看。

分析的目地不是为了给一些网站带来侵害,而是为了找到这些真是数据之间的联系和信息。挖掘一些有意思的事情。

发现2349个帐号是重复的。

这批数据应该是从2011年csdn泄漏的那600W帐号通过撞库得来的。如果翻一翻多年前有人对csdn帐号的分析。和我现在的分析结果会有惊人的相似。

首先,一个脚本把数据分割了一下,导入到了mongodb中。

#!/python
#coding:utf-8

from pymongo import MongoClient

mails = []

def file_to_mongo(collection):
    f = file('12306.txt', 'r')
    for line in f.readlines():
        data = {}
        segs = line.split('----', 7)
        if segs[0] in mails:
            continue
        mail_name, mail_host = segs[0].split('@')
        data['mail_name'] = mail_name
        data['mail_host'] = mail_host
        data['username'] = segs[1]
        data['real_name'] = segs[2]
        data['code'] = segs[3]
        data['pass2'] = segs[4]
        data['phone'] = segs[5]
        if len(data['code']) != 18:
            print line.strip()
        else:
            collection.insert(data)


if __name__ == '__main__':
    client = MongoClient('mongodb://localhost:27017/')
    db = client.info
    collection = db.person_12306
    file_to_mongo(collection)

这里对于身份证号不正确的用户直接过滤掉了。因为身份证号不对的用户,基本可以断定是伪造的帐号,即使可以登录12306,意义也不大。因为我们的分析目标是为了找到真实数据之间的关系么。排除伪造数据也算是一个目标。

在这里,我把邮箱地址分为了mail_name和mail_host两个字段。是为了将来方便分析一些数据。

第一个想看看的就是哪些邮箱使用的最多

{ "_id" : "qq.com", "value" : 72019 }
{ "_id" : "163.com", "value" : 29851 }
{ "_id" : "126.com", "value" : 11664 }
{ "_id" : "sina.com", "value" : 4781 }
{ "_id" : "hotmail.com", "value" : 1899 }
{ "_id" : "yahoo.com.cn", "value" : 1737 }
{ "_id" : "vip.qq.com", "value" : 1640 }
{ "_id" : "gmail.com", "value" : 1539 }
{ "_id" : "sohu.com", "value" : 1086 }
{ "_id" : "yahoo.cn", "value" : 533 }
{ "_id" : "tom.com", "value" : 347 }
{ "_id" : "yeah.net", "value" : 345 }
{ "_id" : "21cn.com", "value" : 292 }
{ "_id" : "foxmail.com", "value" : 210 }
{ "_id" : "139.com", "value" : 173 }
{ "_id" : "live.cn", "value" : 171 }
{ "_id" : "msn.com", "value" : 137 }
{ "_id" : "vip.sina.com", "value" : 89 }
{ "_id" : "sina.com.cn", "value" : 68 }
{ "_id" : "189.cn", "value" : 43 }

有这么多的QQ, 163, 126, sina邮箱很正常。但是hotmail和yahoo.com.cn排名这么考前,有点出乎我的意料。这两个邮箱应该很少人用才对。反正我周围没有见到有人用这两种邮箱的人。

看一眼使用较少的邮箱。

{ "_id" : "123456.cn", "value" : 1 }
{ "_id" : "12530.com", "value" : 1 }
{ "_id" : "163.com.cn", "value" : 1 }
{ "_id" : "2008.sina.com", "value" : 1 }
{ "_id" : "230jm.com", "value" : 1 }
{ "_id" : "263net.com", "value" : 1 }
{ "_id" : "2911.net", "value" : 1 }
{ "_id" : "3158.cn", "value" : 1 }
{ "_id" : "32321.com", "value" : 1 }
{ "_id" : "330.com", "value" : 1 }
{ "_id" : "3417.com", "value" : 1 }
{ "_id" : "51299877.cn", "value" : 1 }
{ "_id" : "56sj.com", "value" : 1 }
{ "_id" : "58.com", "value" : 1 }
{ "_id" : "81890.net", "value" : 1 }
{ "_id" : "88view.com", "value" : 1 }
{ "_id" : "a78523a.com", "value" : 1 }
{ "_id" : "abc.com", "value" : 1 }
{ "_id" : "acejet.com.cn", "value" : 1 }
{ "_id" : "adcas.cn", "value" : 1 }

好像没什么意义,貌似都是假邮箱。这些假邮箱如果也能登录的话,难道是当初系统内的测试数据,没有清空?没什么用处。

对了,共有229中邮箱服务器被使用。当然算上了我认为是假冒的邮件服务器。超过10个人使用的邮件服务器才28个。所以剩下的那些邮件服务器很可能都是假的。我估计大概被大家使用的邮件服务器也就是二十几个,或者更少。

然后呢,我又从年龄的角度来看以下这些数据。出生年份最多的。

{ "_id" : "1989", "value" : 14979 }
{ "_id" : "1988", "value" : 14625 }
{ "_id" : "1987", "value" : 13337 }
{ "_id" : "1990", "value" : 12683 }
{ "_id" : "1986", "value" : 10994 }
{ "_id" : "1991", "value" : 8308 }
{ "_id" : "1985", "value" : 8253 }
{ "_id" : "1984", "value" : 6576 }
{ "_id" : "1992", "value" : 5573 }
{ "_id" : "1983", "value" : 5549 }
{ "_id" : "1982", "value" : 5077 }
{ "_id" : "1993", "value" : 3751 }
{ "_id" : "1981", "value" : 3361 }
{ "_id" : "1994", "value" : 2287 }
{ "_id" : "1980", "value" : 2048 }
{ "_id" : "1979", "value" : 1579 }
{ "_id" : "1995", "value" : 1353 }
{ "_id" : "1978", "value" : 1130 }
{ "_id" : "1977", "value" : 786 }
{ "_id" : "1976", "value" : 572 }

这个结果基本符合预期。但是换个顺序之后的结果就很吓人了。

{ "_id" : "1920", "value" : 1 }
{ "_id" : "2003", "value" : 1 }
{ "_id" : "2005", "value" : 1 }
{ "_id" : "2008", "value" : 1 }
{ "_id" : "2010", "value" : 1 }
{ "_id" : "2011", "value" : 1 }
{ "_id" : "2014", "value" : 1 }
{ "_id" : "1933", "value" : 2 }
{ "_id" : "1934", "value" : 2 }
{ "_id" : "2001", "value" : 2 }
{ "_id" : "2004", "value" : 2 }
{ "_id" : "2009", "value" : 2 }
{ "_id" : "1927", "value" : 3 }
{ "_id" : "1939", "value" : 3 }
{ "_id" : "1941", "value" : 3 }
{ "_id" : "2002", "value" : 3 }
{ "_id" : "2007", "value" : 3 }
{ "_id" : "1944", "value" : 6 }
{ "_id" : "1937", "value" : 7 }
{ "_id" : "2000", "value" : 7 }

既有九十多岁高龄的老爷爷,也有0岁的小娃娃。核实了几个。其实都是些80后。

然后,我根据电话号码,再分析一下这些帐号所属城市的分布情况。

{ "_id" : "未知", "value" : 35765 }
{ "_id" : "北京市", "value" : 6670 }
{ "_id" : "上海市", "value" : 6486 }
{ "_id" : "广东省深圳市", "value" : 3442 }
{ "_id" : "广东省广州市", "value" : 3103 }
{ "_id" : "四川省成都市", "value" : 2678 }
{ "_id" : "湖北省武汉市", "value" : 2593 }
{ "_id" : "浙江省杭州市", "value" : 2520 }
{ "_id" : "江苏省南京市", "value" : 2020 }
{ "_id" : "江苏省苏州市", "value" : 1916 }
{ "_id" : "重庆市重庆", "value" : 1834 }
{ "_id" : "天津市", "value" : 1832 }
{ "_id" : "陕西省西安市", "value" : 1395 }
{ "_id" : "浙江省温州市", "value" : 1379 }
{ "_id" : "浙江省宁波市", "value" : 1363 }
{ "_id" : "福建省福州市", "value" : 1352 }
{ "_id" : "辽宁省沈阳市", "value" : 1295 }
{ "_id" : "河南省郑州市", "value" : 1263 }
{ "_id" : "黑龙江省哈尔滨市", "value" : 1215 }
{ "_id" : "辽宁省大连市", "value" : 1151 }

当然,我使用的这个手机号到城市的数据库显然不太全。大概1/4的手机号都无法定位。从结果来看,北上广排前三也在预料之中。成都,武汉,杭州的排名也可以看出我国各地软件,网络发展的大概趋势了。

相对欠发达的情况也可以明确地看出来。

{ "_id" : "内蒙古阿盟", "value" : 1 }
{ "_id" : "广西省贺州市", "value" : 1 }
{ "_id" : "青海海北州", "value" : 1 }
{ "_id" : "青海玉树", "value" : 1 }
{ "_id" : "广西省来宾市", "value" : 2 }
{ "_id" : "西藏阿里", "value" : 2 }
{ "_id" : "青海德令哈", "value" : 2 }
{ "_id" : "西藏山南", "value" : 3 }
{ "_id" : "青海海西州", "value" : 3 }
{ "_id" : "青海黄南", "value" : 3 }
{ "_id" : "内蒙古兴安盟", "value" : 4 }
{ "_id" : "新疆克州", "value" : 5 }
{ "_id" : "新疆塔城", "value" : 5 }
{ "_id" : "河南省潢川市", "value" : 5 }
{ "_id" : "甘肃省武威市", "value" : 5 }
{ "_id" : "甘肃省甘南市", "value" : 5 }
{ "_id" : "西藏日喀则", "value" : 5 }
{ "_id" : "西藏昌都", "value" : 5 }
{ "_id" : "云南省保山市", "value" : 6 }
{ "_id" : "内蒙古乌兰查布", "value" : 6 }
注意:我这里使用的是手机号定位。所以显示的地区是每个人的所在城市,并不是籍贯所在地。也就是说是12306主要用户当前所在城市。 联系我:

Email: xudongsecret@qq.com

===完===