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

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

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

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

工具目录

分类

查看所有分类
Loading categories
spraycharles — 低慢速密码喷射工具,设计用于在长时间间隔内进行喷射。 | Kitploit
工具/GitHubGitHub/tw1sm/spraycharles
密码破解密码攻击Web安全渗透测试身份验证
GitHubtw1sm/spraycharles

spraycharles

低慢速密码喷射工具,设计用于在长时间间隔内进行喷射。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Spraycharles

嘿,哟,我感觉自己像 spraycharles——Chiddy Bang

Python PyPi

一款低慢速密码喷射工具,旨在长时间内按间隔进行喷射。

包含针对 Office365、OWA、EWS、Okta、ADFS、Cisco SSL VPN、Citrix Netscaler、Sonciwall、NTLM over HTTP 和 SMB 的喷射插件。

相关博客文章由 @sprocket_ed 撰写,介绍了 NTLM over HTTP、Exchange Web Services 和 Spraycharles。

这个工具是什么?

Spraycharles 是一个相对简单的密码喷射器,诞生于渗透测试中缺乏公开工具、无法以非手动方式持续进行密码喷射的时期。Spraycharles 最好的功能之一可能是通过 -a/--attempts 和 -i/--interval 设置长时间运行的喷射任务,让它连续运行几天,同时定期检查进度。如果你有一次性服务或独特的目标需要喷射,也很容易模板化新模块并开始喷射。

这个工具不是什么?

Spraycharles 最初并非针对现代认证/云提供商设计。如果你需要更高级的功能,可以查看 CredMaster 或 TeamFiltration 等工具。Spraycharles 并非设计为快速——它是单线程的,更侧重于持续大量尝试。

安装

可以通过 pip3 install spraycharles 安装 Spraycharles,或者克隆此仓库并运行 pip3 install .

[!TIP] 这将注册 spraycharles 及其简写 sc 别名到你的路径中。日志和输出文件存储在 ~/.spraycharles 中。可以使用 CLI 标志指定其他输出位置。

使用 Docker

执行以下命令构建 Spraycharles Docker 容器:

root@kitploit:~
git clone https://github.com/Tw1sm/spraycharles
cd spraycharles/extras
docker build . -t spraycharles

执行以下命令使用 Spraycharles Docker 容器:

root@kitploit:~
docker run -it -v ~/.spraycharles:/root/.spraycharles spraycharles -h

你可能需要根据用户名和密码列表的存储位置指定额外的卷。

NixOS

对于 Nix 或 NixOS 用户,有可用的软件包。请注意,最新版本可能仅存在于 unstable 频道中。

root@kitploit:~
nix-env -iA nixos.spraycharles

用法

spray 子命令:

root@kitploit:~
 Usage: spraycharles spray [OPTIONS] COMMAND [ARGS]...

 低慢速密码喷射

╭─ 选项 ─────────────────────────────────────────────────────────────────────────────╮
│ --debug                 启用调试日志(覆盖 --quiet)                                │
│ --config          TEXT  配置文件                                                     │
│ --help    -h            显示此消息并退出                                            │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ 用户/密码配置 ────────────────────────────────────────────────────────────────────╮
│ *  --usernames  -u      TEXT  用户名单的文件路径 [默认: None]                       │
│                               [必填]                                                │
│ *  --passwords  -p      TEXT  单个密码或密码列表的文件路径                          │
│                               [默认: None]                                          │
│                               [必填]                                                │
│    --equal      -e            为每个用户执行一次密码等于用户名的喷射                │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ 喷射目标 ───────────────────────────────────────────────────────────────────────────╮
│    --host      -H      TEXT                           要执行密码喷射的主机(IP 或  │
│                                                        主机名)。使用 Office365    │
│                                                        模块时可任意指定,仅用于     │
│                                                        日志文件名                   │
│                                                        [默认: None]                 │
│ *  --module    -m      [ADFS|CiscoSSLVPN|Citrix|NTLM  与目标主机对应的模块          │
│                        |Office365|Okta|OWA|SMB|Sonic  [默认: None]                  │
│                        wall]                                                         │
│                                                        [必填]                       │
│    --path              TEXT                           NTLM 认证端点                 │
│                                                        (例如 rpc 或 ews)             │
│                                                        [默认: None]                 │
│    --port      -P      INTEGER                        指定主机上的连接端口          │
│                                                        [默认: 443]                  │
│    --fireprox  -f      TEXT                           所需的 fireprox 接口的 URL    │
│                                                        [默认: None]                 │
│    --domain    -d      TEXT                           HTTP - 在用户名前添加 DOMAIN\ │
│                                                        ;SMB - 提供 SMB 连接的域     │
│                                                        [默认: None]                 │
│    --no-ssl                                           使用 HTTP 而非 HTTPS          │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ 输出 ──────────────────────────────────────────────────────────────────────────────╮
│ --output   -o      TEXT  结果输出文件的名称和路径 [默认: None]                       │
│ --quiet                  不将每次登录尝试记录到控制台                                │
│ --analyze                在每个喷射间隔后运行结果分析器(早期误报更有可能出现)      │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ 喷射行为 ──────────────────────────────────────────────────────────────────────────╮
│ --attempts    -a      INTEGER  每个间隔的登录提交次数(针对每个用户)                │
│                                [默认: None]                                         │
│ --interval    -i      INTEGER  登录间隔之间的分钟数 [默认: None]                     │
│ --timeout     -t      INTEGER  Web 请求超时阈值 [默认: 5]                           │
│ --jitter              INTEGER  请求之间的抖动时间(秒)                              │
│                                [默认: None]                                         │
│ --jitter-min          INTEGER  请求之间的最小时间(秒)                              │
│                                [默认: None]                                         │
│ --pause                       如果在间隔之间发现新的潜在成功登录,则暂停喷射        │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ 通知 ───────────────────────────────────────────────────────────────────────────────╮
│ --notify   -n      [Slack|Teams|Discord]  启用 Slack、Teams 或 Discord 的通知       │
│                                           [默认: None]                              │
│ --webhook  -w      TEXT                    用于指定通知模块的 Webhook                │
│                                           [默认: None]                              │
╰───────────────────────────────────────────────────────────────────────────────────────╯

