2018年6月10日freebuf发布了篇文章《14亿邮箱泄露密码明文信息查询网站惊现网络》(链接地址:http://www.freebuf.com/news/174410.html),声称其泄露的数据可以通过暗网网站(http://dumpedlqezarfife.onion.lu/)进行查询,后续通过网络获取其泄露文件的下载地址,历经千辛万苦,终于将数据下载到本地,通过研究,将其txt文件进行还原处理,并对其进行无效数据处理,去除空密码等操作。
1.1.1数据下载及分析
1.数据下载地址
(1)二进制未压缩41G磁力下载链接地址
magnet:?xt=urn:btih:7ffbcd8cee06aba2ce6561688cf68ce2addca0a3&dn=BreachCompilation&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Fglotorrents.pw%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337
(2)二进制压缩11G磁力下载链接地址
magnet:?xt=urn:btih:09250e1953e5a7fefeaa6206e81d02e53b5b374a&dn=BreachCompilation.tar.bz2&tr=udp://tracker.leechers-paradise.org:6969/announce&tr=udp://tracker.opentrackr.org:1337/announce&tr=udp://tracker.pirateparty.gr:6969&tr=udp://tracker.coppersurfer.tk:6969/announce&tr=udp://tracker.zer0day.to:1337/announce
2.数据库内容
该集合数据库中包含从Bitcoin、Pastebin、LinkedIn、MySpace、Netflix、YouPorn、Last.FM、Zoosk、Badoo、RedBox以及游戏平台(Minecraft和Runescape等)泄漏的数据,以及Anti Public,Exploit.in泄漏的凭证列表
1.1.2数据分析及处理
1.对下载文件进行解压
对breachcompilation.txt.7z进行解压,解压后数据在data目录,它是按照字母进行排序的,在解压根目录存在一些脚本文件,如图1所示,原始文件解压后45G,后面我又对该文件进行压缩处理,节约空间。
1-14亿数据处理.jpg
图1解压文件
2.使用cat生成文件
使用cat * >alla.txt类似命令,对每一个文件夹进行处理,然后生成多个txt文件。
3.文件格式
通过notepad对该密码文件进行查看,发现数据为邮箱帐号及密码,使用“:”分隔数据字段。
4.创建数据库及表
(1)在mysql中创建数据库14yidata
(2)创建数据库表
alla表设置两个字段,email及password。
1.1.3数据库导入处理
1.将txt文件导入到数据库
(1)对a开头的数据进行处理
通过cat对a文件夹进行处理,共生成alla.txt、alla-l.txt及alla-n.txt三个文件夹,其中alla-l.txt及alla-n.txt是因为在a文件夹下存在子文件夹l及n。
(2)执行导入
在Navicat for MySQL中分别执行以下语句进行导入,如图2所示,导入成功后,会显示受影响的行,该数据表示导入了多少条数据。
LOAD DATA LOCAL INFILE "d:/ok/alla.txt" INTO TABLE alla FIELDS TERMINATED BY ':';
LOAD DATA LOCAL INFILE "d:/ok/alla-l.txt" INTO TABLE alla FIELDS TERMINATED BY ':';
LOAD DATA LOCAL INFILE "d:/ok/alla-n.txt" INTO TABLE alla FIELDS TERMINATED BY ':';
2-导入文本文件到数据库.jpg
图2导入数据
2.查询存在特殊字符邮箱数据并保存
在mysql中执行:select * from alla where email like '%;%' and password >''查询后,将查询结果保存为alla-ok.txt文件,如图3所示,使用notepad打开alla-ok.txt文件,在其中可以看到存在特殊字符,将空格替换为“:”。
3-处理特殊字符及有密码的字段.jpg
图3处理特殊字符数据
3.删除存在特殊字符“;”及有密码的数据
执行语句:delete from alla where email like '%;%' and password >'',如图4所示,将alla表中存在“;”和密码的数据进行清洗,也即删除掉,前面已经保存了数据(alla-ok.txt)。
4-删除特殊字符及密码的数据.jpg
图4删除特殊字符数据
4.查询空密码
在处理数据库中发现存在很多空密码,执行查询:select * from alla where password='',执行后,如图5所示,显示共有292672条数据。
5-查询空密码.jpg
图5查询空密码
5.删除空密码
由于空密码没有什么用处,是废弃数据,需要进行删除处理,执行语句:
delete from alla where password='' ,如图6所示,删除292672条数据记录。
6-删除空密码数据.jpg
图6删除空密码数据
6.查询特殊字段“;”密码并导出文件
在导入的数据库表alla中,存在一些特殊字符,其email名称跟密码通过“;”进行分割,如图7所示,执行查询select * from alla where email like '%;%',这些数据不便于查询,需要进行处理。
7-查询特殊字段数据.jpg
图7查询特殊字符“;” 存在的数据
7.导出特殊字符“;” 存在的数据
在Navicat for MySQL查询处理完毕后,如图8所示,单击导出向导,根据其提示进行即可,将存在特殊字符的数据记录全部导出道d:\ok\ok\1.txt文件。
8-导出数据库处理.jpg
图8将所有特殊字符数据记录导出到1.txt文件
8.合并导出特殊字符和密码的字段表及后导出的密码表
(1)替换字符
使用notepad打开1.txt文件,查找目标“;”,将其替换为“:”,如图9所示,选择全部替换即可。
9-替换.JPG
图9替换特殊字符记录
(2)合并数据
将alla-ok.txt中的数据复制到1.txt文件中。
8.去除行尾空白字符
前面进行查询及处理的数据存在空白字符,需要通过UltraEdit编辑器对1.txt文件去除行尾空白字符,单击“格式”-“删除行尾空白字符”即可,如图10所示。
10-删除空白字符.jpg
图10去除行尾空白字符
9.重新导入特殊字符处理的表
将处理后的数据文件1.txt导入数据库,执行语句:
LOAD DATA LOCAL INFILE "D:/ok/ok/1.txt" INTO TABLE alla FIELDS TERMINATED BY ':';
如图11所示,将存在问题的数据记录重新导入数据库中。
11-重新导入数据.jpg
图11重新导入数据库中
10.将前面所有查询处理保存
将alla处理结果表进行重命名,例如alla_ok,按照顺序,对前面的查询处理进行编号,对后续数据进行处理。直至将所有数据处理完毕,对所有文件处理完毕后,实际数据数为1387009672条。
11.如果有兴趣可以利用14亿数据进行大数据学习
推荐一个对14亿数据的处理及分析站点:https://github.com/philipperemy/tensorflow-1.4-billion-password-analysis
1.1.5总结及探讨
1.文本文件导入数据库语句总结
很多时候泄露的数据为txt文件,需要对其进行处理,将txt文件中的数据导入数据库,方便进行查询等处理。
(1)将文本文件导入mysql数据库
LOAD DATA LOCAL INFILE "d:/ok/alla-n.txt" INTO TABLE alla FIELDS TERMINATED BY ':';
(2)查询存在特殊字符及密码的数据,并保存
select * from alla where email like '%;%' and password >''
(3)对上面的数据进行替换处理
空格替换成:
(4)删除存在特殊字母“;”及有密码的数据
delete from alla where email like '%;%' and password >''
(5)查询空密码
select * from alla where password=''
(6)删除空密码
delete from alla where password=''
(7)查询特殊字段“;”密码并导出文件
select * from alla where email like '%;%'
(8)对导出文件进行替换处理“;”替换为“:”
(9)合并导出特殊字符和密码的字段表及后导出的密码表
(10)去除行尾空字段
(11)重新导入特殊字符处理的表
LOAD DATA LOCAL INFILE "D:/ok/ok/1.txt" INTO TABLE alla FIELDS TERMINATED BY ':';
2.数据库去重处理
在本次处理中未对数据进行去重处理,由于数据量比较大,进行去重处理后,感兴趣的朋友可以将所有txt文件cat成一个文件,使用sort进行去重处理。其命令为:
sort -u all.txt >allnew.txt
3.在线查询
互联网上有一些密码及邮箱在线查询网站:
https://pwdquery.xyz/:输入邮箱,隐藏部分的泄露密码
https://verify.4iq.com/:输入邮箱,自动将泄露密码发送到邮箱上
https://haveibeenpwned.com/Passwords:输入密码,确认是否泄露
参考文章:
https://shui.azurewebsites.net/2017/12/31/breachcompilation-1-4-billion-password/
来源网站:http://www.voidcn.com/article/p-ebyttmnd-brv.html