2018年6月10日freebuf發布了篇文章《14億郵箱泄露密碼明文信息查詢網站驚現網路》,聲稱其泄露的數據可以通過暗網網站(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

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 解壓文件

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 導入數據

2.查詢存在特殊字元郵箱數據並保存

在mysql中執行:select * from alla where email like %;% and password >查詢後,將查詢結果保存為alla-ok.txt文件,如圖3所示,使用notepad打開alla-ok.txt文件,在其中可以看到存在特殊字元,將空格替換為「:」。

圖3 處理特殊字元數據

3.刪除存在特殊字元「;」及有密碼的數據

執行語句:delete from alla where email like %;% and password >,如圖4所示,將alla表中存在「;」和密碼的數據進行清洗,也即刪除掉,前面已經保存了數據(alla-ok.txt)。

圖4 刪除特殊字元數據

4.查詢空密碼

在處理資料庫中發現存在很多空密碼,執行查詢:select * from alla where password=,執行後,如圖5所示,顯示共有292672條數據。

圖5 查詢空密碼

5.刪除空密碼

由於空密碼沒有什麼用處,是廢棄數據,需要進行刪除處理,執行語句: delete from alla where password= ,如圖6所示,刪除292672條數據記錄。

圖6 刪除空密碼數據

6.查詢特殊欄位「;」密碼並導出文件

在導入的資料庫表alla中,存在一些特殊字元,其email名稱跟密碼通過「;」進行分割,如圖7所示,執行查詢select * from alla where email like %;%,這些數據不便於查詢,需要進行處理。

圖7 查詢特殊字元「;」 存在的數據

7.導出特殊字元「;」 存在的數據

在Navicat for MySQL查詢處理完畢後,如圖8所示,單擊導出嚮導,根據其提示進行即可,將存在特殊字元的數據記錄全部導出道d:okok1.txt文件。

圖8 將所有特殊字元數據記錄導出到1.txt文件

8.合併導出特殊字元和密碼的欄位表及後導出的密碼錶

(1)替換字元

使用notepad打開1.txt文件,查找目標「;」,將其替換為「:」,如圖9所示,選擇全部替換即可。

圖9 替換特殊字元記錄

(2)合併數據

將alla-ok.txt中的數據複製到1.txt文件中。

9.去除行尾空白字元

前面進行查詢及處理的數據存在空白字元,需要通過UltraEdit編輯器對1.txt文件去除行尾空白字元,單擊「格式」-「刪除行尾空白字元」即可,如圖10所示。

圖10 去除行尾空白字元

10.重新導入特殊字元處理的表

將處理後的數據文件1.txt導入資料庫,執行語句:

LOAD DATA LOCAL INFILE "D:/ok/ok/1.txt" INTO TABLE alla FIELDS TERMINATED BY :;

如圖11所示,將存在問題的數據記錄重新導入資料庫中。

圖11 重新導入資料庫中

11.將前面所有查詢處理保存

將alla處理結果表進行重命名,例如alla_ok,按照順序,對前面的查詢處理進行編號,對後續數據進行處理。直至將所有數據處理完畢,對所有文件處理完畢後,實際數據數為1387009672條。

12.如果有興趣可以利用14億數據進行大數據學習

推薦一個對14億數據的處理及分析站點:github.com/philipperemy

1.1.4總結及探討

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.在線查詢

互聯網上有一些密碼及郵箱在線查詢網站:

pwdquery.xyz/:輸入郵箱,隱藏部分的泄露密碼

verify.4iq.com/:輸入郵箱,自動將泄露密碼發送到郵箱上

haveibeenpwned.com/Pass:輸入密碼,確認是否泄露

參考文章:

shui.azurewebsites.net/


推薦閱讀:
相关文章