這次泄露的是一個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 創建DataTable var 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); #endregion return 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月出生的姓高的寶寶,你家人搶票真的很激烈,你還不滿一歲就成馬甲了,也是醉了有木有!
再來看看星座,可以說攻受立判(划掉),咳...
順便一提的是,這個數據讓我想起了當年花了很多口舌才勸一個白羊朋友相信支付寶是安全的。。。。。。
貌似他們對新事物總抱有來路不明的懷疑。。。
然后,哪個省的人愛到處跑呢?
下班了,未完待續...