RSMangler
RSMangler 接收一个单词表并执行多种变形操作,其功能类似 John the Ripper,主要区别在于:它会先对输入单词生成所有排列组合及首字母缩写(按文件中出现的顺序),然后再应用其他变形规则。例如,给定以下三个输入单词:
|
|
RSMangler 会生成以下初始单词列表:
|
|
每个新生成的单词都会进一步接受其他变形操作。因此强烈建议在启用排列模式(默认开启)时使用非常小的单词表:3个起始单词会生成包含5345个词的最终列表,5个起始单词则会生成108557个词。测试中尝试使用几百个单词时,进程内存占用达到3G后被迫中止。
如果尝试使用超过5个单词的文件,会收到警告并可选择中止。
其他变形操作包括:
- 在开头和结尾添加数字1至123
- 在开头和结尾添加01至09
- 多种大小写转换
- 1337语种替换
- 单词反转
- 在结尾添加"ed"和"ing"
- 单词重复
1.1版本新增变形功能:
- 在开头和结尾添加1990年至当前年份的所有年份
- 在开头和结尾添加"sys"、“admin”、“pw"和"pwd”
初始单词表可通过文件指定或通过STDIN管道输入。默认输出到STDOUT(屏幕),也可通过--output
参数输出到文件。
默认情况下,脚本不会输出任何重复的变形单词。1.5版本之前,通过在内存中缓存所有变形单词并使用uniq函数去除重复项来实现此功能,这导致应用需要存储大量字符串而占用极高内存。根据Thomas d’Otreppe的建议,现在应用会生成每个单词的CRC32值:若未见过该值则输出并存储CRC,若已见过则丢弃该单词。这样可以在生成变形词时立即输出,同时仅需存储整数值而非完整字符串,大幅降低内存占用。也可禁用去重功能以提升输出速度并减少内存使用。
下载
可从GitHub仓库获取副本。
安装
只需使脚本可执行,不依赖任何外部gem或库。
使用说明
注意:所有变形选项默认开启,以下参数用于关闭对应功能。
|
|
更新日志
28.09.2017 - v1.5
- 停止在内存中缓存输出
- 添加允许输出重复项的选项(降低内存使用)
- 添加输出到文件功能
- 改进1337转换规则
23.10.2012 - v1.4
- 添加完整1337语种选项(感谢Felipe Molina @felmoltor)
- 增加Ruby 1.9.x支持
24.08.2010 - v1.1
- 新增三种变形功能:年份、首字母缩写和常见词添加
13.07.2010 - v1.0
- 初始版本
许可证
本项目基于知识共享署名-相同方式共享 2.0 英国: 英格兰与威尔士许可协议发布。
致谢
感谢 Thomas d’Otreppe 在项目停滞5年后协助重启项目。 感谢 Felipe Molina 提供初始1337语种转换功能。 感谢 Gavin Watson 提出本项目原始构想。