一个智能的常见用户密码分析器,名称源自《Mr.Robot》第一季第一集中的同名工具 😄
简单来说,elpscrk 会询问你关于目标所知道的所有信息,然后尝试生成目标可能想到的每一种可能的密码,这完全取决于你提供的信息、激活的选项以及你指定的复杂程度。
elpscrk 针对不同类型的目标提供 6 个复杂级别,从默认的简单用户,到书呆子用户、偏执用户,直至最终 BOSS 级别——核级,该级别可能生成 1000000 个或更多密码。😆
Elpscrk 类似于 cupp,但它基于排列组合和统计,且内存效率高。 因此你几乎可以立即获得更多结果,每种用户类型都有对应的复杂级别,并且结果非常可定制,如下文使用方法部分所示。

非常简单,你只需运行脚本,它会提示你输入目标已知的信息,然后生成每种常见数据组合的排列列表,如下所示。
对于更高级的使用和自定义,需要注意以下几点:
它决定了生成的密码简单程度。例如,给定姓名:
- 在级别 0(默认)下,你给出的每个姓名会转换为(大写、小写),首字母会转换为(大写、小写),
而前两个字母会转换为(大写、小写、首字母大写)。
- 在级别 1 下,你会看到级别 0 的所有内容,但还会包含每个姓名反转后的形式,并且每个姓名的前两个字母也会反转。
下面这个表格解释了全部复杂级别:
注意:在“总体思路”一栏中,提到的每一种形式都是(常见/不常见)混合使用,而非单独使用。
| 级别 | 总体思路 |
|---|---|
| 0 - 简单用户 | 这是默认级别,预期会有很多内容,比如上面解释的姓名排列;日期被拆分为天、月、年、年份的后两位数字(如 1990 和 90);电话号码被转换为国家格式,并附带常用首/末四位数字列表,以此类推。 |
| 1 - 普通用户 | 使用此级别会增加一些有趣的内容,比如对于姓名,每个姓名反转,每个姓名的前两个字母也反转;对于日期,天数或月份小于 10 时会在前面补 0,因此 5 会变成 05 和 5;此外还会使用年份的后三位数字,所以 1990 会生成 990。 |
| 2 - 网络安全意识 | 默认情况下,你提供的旧密码会原样使用,并去除任何特殊字符;但从级别 2 开始,每个给定的旧密码会被转换为(大写、小写、首字母大写、反转)形式。 |
| 3 - 偏执用户 | 默认情况下,如果你使用了 --chars 参数,elpscrk 在级别 0 或 1 时会使用最常见的 10 个字符;但从级别 3 起,它会使用密码中允许的全部特殊字符集(参见参考资料)。 |
| 4 - 书呆子用户 | 对于级别 3 及以下,elpscrk 会使用有序对来确保排列有序,并剔除大量不常见的密码混合形式;使用级别 4 会使用相同的常见混合,但不使用有序对,因此例如不再只生成(姓名 & 日期)的密码,而是生成(姓名 & 日期、姓名 & 姓名、日期 & 日期……)等混合形式。 |
| 5 - 核级! | 这是情况失控的级别 😆,elpscrk 开始使用不常见且不太真实的密码,用于最复杂、非人类的目标。 |
注意:在这些级别的所有排列开始之前,elpscrk 会像 cupp 一样使用简单加法生成一些最常见的密码形式,以确保它们出现在结果中。
当你启用 leet 标志时,elpscrk 会正常运行,在完成并导出结果后,它会开始获取所有密码的所有 leet 排列,并将它们保存到一个新文件中。
例如,像 karim 这样的姓名会生成 ['k4r1m', 'k4rim', 'kar1m', 'karim']。
使用 -y/--years 选项并指定一个年份(如 1980),会使 elpscrk 将所有密码与从 1980 年到 2022 年(当前年份 + 1)的所有年份混合,因此你会得到像这样的密码:
karim1980
1981karim
...
karim2022
以此类推。同样,-r/--num-range 选项指定一个数字(如 100),会添加从 0 到 100 的所有数字,因此会得到像 karim99, 99karim, karim100 这样的密码。
pip install -r requirements.txt 或者如果你安装了多个版本,可以使用 python3 -m pip install -r requirements.txt。如果这个工具对你有用,欢迎请我喝杯咖啡 :)