首页 > 代码库 > 得到12306数据后,非技术性吐槽

得到12306数据后,非技术性吐槽

这次泄露的是一个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
View Code

 

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;        }    }}
View Code

 

配置文件 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>
View Code

 


数据不多,几秒钟就跑完了。。。 然后看一下数据库,额呵呵呵【阴险脸】。。。。

 

【用户分布】

话说,之前看到有分析说这不是一次泄露而是”撞库“,我个人觉得,从数据来看不像是“撞库”。比如,用户年龄分布,如下图:

技术分享

根据身份证体现的出生年份来看,的确80,90用户很集中,但是各年龄段也是自然分布,之前泄露过数据的网站,如CSDN,人人等都有很突出且集中的用户分布。

 

【吐槽】谈到年龄嘛,库里有个2014年3月出生的姓高的宝宝,你家人抢票真的很激烈,你还不满一岁就成马甲了,也是醉了有木有!

 

技术分享

 

再来看看星座,可以说攻受立判(划掉),咳,此处不加评判仅供参考。然后,哪个省的人爱到处跑呢?

技术分享

 

下班了,未完待续...

得到12306数据后,非技术性吐槽