hyperpolymath/safe-brute-force
GitHub: hyperpolymath/safe-brute-force
一款基于 Erlang/OTP 的受控暴力破解框架,将无序爆破转为可暂停、可审计的授权安全测试流程。
Stars: 1 | Forks: 0
# 🔒 SafeBruteForce
image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"]
// SPDX-License-Identifier: PMPL-1.0-or-later
// SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell
[](RSR_COMPLIANCE.md)
[](MAINTAINERS.md)
[![Erlang/OTP]()](https://www.erlang.org/)
[![LFE]()](https://lfe.io/)
[](.github/workflows/ci.yml)
[](.well-known/security.txt)
一个*受控的、道德的暴力破解工具*,专为授权的安全测试和渗透测试而设计。与传统暴力破解工具无差别地淹没系统不同,SafeBruteForce优先考虑安全性、用户控制和系统保护。
```
███████╗ █████╗ ███████╗███████╗ ██████╗ ███████╗
██╔════╝██╔══██╗██╔════╝██╔════╝ ██╔══██╗██╔════╝
███████╗███████║█████╗ █████╗ ██████╔╝█████╗
╚════██║██╔══██║██╔══╝ ██╔══╝ ██╔══██╗██╔══╝
███████║██║ ██║██║ ███████╗ ██████╔╝██║
╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝
SafeBruteForce v0.1.0 - Controlled Ethical Testing
⚠️ For Authorized Security Testing Only ⚠️
```
## 🔍 为什么要使用 SafeBruteForce?
传统暴力破解工具是*鲁莽的*:
- ❌ 无限制地向系统发送请求
- ❌ 导致账户锁定和服务中断
- ❌ 生成数百万行冗长输出
- ❌ 没有优雅的暂停或恢复能力
- ❌ 难以跟踪进度
SafeBruteForce*重新定义了暴力破解*,将其作为受控、可暂停的流程:
- ✅ *自动安全暂停*:每25次尝试后自动暂停
- ✅ *用户确认*:继续前需要用户确认
- ✅ *干净的过滤输出*:只显示重要的内容
- ✅ *检查点/恢复*:支持长时间操作
- ✅ *速率限制*:保护系统资源
- ✅ *进度跟踪*:包含ETA计算
- ✅ *并发架构*:基于Erlang/OTP
## 📦 功能
### 🛑 安全机制
- *自动暂停*:每25次尝试停止并要求用户确认
- *手动控制*:随时暂停、恢复和检查状态
- *速率限制*:令牌桶算法控制请求速率
- *授权检查*:CLI提示进行明确授权
- *审计日志*:全面的活动日志记录
### 🔧 模式生成
- *词表*:从文件加载并支持可选变异(Leet语、资本化)
- *字符集组合*:生成字符集的所有排列
- *顺序模式*:数字范围、日期、常见格式
- *自定义生成器*:实现自己的模式策略
- *内置配方*:PIN码、常见密码、十六进制颜色
### 🎯 目标支持
- *HTTP/HTTPS*:使用自定义头部和主体格式测试Web登录表单
- *自定义函数*:集成任何验证逻辑
- *模拟目标*:无需外部依赖即可测试功能
- *可扩展*:轻松添加新目标类型(SSH、FTP等)
### 📊 结果管理
- *过滤输出*:仅查看成功、失败或全部结果
- *统计面板*:尝试次数、成功率、耗时、每秒速率
- *导出能力*:将结果保存到文件进行分析
- *模式跟踪*:自动记录成功模式
### 🔄 操作功能
- *检查点*:自动保存和手动创建检查点
- *恢复能力*:从检查点恢复以继续中断的会话
- *进度跟踪*:带ETA的实时进度条
- *异步执行*:在后台运行操作
- *监督树*:OTP容错机制确保可靠性
## 🚀 快速开始
### 先决条件
```
= Erlang/OTP 26 or higher
= Ubuntu/Debian:
sudo apt-get install erlang
= macOS:
brew install erlang
= Rebar3 (build tool)
curl -O https://s3.amazonaws.com/rebar3/rebar3
chmod +x rebar3
sudo mv rebar3 /usr/local/bin/
```
### 安装
```
= Clone the repository
git clone https://github.com/Hyperpolymath/safe-brute-force.git
cd safe-brute-force
= Compile
rebar3 compile
= Run tests
rebar3 lfe test
```
### 快速入门
#### 交互式REPL(推荐)
```
rebar3 lfe repl
```
```
;; Start the application
> (sbf:start)
;; Test with a wordlist and custom function
> (sbf:test_wordlist "priv/wordlists/test-wordlist.txt"
(lambda (p) (== p "secret")))
;; Test HTTP login endpoint (replace with your authorized test system)
> (sbf:test_http "http://localhost:8080/login"
"admin"
"priv/wordlists/common-passwords.txt")
;; Test all 4-digit PIN codes
> (sbf:test_pins (lambda (pin) (validate-pin pin)))
;; Pause at any time
> (sbf:pause)
;; Check status
> (sbf:status)
;; Resume
> (sbf:resume)
;; Get detailed statistics
> (sbf:stats)
```
#### 命令行界面
```
= Make CLI executable
chmod +x sbf_cli
= Test with wordlist
./sbf_cli wordlist priv/wordlists/common-passwords.txt \
http://localhost/login admin
= Test PIN codes
./sbf_cli pins http://localhost/api/verify
= Generate charset combinations
./sbf_cli charset "abc123" 4 6 http://localhost
```
## 📖 使用示例
### 示例1:HTTP登录测试
```
(let ((pattern-config
(list (tuple 'type 'wordlist)
(tuple 'filename "passwords.txt")
(tuple 'mutations 'standard))) ; Apply mutations
(target-config
(list (tuple 'type 'http)
(tuple 'url "http://testsite.local/login")
(tuple 'method 'post)
(tuple 'username "admin")
(tuple 'username_field "user")
(tuple 'password_field "pass")
(tuple 'success_pattern "Welcome")
(tuple 'failure_pattern "Invalid"))))
(sbf:run pattern-config target-config))
```
### 示例2:PIN码测试
```
;; Test all 4-digit PINs with custom validator
(let ((validator
(lambda (pin)
;; Your PIN validation logic
(check-pin-against-system pin)))
(pattern-config
(list (tuple 'type 'charset)
(tuple 'charset "0123456789")
(tuple 'min_length 4)
(tuple 'max_length 4)))
(target-config
(list (tuple 'type 'function)
(tuple 'function validator))))
(sbf:run pattern-config target-config))
```
### 示例3:自定义模式生成
```
;; Company-specific password patterns
(let ((pattern-generator
(lambda ()
(let ((company "AcmeCorp")
(years (lists:seq 2020 2025)))
(lists:flatmap
(lambda (year)
(list (++ company (integer_to_list year))
(++ company "!" (integer_to_list year))))
years))))
(pattern-config
(list (tuple 'type 'custom)
(tuple 'function pattern-generator)))
(target-config
(list (tuple 'type 'http)
(tuple 'url "http://testsite.local/login")
(tuple 'username "testuser"))))
(sbf:run pattern-config target-config))
```
### 示例4:检查点管理
```
;; Start a long-running operation
> (sbf:run_async pattern-config target-config)
#Pid<0.234.0>
;; Save checkpoint
> (sbf:save_checkpoint 'my_session)
{ok, #{session => my_session, checkpoint_id => "my_session_1705334400_1234"}}
;; ... Later, restore from checkpoint ...
> (sbf:list_checkpoints)
[#{session => my_session, timestamp => 1705334400, ...}]
> (sbf:load_checkpoint "my_session_1705334400_1234")
{ok, #{state => ...}}
```
## 🏗️ 架构
SafeBruteForce基于*Erlang/OTP*原则构建,以实现健壮性和并发性:
```
┌─────────────────────────────────────────────────┐
│ sbf_app (Application) │
└───────────────────┬─────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ sbf_sup (Supervisor) │
│ ┌───────────────────┬──────────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ sbf_state sbf_executor (future) │
│ (gen_statem) (gen_server) │
└─────────────────────────────────────────────────┘
│ │
▼ ▼
State Machine Worker Pool
- running - Pattern execution
- paused - Rate limiting
- waiting - Result tracking
```
### 核心模块
- *sbf.lfe*:高级API和主要入口点
- *sbf_state.lfe*:状态机,用于暂停/恢复逻辑(gen_statem)
- *sbf_executor.lfe*:执行引擎,包含工作池(gen_server)
- *sbf_patterns.lfe*:模式生成策略
- *sbf_output.lfe*:结果过滤和格式化
- *sbf_checkpoint.lfe*:保存/恢复功能
- *sbf_logger.lfe*:结构化日志记录
- *sbf_progress.lfe*:进度跟踪和ETA
- *sbf_rate_limiter.lfe*:令牌桶速率限制
## ⚖️ 法律和道德使用
### ✅ 授权使用场景
- 带有*书面授权*的渗透测试
- CTF(夺旗赛)竞赛
- 对*自己拥有的系统*进行安全研究
- 控制环境中的教育演示
- 组织内部的密码策略验证
- 适当范围的红色团队演练
### ❌ 禁止使用场景
- 未经授权访问第三方系统
- 凭据填充或账户接管攻击
- 未经明确许可测试系统
- 恶意绕过安全控制
- 分布式大规模攻击
- 任何非法或不道德的活动
### 📋 法律合规
请注意适用管辖区域的法律:
- *CFAA(美国)*:计算机欺诈和滥用法案
- *GDPR(欧盟)*:数据保护条例
- *DMCA(美国)*:反规避条款
- *本地法律*:因国家和州而异
*⚠️ 重要*:违反这些法律可能导致刑事起诉和民事责任。始终在测试任何系统之前获得书面授权。
## 📚 文档
- *[使用指南](docs/USAGE.md)*:全面的使用说明
- *[安全最佳实践](docs/SECURITY.md)*:法律和道德指南
- *[贡献指南](docs/CONTRIBUTING.md)*:如何贡献
- *[CLAUDE.md](CLAUDE.md)*:AI助手开发指导
## 🧪 测试
```
= Run all tests
rebar3 lfe test
= Run with coverage
rebar3 lfe test --cover
= Run specific test module
rebar3 lfe test --module=sbf_patterns_tests
```
## 🗺️ 路线图
### v0.2.0(计划中)
- [ ] SSH暴力破解模块
- [ ] FTP支持
- [ ] 数据库连接测试
- [ ] 分布式工作支持
- [ ] Web UI仪表板
- [ ] 增强报告(PDF、HTML)
### v0.3.0(未来)
- [ ] 机器学习模式生成
- [ ] 云集成(AWS、GCP、Azure)
- [ ] SIEM集成
- [ ] 自定义插件系统
- [ ] 性能优化
我们欢迎贡献!请参考[CONTRIBUTING.md](docs/CONTRIBUTING.md)获取指南。
## 📜 许可
Palimpsest-MPL-1.0许可 - 详见[LICENSE](LICENSE)
*注意*:虽然软件是开源的,但用户有责任确保其使用符合所有适用的法律法规。
## ⚠️ 免责声明
SafeBruteForce是一个强大的安全测试工具。请负责任且道德地使用。
不当使用可能导致:
- 法律后果(刑事或民事)
- 账户暂停和锁定
- 服务中断
- 道德违规
- 损害职业声誉
*作者和贡献者不对该软件的滥用负责。*
## 🛡️ 安全第一
该项目坚持*“安全第一”*原则:
1. ✅ 自动暂停机制(无法完全禁用)
2. ✅ CLI中的授权验证
3. ✅ 默认速率限制
4. ✅ 全面的审计日志记录
5. ✅ 清晰的用户代理标识
6. ✅ 负责任披露指南
7. ✅ 道德使用文档
## 支持
- *文档*:查看`docs/`目录
- *问题*:[GitHub Issues](https://github.com/Hyperpolymath/safe-brute-force/issues)
- *讨论*:[GitHub Discussions](https://github.com/Hyperpolymath/safe-brute-force/discussions)
- *安全*:请参考[SECURITY.md](docs/SECURITY.md)以获取负责任披露信息
## 🙏 感谢
- *LFE社区*:感谢出色的Lisp Flavored Erlang
- *Erlang/OTP*:感谢健壮的并发平台
- *安全研究人员*:感谢道德黑客实践
- *贡献者*:所有帮助改进此工具的人
## 许可
Palimpsest License (PMPL-1.0)
2025 Jonathan D.A. Jewell
标签:Erlang, GitHub Actions, GitLab CI, LFE, OTP, PoC, RFC 9116, RSR合规, security.txt, TPCF社区, 伦理黑客, 反取证, 受控暴力, 合规测试, 安全测试, 安全评估, 开源安全工具, 开源框架, 持续集成, 授权测试, 攻击性安全, 暴力破解, 系统独立性, 自动笔记, 许可PMPL-1.0, 边界控制, 逆向工程平台, 防护测试