Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
gorilla — 用于生成字典或通过变异扩充现有字典的工具。 | Kitploit
工具/GitHubGitHub/andreiverse/gorilla
密码破解密码攻击信息收集网络爬虫
GitHubandreiverse/gorilla

gorilla

用于生成字典或通过变异扩充现有字典的工具。

查看仓库
390226个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

gorilla

gorilla 是一款终极词表工具,集成了许多实用功能:

  • 基于模式构建词表(如 crunch)
  • 基于常见密码/用户名格式构建词表(如 cupp)
  • 抓取网页并从其单词构建词表(如 cewl)
  • 使用变异扩展已有词表(如 hashcat 的规则攻击)

使用 cargo 安装

安装 Rust 的 Cargo 后,运行 cargo install --git https://github.com/d4rckh/gorilla --branch main

现在你应该可以运行 gorilla --help

使用 cargo 构建

root@kitploit:~
cargo build --release
# 二进制文件将位于 target/release 文件夹中

计算密码

--from-pattern/-p 参数用于告诉 gorilla 基于模式计算密码。 例如,以下命令将打印包含 5 个小写字母的每个单词。

root@kitploit:~
gorilla --from-pattern "{a-z}{a-z}{a-z}{a-z}{a-z}"

其他模式示例:administrator{0-9}(administrator0 -> administrator9);hello_world{a-z}{0-9}(hello_worlda0 -> hello_worldz9)。

如果要将输出保存到文件,可以使用 --output-file/-o 参数。

image

Gorilla 现在还支持字符集。它们在 src/char_sets.rs 中定义。以下是一些使用它们的模式示例:{l} => a b c d ... z;{u} => A B C D ... Z;{d} => 1 2 3 4 ... 9;{s} => (空格) ! " # $ ... ~。你可以组合多个字符集,因此 {luds} 将得到一个包含所有其他已描述字符集的字符集(#45)。

如果使用范围且两端各有 1 个字符,则执行字符范围。例如:

  • {a-z} 将依次添加字母表中的每个字符:a, b, c, d, e, f, g,...., x, y 和 z;
  • {a-c} 将只依次添加 a、b 和 c;
  • {0-9} 将只依次添加 0, 1, 2, 3, 4, 5, 6, 7, 8, 9。 如果使用范围且其中一端有多个字符,则每一端将被解析为无符号 32 位数字,并生成数字范围。例如:
  • {2020-2026} 将依次添加 2020, 2021, 2022, 2023, 2024, 2025 和 2026。
  • {1-100} 将依次添加 1 到 100(含)的数字。

实验性:如果括号内部包含逗号,字符串将按逗号拆分并依次添加每个部分,例如 {Jan,Feb,Mar} 将依次添加 Jan、Feb 和 Mar。

可选地,你可以使用 --pattern-threads 参数生成多个模式线程。我建议你将其设置为计算机上可用的最大线程数。

使用变异/规则修改已有词表

通过命令行参数,你可以执行任何受支持的变异,但仅限于 1 组变异。变异组是应用于一个单词的一组变异。通过 CLI,变异通过 --mutation/-m 参数提供。

root@kitploit:~
gorilla --from-pattern "administrator" --mutation "prepend:_"

image

通常在这种情况下,你会想使用 --from-file/-i 参数而不是 --from-pattern 来指定一个词表而不是单个单词,但为了简单起见,我将使用它。

上述命令接收 1 个单词并输出 1 个单词:_administrator。你可以使用相同参数添加多个变异。

root@kitploit:~
gorilla --from-pattern "administrator" \
  -m "prepend:_" \
  -m "append:{0-9}"

这又一次只接收 1 个单词,但将输出 10 个不同的单词。将 {0-9} 语法添加到 prepend 和 append 将生成多个单词。上述命令生成以下单词。

root@kitploit:~
_administrator0
_administrator1
_administrator2
[.. 省略 ..]
_administrator8
_administrator9

如果我们通过 -i 文件提供一个词表,我们将得到该词表单词数乘以 10 的结果。

到目前为止,我们只应用了 1 组变异。通常你会想要组合多组变异。这通过 yaml 文件完成。你可以使用 --mutations-file/-f 参数指定一个文件。本仓库中的 sets/simple.yml 文件中有一个示例,内容如下:

root@kitploit:~
name: simple

mutation_sets:
  - [ nothing ] # => word
  - [ reverse ] # => drow
  - [ remove_last_letter ] # => wor
  - [ remove_first_letter ] # => ord
  - [ uppercase_all ] # => WORD
  - [ "append:{0-9}" ] # => word1, word2, word3
  - [ "2 append:{0-9}" ] # => word11, word22, word33
  - [ "replace:o:0", "replace:a:4", "replace:e:3" ] # => w0rd, h3ll0

image

