RSMangler
RSMangler 接收一个词表并对其执行多种变形操作,类似于 John the Ripper 所做的处理,主要区别在于它会首先获取输入词,生成所有排列组合和首字母缩写(按文件中出现的顺序),然后再应用其余变形操作。例如,给定以下三个输入词:
|
|
RSMangler 会生成以下初始词表:
|
|
每个新生成的词都会进一步接受其他变形操作。因此,强烈建议在启用排列模式(默认)时使用非常小的词表。3 个起始词会生成包含 5345 个词的最终列表,而 5 个起始词会生成包含 108557 个词的列表。作为测试,我们尝试使用几百个词,当进程内存使用达到 3G 时放弃了。
如果尝试使用超过 5 个词的文件,将会收到警告并可以选择中止。
其他变形操作包括在词首和词尾添加数字 1 到 123、01 到 09,各种大小写转换、leet 语替换、词反转、在词尾添加 ed 和 ing,以及重复词。
1.1 版本中的新变形操作包括在词首和词尾添加 1990 年到当前年份的所有年份,以及在词首和词尾添加 sys、admin、pw 和 pwd。
初始词表可以指定为文件,也可以通过 STDIN 管道输入。默认情况下,输出到 STDOUT(屏幕),但可以通过 --output 参数发送到文件。
默认情况下,脚本不会输出任何重复的变形词。在 1.5 版本之前,这是通过在内存中缓存所有变形词并在发送到屏幕之前使用 uniq 函数去除任何重复项来实现的。这导致应用程序使用大量内存,因为它必须在最终运行输出之前存储可能数千个字符串。根据 Thomas d’Otreppe 的建议,应用程序现在生成每个词的 CRC32,如果之前没有见过该值,则将其发送输出并存储 CRC。如果已经见过,则直接丢弃该词。这使得变形词可以在生成后立即输出,同时将内存使用保持在最低水平,因为每个词只需要存储一个整数而不是完整字符串。还可以禁用去重选项,这样可以加快输出速度并减少内存使用。
下载
您可以从我的 GitHub 仓库获取副本。
安装
只需使脚本可执行,它不依赖任何 gems 或外部内容。
使用说明
注意,所有变形选项默认都是开启的,这些参数会关闭它们。
|
|
变更日志
28.09.2017 - v1.5
- 停止在内存中缓存输出
- 添加允许输出中重复项的选项 - 使用更少内存
- 添加输出到文件的选项
- 改进了 leet 转换
23.10.2012 - v1.4
- 添加完整 leetspeak 选项,感谢 Felipe Molina (@felmoltor)
- 添加对 ruby 1.9.x 的支持
24.08.2010 - v1.1
- 添加三个新变形操作 - years、acronym 和 common。
13.07.2010 - v1.0
- 初始发布
许可证
本项目根据 Creative Commons Attribution-Share Alike 2.0 UK: England & Wales 发布。
致谢
感谢 Thomas d’Otreppe 在项目被忽视 5 年后帮助其重生。 感谢 Felipe Molina 提供了最初的 l33t 语功能。 感谢 Gavin Watson 提出了这个项目的原始想法。