游客发表
去年帮朋友恢复一个旧硬盘,制作字典里面有个加密压缩包,密码密码提示写着“生日+姓名拼音”。制作字典他试了半小时没辙,密码我直接打开记事本,制作字典花了十分钟给他生成了一个两百多行的密码候选列表,跑了一遍就开了。制作字典这事让我意识到,密码很多人对密码字典的制作字典理解停留在“黑客电影里那种滚动屏幕”,其实它就是密码个文本文件,一行一个候选密码,制作字典工具拿着它挨个试。密码
制作密码字典的制作字典第一步,不是密码打开软件,是制作字典搞清楚目标。你要破的是什么东西,决定了字典的形态。比如一个网站登录框,通常有尝试次数限制,字典大了没用,得精准。一个离线加密文件,比如ZIP、RAR、PDF,可以无限次尝试,那字典就可以暴力一些。我见过有人拿一个包含五百万条泄露密码的字典去撞一个带验证码的登录页,除了浪费电,什么也得不到。
最基础的字典来自“社会工程学”。生日、手机号、姓名缩写、宠物名、常用数字组合,这些信息凑一凑,往往比随机生成的管用。我习惯先建一个“核心词”列表,把目标相关的所有关键词写进去,比如“zhangsan”、“19900312”、“beijing”。然后用工具做变形——首字母大写、加年份、加特殊符号、数字替换字母(a换成@,o换成0)。这类变形规则在Hashcat里叫“规则文件”,在John the Ripper里叫“wordlist rules”,本质上就是给每个词套上一堆模板。
再往上走,是纯暴力生成的字典。用Crunch这类工具,可以指定字符集和长度,生成所有可能组合。比如8位纯数字,一千万条,文件大概80MB。8位小写字母,两千亿条,硬盘直接爆炸。所以暴力生成只适合短密码或者已知部分结构的情况。我一般用掩码模式,比如知道密码是“大写字母+三个小写字母+两个数字”,那就只生成这个模式,数量从天文数字降到几十万。
实际干活时,字典往往不是单一来源。我会把几个来源合并去重:泄露库里的常见密码(比如rockyou.txt)、针对目标定制的变形词、暴力生成的短密码。然后用sort -u去重,有时候还会按长度排序,短的先试,因为短密码命中率更高。有个细节:很多工具对字典文件的大小和编码有要求,UTF-8无BOM是安全的,换行符用LF,别用Windows的CRLF,否则可能把回车符当成密码的一部分。
说个具体案例。之前帮人恢复一个加密的Excel文件,提示是“孩子生日+名字”。我问他孩子生日,他说20180512,名字叫“一诺”。我生成了这些组合:20180512yinuo、yinuo20180512、Yinuo0512、yn20180512、20180512yn……大概三十多条,第三条就开了。如果当时直接上暴力,八位数字加字母,跑到天亮也未必行。这就是字典的价值——它把“猜”变成了有逻辑的“试”。
最后提醒一句,制作和使用密码字典,只在你自己拥有合法权限的系统或文件上操作。帮朋友恢复自己的硬盘,没问题。拿去撞别人的邮箱或者服务器,那是另一回事了。工具本身没有善恶,用的人有。
友情链接