每个变异文件都必须有一个 name 和一个 mutation_sets 值,如示例所示。上述变异组将从单个单词生成另外 27 个单词。

root@kitploit:~
administrator
administrator
rotartsinimda
administrato
dministrator
ADMINISTRATOR
administrator0
[.. 省略 ..]
administrator9
administrator00
[.. 省略 ..]
administrator99
4dministr4t0r

如果你想在使用前检查变异文件是否有错误,可以使用以下语法解析并打印摘要。

root@kitploit:~
gorilla --mutations-file muts.yml 

抓取网页单词

(目前)你只能抓取特定页面的单词。样式和脚本标签会自动移除。

你可以使用 --from-website/-w 参数指定页面。例如

root@kitploit:~
gorilla --from-website https://example.org/

image

上述命令将打印该网站中的每个单词。你可以添加之前展示的其他参数,如 --mutations-file/-f、--mutation/-m,当然还有 --output-file/-o 来保存它们(而不是打印)。

条件变异

你可以将一组变异应用于满足特定条件的单词。这仅在 yaml 文件中有意义。

以下变异文件将移除不包含字符串 admin 的单词。与之前的变异不同,这可以移除单词。

root@kitploit:~
name: filtering_words

mutation_sets:
  - [ "if_contains:admin" ]

另一个示例如下,它将仅向长度超过 5 个字符的单词添加下划线。

root@kitploit:~
name: conditional_mutation

mutation_sets:
  - [ "if_length:>5", "append:_" ],
  - [ "! if_length:>5" ]

注意,我们必须添加另一个以第一个 if 变异的否定版本开头的变异组,否则长度小于 6 个字符的单词将被移除。

其他变异

gorilla 支持许多其他变异,由于该工具处于早期开发阶段,在此维护它们的列表将非常痛苦。如果你对其他变异感到好奇,可以查看 src/mutation.rs 文件中的 Action 枚举。

使用常见密码/用户名格式构建词表

格式通过 yaml 文件定义在格式化集合中,并通过 --from-formatting/-q 参数提供给 gorilla。目前只制作了一个格式化集合,位于 sets/formatting/basic_usernames.yml。它看起来(类似)这样。

root@kitploit:~
name: basic_usernames

fields:
  - [ f_name ]
  - [ l_name ]

formatting_sets:
  - [ "{f_name}_{l_name}" ]
  - [ "{l_name}{f_name}" ]
  - [ ["{f_name}", [1st_letter]], "_{l_name}" ]
  - [ ["{f_name}", [1st_letter]], "{l_name}" ]

必需的字段是 name、fields 和 formatting_sets。fields 值是用户的资料,包含之后在 formatting_sets 中使用的信息。

如果你运行该集合,系统将提示你输入每个字段,并生成用户名。

image

注意:不要使格式化集合中的变异过于复杂,它们将全部单线程运行!将格式化文件与变异文件混合使用,以并行运行变异。不要在格式化集合的变异组中使用组合模式。

提示:你可以正常使用其他参数,如 --mutations-file/-f 通过变异生成新单词,或 --output-file/-o 保存单词

每个格式化集合是一个字符串数组,之后会被拼接。因此 ["{f_name}", "{l_name}"] 等同于 ["{f_name}{l_name}"]。除了字符串,你还可以提供一个数组,这允许你应用之前用于扩展词表的变异。

root@kitploit:~
- [ "{f_name}_", [ "{l_name}", [ reverse ] ] ]

如果 f_name 是 joe,l_name 是 doe,生成的格式化将产生 joe_eod。在格式化集合中有用的变异是 remove_last_letter、remove_first_letter 和 1st_letter。

如果你想将格式化集合应用于许多用户资料,可以使用 --with-csv/-c 参数提供一个 CSV 文件。对于 basic_usernames 格式化集合,CSV 格式应如下:

root@kitploit:~
f_name,l_name
joe,doe
james,smith
robert,smith

image

所有可用的变异:

基础

  • append:PATTERN - 追加一个模式或仅文本
  • prepend:PATTERN - 前置一个模式或仅文本
  • replace:TEXT1:TEXT2 - 将 TEXT1 替换为 TEXT2
  • reverse - 反转单词
  • uppercase_all - 将所有字母大写
  • lowercase_all - 将所有字母小写
  • remove_first_letter - 移除首字母
  • remove_last_letter - 移除末字母
  • capitalize - 将单词首字母大写(首字母大写,其余小写)
  • toggle_case - 切换每个字符的大小写

高级

  • if_length:COND - 如果单词长度不满足条件则清除单词(COND = >NUMBER/<NUMBER/=NUMBER)
  • if_contains:TEXT - 与上述相同,但如果单词不包含某个文本则清除
  • clone - 克隆单词
  • wipe - 移除单词中的所有内容
  • 1st_letter - 保留除首字母外的所有内容
  • nothing - 不做任何事
下载工具