配置文件

由于经常使用大量 CLI 标志,另一种方法是使用 --config 标志从 yaml 文件填充命令行参数。此外,每次使用 Spraycharles 时,你的 CLI 选项都会写入当前目录下的一个 yaml 文件(last-config.yaml),方便修改和重复使用。

通知

Spraycharles 可以在潜在成功登录尝试后向 Discord、Slack 和 Microsoft Teams 发出通知。可以通过 utils/notify.py 脚本扩展此通知提供程序列表。对于任何潜在的通知代理,你必须指定其名称和 Webhook URL。

你可以通过配置文件指定这些参数以简化命令:

root@kitploit:~
notify: Slack
webhook: https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

发送给任何提供商的通知将包含喷射任务的目标主机名。这在同时喷射多个目标时特别有用。

更新用户名/密码文件

你可以在喷射进行中修改提供的用户名和密码文件。对列表的添加或删除将在下一次密码轮换时生效。

[!NOTE] 如果你在列表中插入一个新密码,它必须位于当前正在喷射的密码之后,才能被喷射(Spraycharles 维护一个内部循环计数器,用作索引,以从更新后的列表中对应位置提取下一个密码)。

实用工具

Spraycharles 附带一些额外的实用工具,用于辅助喷射工作。Spraycharles 模块的完整列表:

root@kitploit:~
 Usage: spraycharles [OPTIONS] COMMAND [ARGS]...

╭─ 选项 ─────────────────────────────────────────────────────────────────────────────╮
│ --help  -h        显示此消息并退出                                                   │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ 命令 ────────────────────────────────────────────────────────────────────────────────╮
│ analyze   分析 Spraycharles 输出文件,寻找潜在的喷射命中                          │
│ gen       根据 JSON 文件生成自定义密码列表                                        │
│ modules   列出喷射模块                                                            │
│ parse     解析 NTLM over HTTP 和 SMB 端点,收集域信息                             │
│ spray     低慢速密码喷射                                                          │
╰───────────────────────────────────────────────────────────────────────────────────────╯

生成自定义喷射列表

Spraycharles 的 "gen" 子命令将根据 extras/list_elements.json 中提供的规格生成密码列表。

root@kitploit:~
spraycharles gen extras/list_elements.json custom_passwords.txt

从 NTLM over HTTP 和 SMB 提取域

Spraycharles 的 parse 子命令可以使用类似下面的命令从 NTLM over HTTP 和 SMB 服务中提取内部域。

root@kitploit:~
spraycharles parse https://example.com/ews
spraycharles parse smb://host.domain.local

分析结果文件

analyze 子模块可以读取你的输出 JSON 对象,并确定统计上相关的响应长度。有了足够的数据,它应该能够从结果文件中找出成功的登录。这不是确定成功登录的唯一方法,具体取决于目标站点,我仍然建议你自己检查数据以确保没有遗漏。对于 SMB,它只需查找带有指示成功的 NTSTATUS 码的条目。

root@kitploit:~
spraycharles analyze myresults.json

免责声明

此工具设计用于渗透测试;未经双方事先同意,使用此工具攻击目标是非法的。最终用户有责任遵守所有适用的地方、州和联邦法律。开发者不承担任何责任,也不对本程序的任何误用负责。

开发

Spraycharles 使用 Poetry 管理依赖项。从源码安装并设置开发环境:

root@kitploit:~
pip3 install poetry
git clone https://github.com/Tw1sm/spraycharles
cd spraycharles
poetry install

致谢

  • @sprocket_ed 贡献了:多个喷射模块、许多使 Spraycharles 出色的功能以及相关的博客文章
  • @b17zr 贡献了 ntlm_challenger.py 脚本,该脚本包含在 utils 文件夹中
下载工具