前几天,得到了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