这次泄露的是一个14M文件。有13.1W条精准无比的数据。
简直超级可怕的有木有,即使修改了密码,身份证号,手机号,邮箱,曾用密码也都暴漏出去了。
25号拿到数据的时候试着登录了几个(没干坏事啊啊,不要抓我),100%正确率。。。。。。。太可怕了。。。。。。
为了更方便的统计,我写了个控制台程序,把数据导入数据库。
1、建表


CREATE TABLE [dbo].[user12306]([email] [varchar](50) NULL,[password] [varchar](50) NULL,[realname] [nvarchar](50) NULL,[idcard] [char](20) NULL,[username] [varchar](20) NULL,[phone] [char](15) NULL,[email2] [varchar](50) NULL)
2、控制台代码,我是用sqlbulkcopy插的DataTable,为了插入效率快。


using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.IO; using System.Text;namespace Import12306 {class Program{static void Main(string[] args){var filePath = ConfigurationSettings.AppSettings["filePath"];var connStr = ConfigurationSettings.AppSettings["connStr"];var tableName = ConfigurationSettings.AppSettings["tableName"];var insertSize = int.Parse(ConfigurationSettings.AppSettings["insertSize"]);try{var sr = new StreamReader(filePath, Encoding.GetEncoding("gb2312")); //读文件string lineStr;var line = 1;var sqlbulkcopy = new SqlBulkCopy(connStr, SqlBulkCopyOptions.UseInternalTransaction);sqlbulkcopy.DestinationTableName = tableName;var newdt = GetNewTable();while ((lineStr = sr.ReadLine()) != null) //填充DataTable {var ms = lineStr.Replace("----","|").Split('|');var row = newdt.NewRow();row["email"] = ms[0];row["password"] = ms[1];row["realname"] = ms[2];row["idcard"] = ms[3];row["username"] = ms[4];row["phone"] = ms[5];row["email2"] = ms[6];newdt.Rows.Add(row);if (line % insertSize == 0){Console.WriteLine("正在写入第" + (line - insertSize) + "- " + line + "条数据," + DateTime.Now);newdt.AcceptChanges();sqlbulkcopy.WriteToServer(newdt);Console.WriteLine("完成写入 ," + DateTime.Now);newdt.Clear();}line++;} sr.Close();}catch (Exception ex){Console.WriteLine(ex);}Console.ReadLine();}private static DataTable GetNewTable(){#region 创建DataTablevar readTxt = new DataTable("readTxt");var email = new DataColumn { DataType = Type.GetType("System.String"), ColumnName = "email" };readTxt.Columns.Add(email);var password = new DataColumn { DataType = Type.GetType("System.String"), ColumnName = "password" };readTxt.Columns.Add(password);var realname = new DataColumn { DataType = Type.GetType("System.String"), ColumnName = "realname" };readTxt.Columns.Add(realname);var idcard = new DataColumn { DataType = Type.GetType("System.String"), ColumnName = "idcard" };readTxt.Columns.Add(idcard);var username = new DataColumn { DataType = Type.GetType("System.String"), ColumnName = "username" };readTxt.Columns.Add(username);var phone = new DataColumn { DataType = Type.GetType("System.String"), ColumnName = "phone" };readTxt.Columns.Add(phone);var email2 = new DataColumn { DataType = Type.GetType("System.String"), ColumnName = "email2" };readTxt.Columns.Add(email2);#endregionreturn readTxt;}} }
配置文件 App.config


<?xml version="1.0" encoding="utf-8" ?> <configuration><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup><appSettings><add key="connectionStr" value="Data Source=.\BU;Initial Catalog=ac12306;User Id=UserID;Password=Password;" /><add key="filePath" value="e:\\12306.txt" /><!--文件路径--><add key="tableName" value="usersss" /><!--数据库表名--><add key="insertSize" value="1000" /><!--每批次插入数量--></appSettings> </configuration>
数据不多,几秒钟就跑完了。。。 然后看一下数据库,额呵呵呵【阴险脸】。。。。
【用户分布】
话说,之前看到有分析说这不是一次泄露而是”撞库“,我个人觉得,从数据来看不像是“撞库”。比如,用户年龄分布,如下图:
根据身份证体现的出生年份来看,的确80,90用户很集中,但是各年龄段也是自然分布,之前泄露过数据的网站,如CSDN,人人等都有很突出且集中的用户分布。
【吐槽】谈到年龄嘛,库里有个2014年3月出生的姓高的宝宝,你家人抢票真的很激烈,你还不满一岁就成马甲了,也是醉了有木有!
再来看看星座,可以说攻受立判(划掉),咳...
顺便一提的是,这个数据让我想起了当年花了很多口舌才劝一个白羊朋友相信支付宝是安全的。。。。。。
貌似他们对新事物总抱有来路不明的怀疑。。。
然后,哪个省的人爱到处跑呢?
下班了,未完待续...