user0x1337/htb-operator

GitHub: user0x1337/htb-operator

htb-operator 是一款非官方的 Hack The Box 命令行工具,通过自动化 API 交互帮助用户高效管理靶机实例、VPN 连接、flag 提交等日常工作流。

Stars: 50 | Forks: 7

# HTB-Operator - Hack The Box 的 CLI Bild ![GitHub 标签](https://img.shields.io/github/v/tag/user0x1337/htb-operator) ![GitHub 发布](https://img.shields.io/github/v/release/user0x1337/htb-operator) ![GitHub 仓库星标](https://img.shields.io/github/stars/user0x1337/htb-operator)
Tests


OS
current version
current version
current version

Architecture
amd64
arm64

Misc
current version
current version

### Hack The Box 工作流的非官方 CLI 自动化工具 HTB-Operator 由 [user0x1337](https://github.com/user0x1337) 开发和维护。它与流行的网络安全培训平台 [Hack The Box](https://www.hackthebox.com/) API 交互。其主要目标是节省使用 HTB 的时间。 current version # Windows 上的限制 Windows 具有特定于平台的限制,因此并非所有功能都受支持。 不支持的功能/命令: - VPN 启动和停止 # 安装 HTB-Operator 使用 Python 编写。通常,它可以在任何安装了 Python 的操作系统上运行。它主要在 Linux (Kali, Ubuntu) 上进行了测试,目前在 Windows 上存在一些限制。 强烈建议使用虚拟环境。使用 [pipx](https://pipx.pypa.io/latest/)(它会自动创建隔离的 Python 环境)来安装 `htb-operator`: ``` pipx install htb-operator ``` # 配置 你需要一个 HTB API token: 1. 访问:[https://app.hackthebox.com/account-settings](https://app.hackthebox.com/account-settings) 2. 点击 **Create App Token**。 image 3. 创建 token。 image 4. 保存 token。 image 5. 运行: ``` htb-operator init -api YOUR_API_TOKEN ``` API token(及其他设置)本地存储在: - Linux: `$HOME/.config/htb-operator/config.ini` - Windows: `%APPDATA%\htb-operator\config.ini` # 安全提示 HTB-Operator 是一款非官方的命令行工具,用于自动化合法的 Hack The Box 工作流。它仅适用于在你自己的 Hack The Box 账户和授权的 HTB 实验室环境中使用。 该工具会在用户的配置目录中存储本地配置值,包括 HTB API token。请对此文件保密,切勿将 API token、VPN 文件、日志、flag、配置文件或与挑战相关的密钥提交到公开仓库。 某些功能可能需要提升权限,例如启动或停止 VPN 连接,或修改本地 hosts 文件。在执行前请仔细检查这些操作。 自动化功能(如自定义脚本)在你的系统本地执行。仅运行你理解并信任的脚本。 HTB-Operator 不隶属于 Hack The Box,也未获得其认可或官方支持。 # 命令 该工具是基于命令的。你可以在任何层级使用 `-h` 或 `--help` 来显示帮助信息。当你在不带参数的情况下运行程序时,会显示顶层命令: ``` htb-operator ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/2e40165445145246.png) # 初始化 `init` 应该是你运行的第一个命令。如上所述,使用它来注册你的 API token: ``` htb-operator init -api YOUR_API_TOKEN ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ff6d6dcc2b145315.png) `init` 也支持备用 HTB API URL。仅在谨慎且 HTB 更改 API URL 时才使用此项。 # 信息 `info` 命令获取用户信息。如果未指定用户,它会显示已认证用户的信息。 ``` htb-operator info ``` ### `-s` / `--username` 使用 `-s USERNAME` 或 `--username USERNAME`,你可以显示 `USERNAME` 的个人资料。示例: ``` htb-operator info -s HTBBot ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6c08405aa9145324.png) ### `-a` / `--activity` 默认情况下,活动限制为最近的 20 条记录。使用 `-a` 或 `--activity` 显示完整的活动历史记录。 ``` htb-operator info -a ``` `-s` / `--username` 也可以与此标志一起使用: ``` htb-operator info -a -s HTBBot ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/21875840d9145332.png) # 证书 你可以列出或下载已获得的结业证书。 ### `-l` / `--list` 列出所有已获得的结业证书: ``` htb-operator certificate --list ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b15cc28d26145344.png) ### 下载 使用 `download` 子命令,你可以下载证书。使用 `--id` 指定证书 ID(例如,来自 `--list`),并使用 `-f` / `--filename` 设置目标路径和文件名。 ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/5ffa7d19d6145354.png) # 机器 `machine` 命令提供了用于列出靶机、显示详细信息以及启动、停止或重置靶机的子命令。 ## 列表 列出活动靶机和已封存靶机。你可以添加过滤标志来优化输出。使用 `htb-operator machine list -h` 查看可用标志。 ``` htb-operator machine list ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6c71d0dd61145400.png) 即将封存的活动靶机被标记为 `✘/✔`。 ### `--limit` 默认情况下,显示最近的 20 台靶机。使用 `--limit ` 更改此值。示例: ``` htb-operator machine list --limit 10 ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b307890c5e145405.png) ### `--retired` 如果设置了 `--retired`,则仅显示已封存的靶机。 ``` htb-operator machine list --retired ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/8e2a74f883145413.png) ### `--active` 如果设置了 `--active`,则仅显示活动靶机。 ``` htb-operator machine list --active ``` ### `--group-by-os` 更改结果集的分组方式。输出不再按 `Retired` 和 `Active` 分组,而是按操作系统分组。 ``` htb-operator machine list --group-by-os ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/78cf9b96d5145421.png) ## 启动 启动靶机实例。如果另一台靶机已在运行,系统会询问你是否在启动新靶机之前停止它。请指定 `--id` 或 `--name`。 ``` htb-operator machine start --id 620 ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a356b819d7145434.png) ### `--start-vpn` 如果设置,将根据配置的 VPN 服务器自动建立 VPN 连接。此操作需要 **root/sudo/admin** 权限。在 Linux 上,系统会提示你输入 sudo 密码。 ``` htb-operator machine start --id 620 --start-vpn ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/88d54dd57f145439.png) ### `--update-hosts-file` 如果设置,将更新 `/etc/hosts` (Linux) 或 `/drivers/etc/hosts` (Windows,未经测试) 中的 hosts 文件。系统会添加靶机主机名加上后缀 `htb`(例如 `HOSTNAME.htb`)以及分配的 IP 地址。此操作需要 **root/sudo/admin** 权限。在 Linux 上,系统会提示你输入 sudo 密码。 ``` htb-operator machine start --id 620 --update-hosts-file ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4b3aa97a2d145449.png) ### `--wait-for-release` 仅适用于已计划发布的靶机。启动会暂停,直到靶机到达其发布日期/时间并对整个社区开放可用。如果你想争夺一血 (first blood),这会很有用。 ``` htb-operator machine start --id 620 --wait-for-release ``` ### `--script ` 在完成所有先前步骤(例如 IP 分配和可选的 VPN 设置)后,执行自定义 Bash 脚本。`htb-operator` 会设置这些环境变量: - `$HTB_MACHINE_IP` -> 分配的 IP - `$HTB_MACHINE_NAME` -> 靶机名称(例如 `Sea`) - `$HTB_MACHINE_OS` -> 靶机操作系统 (`Linux`, `Windows`, `FreeBSD`, ...) - `$HTB_MACHINE_DIFFICULTY` -> 靶机难度(例如 `Easy`) - `$HTB_MACHINE_INFO` -> HTB 提供的信息 - `$HTB_MACHINE_HOSTNAME` -> 主机名(例如 `sea.htb`) #### 示例 示例脚本: ``` #!/usr/bin/bash echo "Starting script, assigned IP $HTB_MACHINE_IP and hostname $HTB_MACHINE_HOSTNAME" nmap "$HTB_MACHINE_HOSTNAME" -p 80 --open ``` 命令(可以组合标志以实现自动化): ``` htb-operator machine start --id 620 --script /tmp/example.sh --start-vpn --update-hosts-file ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/98fb82d151145501.png) 在此示例中,由于 VPN 连接已在运行,因此出现了警告。这是提示信息,通常可以忽略。 ## 停止 停止当前活动的靶机。 ``` htb-operator machine stop ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4a6d30a373145513.png) ### `--stop-vpn` 停止靶机后,停止所有正在运行的 HTB VPN 连接。此操作需要 **root/sudo/admin** 权限。在 Linux 上,系统会提示你输入 sudo 密码。 ``` htb-operator machine stop --stop-vpn ``` ### `--clean-hosts-file` 从你的 hosts 文件中删除与靶机名称匹配的主机名。此操作需要 **root/sudo/admin** 权限。在 Linux 上,系统会提示你输入 sudo 密码。 ``` htb-operator machine stop --clean-hosts-file ``` ### 示例 你可以组合上面显示的 `stop` 标志: ``` htb-operator machine stop --stop-vpn --clean-hosts-file ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b309f9b043145526.png) ## 重置 重置当前活动的靶机。 ``` htb-operator machine reset ``` ### `--update-hosts-file` 更新 hosts 文件,其工作方式与 `machine start --update-hosts-file` 完全相同。 ``` htb-operator machine reset --update-hosts-file ``` ## 延长 延长靶机的到期时间。 ``` htb-operator machine extend ``` ## 状态 返回有关当前活动靶机的信息。 ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/9f46feec9f145538.png) ## 信息 显示有关通过 `--id` 或 `--name` 指定的靶机的详细信息。 ``` htb-operator machine info --id 620 ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/34f41ee114145548.png) ## 提交 提交当前活动靶机的 flag。使用 `--user-flag` 提交普通用户 flag,使用 `--root-flag` 提交 root flag。你还需要使用 `-d` 来进行难度评分(从 `1` = `Piece of Cake` 到 `10` = `Brainfuck`)。 ``` htb-operator machine submit --user-flag -d ``` ## ssh-grab 建立到目标主机的 SSH 连接。然后尝试从 `/home/USERNAME/user.txt` (非 root 用户) 或 `/root/root.txt` (root 用户) 读取 flag,并将其提交给 HTB 以用于当前活动的靶机。你还需要使用 `-d` 提供难度评分(从 `1` = `Piece of Cake` 到 `10` = `Brainfuck`)。 ``` htb-operator machine ssh-grab -u -p -i -d ``` # 挑战 `challenge` 命令提供了用于列出挑战、显示详细信息、下载文件/writeup、启动挑战实例以及提交 flag 的子命令。示例:下载文件、解压并使用单条命令启动实例: ``` htb-operator challenge download --name "Hunting License" --unzip -s ``` ## 搜索 使用 `search` 查找包含搜索词的挑战。`--name` 是必需的。 _BLOCK_31/> ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b0f2e353fd145601.png) ### `--unsolved` 仅显示未解决的挑战。如果同时提供了 `--solved` 和 `--unsolved`,则返回未解决的挑战。 ### `--solved` 仅显示已解决的挑战。如果同时提供了 `--solved` 和 `--unsolved`,则返回未解决的挑战。 ### `--todo` 仅显示设置了 `TODO` 标志的挑战。 ### `--category` 仅显示指定类别的挑战。你可以提供多个用逗号分隔的类别。示例: ``` htb-operator challenge search --name Spook --category Web,Crypto,Pwn ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/22457129e4145613.png) ### `--difficulty` 仅显示符合指定难度的挑战。 # Prolabs `prolabs` 命令提供了用于列出所有 ProLabs 以及获取特定 ProLab 详细信息的子命令。 ## 列表 列出所有 ProLabs。 ``` htb-operator prolabs list ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6358421588145627.png) ## 信息 获取有关通过 `--id` 或 `--name` 指定的 ProLab 的详细信息。 ``` htb-operator prolabs info --name APTLabs ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d585a1bc2f145640.png) `info` 已经包含了 ProLab 的 flag 和靶机。要进行专注于特定内容的查看,请使用以下专用子命令: ## flags 仅列出 ProLab 的 flag。 ``` htb-operator prolabs flags --name APTLabs ``` ## 机器 仅列出 ProLab 的靶机。 ``` htb-operator prolabs machines --name APTLabs ``` ## 进度 显示归属/证书进度以及里程碑状态。 ``` htb-operator prolabs progress --name APTLabs ``` ## changelog 显示 ProLab 的更新日志记录。默认情况下,显示最新的 20 条记录。 ``` htb-operator prolabs changelog --name APTLabs --limit 20 ``` ## 重置状态 显示重置状态以及上次重置的时间戳(如果有)。 ``` htb-operator prolabs reset-status --name APTLabs ``` ## 提交 使用 `submit` 提交 ProLab 的 flag。示例: ``` htb-operator prolabs submit --name "PROLAB" --flag 'HTB{FAKE_FLAG}' ``` # VPN **在 Windows 上不起作用。** 你可以启动和停止 HTB VPN 连接、查看 VPN 状态、下载 OpenVPN 文件,并针对所有或选定的 VPN 服务器运行基准测试。 ## 列表 列出 VPN 服务器。你可以按位置或服务器类型(实验室、prolabs 等)进行筛选。标志可以组合使用。使用帮助命令获取详细信息。 ``` htb-operator vpn list --location US ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/aee675f712145652.png) ## 下载 下载给定 VPN 服务器 ID 的 OpenVPN 文件。你可以从 `list` 子命令中获取该 ID。使用帮助命令获取详细信息。 ``` htb-operator vpn download --id --path /tmp/test.ovpn ``` ## 启动 启动给定服务器的 VPN 连接。如果未分配区域或“VPN Access”(由 HTB 定义),`htb-operator` 会在请求确认后尝试切换到相应的“VPN Access”。此操作需要 root/admin 权限。 ``` htb-operator vpn start --id 35 ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/227958acfc145705.png) ## 停止 停止所有正在运行的 HTB VPN 连接。此操作需要 root/admin 权限。 ``` htb-operator vpn stop ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/22066780a4145721.png) ## 切换 切换可访问的 VPN 服务器。使用 `--id` 指定目标服务器。 ``` htb-operator vpn switch --id 28 ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/467f8738c7145733.png) ## benchmark 对所有 VPN 服务器或选定的子集运行基准测试。使用帮助命令来细化测试集。这可能需要耗费大量时间,具体取决于你的互联网连接和测试规模。 ``` htb-operator vpn benchmark --only-accessible ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/78bb6321d6145746.png) # Seasons 你可以使用 `list` 子命令显示当前或过去赛季的结果。使用 `info` 获取更多详细信息。 ``` htb-operator seasons list ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/de60f523f4145800.png) ## 信息 `info` 子命令提供 `--ids` 以仅显示选定的赛季。它还支持 `--username` 以查看其他用户的结果。你可以组合使用 `--ids` 和 `--username`。 ``` htb-operator seasons info --username HTBBot ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ea4ed89492145812.png) # 徽章 你可以使用 `badge list` 显示所有 HTB 徽章。 ``` htb-operator badge list ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/9cee85883d145822.png) 你还可以使用 `--open` 筛选未解锁的徽章(尚未获得的徽章)。使用 `--category` 按类别筛选。你还可以使用 `--username` 显示其他用户的徽章状态。标志可以组合使用。 ``` htb-operator badge list --username HTBBot --category Rank,Challenge ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0f020d8d99145832.png) # Pwnbox 如果你有一个正在运行的 Pwnbox 实例,你可以检查状态、无需手动处理凭据即可建立 SSH 连接、在默认浏览器中打开 Pwnbox 桌面,或者终止正在运行的实例。由于 HTB 实现的限制,目前无法通过 `htb-operator` 启动新的 Pwnbox 实例。 ## 状态 读取正在运行的 Pwnbox 实例的状态。 ``` htb-operator pwnbox status ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a31fc662b4145842.png) ## ssh **在 Windows 上不起作用。** 建立到正在运行的 Pwnbox 实例的 SSH 连接。你的系统上必须安装 `sshpass`。 ``` htb-operator pwnbox ssh ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6f93ba8f19145854.png) ## 打开 在默认浏览器中打开 Pwnbox 桌面。 ``` htb-operator pwnbox open ``` ## 终止 终止正在运行的 Pwnbox 实例。 ``` htb-operator pwnbox terminate ``` ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0665bea771145858.png)
标签:Blue Team, Python, 应用安全, 效率工具, 无后门, 网络安全训练, 网络调试, 自动化, 逆向工具