CSDN数据库密码整理

Feb 25,2012 linux bash

最近很多网站的用户数据库都泄漏出来了,前两天得到一份CSDN的用户数据库,文件中一共6428632行,287238395字节(273.9MB)。用这份数据足够做一个泄漏口令数据库了,避免使用其中的密码。

思路:首先从文件中提取出密码字段,然后统计各个密码重复的次数,并按从高到底排序,最后进行去重。

分步骤提取

第一步:提取字段

这份数据库文件的内容都是按照 account # password # 123@email.com 这样的格式。

$ time sh -c 'cut -f 3 -d " " csdnpasswd > cut.pass'

这条命令的作用是将csdnpasswd文件中的第三个字段截取出来,设置分隔符为“ ”(空格),把结果存放到cut.pass文件里面, 并记录命令完成所花费的时间。运行的结果如下:

real    0m27.795s                    <== 实际使用时间(real time) user    0m1.764s                     <== 用户态使用时间(the process spent in user mode) sys    0m15.421s                     <==内核态使用时间(the process spent in kernel mode)

第二步:统计和排序

  • 先把cut.pass文件内容排序,,
  • 再去重并记录下每一个密码的重复次数
  • 然后按重复的次数进行排序

使用如下命令进行去重并标记密码出现的次数

$ sort cut.pass | uniq -c > pass.times

使用cat pass.times | wc -l 可以发现,现在的文件pass.times文件已经只剩下4036971行了。并且每一行的格式都变成times password 即密码出现次数和实际的密码。

在虚拟机里面运行上面的命令,总共消耗了 75秒。sort命令排序还是比较快的。

按频率排序

将pass.times文件的第一个字段,按降序排列,并将结果输入到pass.times.sort文件中。

使用如下命令:

$ sort -nr -k1 pass.times > pass.times.sort

上面的命令中: + -n 代表依数字大小排序 + -r 代表是降序 + k1 代表按第一个字段

检查使用量最大的密码

$ head pass.times.sort
235025 123456789
212750 12345678
76346 11111111

使用频率最高的密码是123456789,有235025个帐号在使用。请停止使用以上的三个密码了!!!

第四步:提取密码

既然已经把它们按出现的频率排序过了,接下来就再把密码提出来  次就ok了。

cat pass.times.sort | awk ‘{print $2}’ > password.dict

现在得到的这一个password.dict文件,就是最后所得到的密码字典文件。

一步完成

如果对Bash命令十分熟悉的话,当然可以一步搞定。

awk '{print $3}' csdnpasswd | sort | uniq -c | sort -nr 

总结

从得到的数据来看,Bash的命令效率实很高的。这份无序的文件最多只要不到两分钟就完成排序了,而且是在一台配置不高的虚拟机ubuntu里面,可见,Bash指令的算法十分高效率的。

另外,请务必注意密码安全。

Last updates at Jul 25,2025

Views (487)

Leave a Comment

total 0 comments