高性能词生成器,每个位置可配置字符集
尝试给定密钥空间中的所有组合,类似于暴力破解攻击,但更加具体。
采用这种方式而不是传统的暴力破解,原因在于我们希望将密码候选密钥空间缩减为更高效的集合。
这里有一个简单的例子。我们想要破解密码:Julia1984
在传统的暴力破解攻击中,我们需要一个包含所有大写字母、所有小写字母和所有数字(即“mixalpha-numeric”)的字符集。密码长度为9,因此我们必须遍历62^9(13,537,086,546,263,552)种组合。假设我们以100M/s的速度破解,需要超过4年才能完成。
在掩码攻击中,我们了解人类设计密码的习惯。上述密码匹配一个简单但常见的模式:一个名字后面加上年份。我们还可以配置攻击,只在第一个位置尝试大写字母。在第二个或第三个位置出现大写字母的情况非常罕见。简而言之,通过掩码攻击,我们可以将密钥空间减少到522626262610101010(237,627,520,000)种组合。以相同的100M/s破解速度,只需要40分钟即可完成。
没有劣势。有人可能会说上面的例子非常具体,但这并不重要。即使在掩码攻击中,我们也可以配置掩码使用与暴力破解完全相同的密钥空间。关键在于,反过来是无法做到的。
对于生成的每个密码候选位置,我们需要配置一个占位符。如果我们要破解的密码长度为8,那么我们的掩码必须由8个占位符组成。
有四个命令行参数用于配置四个自定义字符集。
这些命令行参数有四个对应的简写,称为 -1、-2、-3 和 -4。您可以直接在命令行上指定字符。
掩码攻击总是针对特定密码长度。例如,如果使用掩码"?l?l?l?l?l?l?l?l",我们只能破解长度为8的密码。但如果尝试破解的密码长度为7,则无法找到。因此,我们必须多次重复攻击,每次在掩码中增加一个占位符。使用"--increment"标志可以自动透明地完成这一操作。
目前,这是世界上最快的词生成器。以下是一些统计数据:
为避免测试中的不规律性,所有输出都重定向到 /dev/null。
以下命令生成以下密码候选:
命令:?l?l?l?l?l?l?l?l
密钥空间:aaaaaaaa - zzzzzzzz
命令:-1 ?l?d ?1?1?1?1?1
密钥空间:aaaaa - 99999
命令:password?d
密钥空间:password0 - password9
命令:-1 ?l?u ?1?l?l?l?l?l19?d?d
密钥空间:aaaaaa1900 - Zzzzzz1999
命令:-1 ?dabcdef -2 ?l?u ?1?1?2?2?2?2?2
密钥空间:00aaaaa - ffZZZZZ
命令:-1 efghijklmnop ?1?1?1
密钥空间:eee - ppp
直接运行 make
Linux、Windows 和 OSX 的二进制文件:https://github.com/jsteube/maskprocessor/releases