unclesp1d3r/CipherSwarm
GitHub: unclesp1d3r/CipherSwarm
分布式哈希破解管理平台,通过 Web 界面调度多节点并行执行 hashcat 任务
Stars: 2 | Forks: 2
# CipherSwarm
[](https://github.com/unclesp1d3r/CipherSwarm/blob/main/LICENSE) [](https://github.com/unclesp1d3r/CipherSwarm/issues) [](https://github.com/unclesp1d3r/CipherSwarm/graphs/commit-activity)  [](https://wakatime.com/badge/github/unclesp1d3r/CipherSwarm)
[](https://codeclimate.com/github/unclesp1d3r/CipherSwarm/maintainability) [](https://codeclimate.com/github/unclesp1d3r/CipherSwarm/test_coverage)
CipherSwarm 是一个分布式哈希破解系统,专为效率和可扩展性设计,基于 Ruby on Rails 构建。受 Hashtopolis 原则的启发,CipherSwarm 利用协作计算的力量来应对复杂的密码学挑战,提供了一个基于 Web 的界面,用于管理和跨多个节点分发哈希破解任务。
## 🚀 CipherSwarm V2 升级
CipherSwarm 目前正在进行全面的 V2 升级,将平台从一个功能工具转变为现代化、用户友好的分布式密码破解平台。此次升级在保持现有 Ruby on Rails + Hotwire 技术栈的同时,还提供了:
- **增强的用户体验**:实时仪表板、引导式工作流和直观的界面
- **高级协作**:具有基于角色的访问控制的多用户协调
- **智能自动化**:智能任务分发和依赖管理
- **企业级功能**:生产就绪的部署、全面的监控和分析
有关 V2 升级的详细信息,请参阅 [V2 升级概述](docs/v2-upgrade-overview.md)。
## 目录
- [CipherSwarm](#cipherswarm)
- [🚀 CipherSwarm V2 升级](#%F0%9F%9A%80-cipherswarm-v2-upgrade)
- [目录](#table-of-contents)
- [功能特性](#features)
- [入门指南](#getting-started)
- [使用说明](#usage)
- [架构设计](#architecture)
- [文档](#documentation-1)
- [贡献指南](#contributing)
- [致谢](#acknowledgments)
## 功能特性
### 当前 V1 功能
- 通过 Web 界面管理分布式哈希破解任务
- 可扩展的架构,可跨多个 Agent 高效分发工作负载
- 集成 hashcat,提供多样化的哈希破解能力
- 活动和攻击管理,支持基于优先级的执行
- 基于项目的多租户,具有基于角色的访问控制
### 即将推出的 V2 功能
- **实时操作仪表板**:实时 Agent 监控、活动进度和破解结果流
- **增强的活动管理**:带有基于 DAG 的攻击依赖关系的引导式向导
- **高级 Agent 管理**:基于 Agent 能力的智能任务分发
- **全面的分析**:密码模式分析和安全洞察
- **团队协作**:活动流、评论和项目协调
- **生产就绪的部署**:容器化部署,支持 nginx 负载均衡、水平扩展、监控和多副本支持
有关完整的功能详情,请参阅 [V2 升级概述](docs/v2-upgrade-overview.md)。
## 入门指南
### 前置条件
- Ruby 3.4.5(由 rbenv 管理)
- Rails 8.1+
- PostgreSQL 17+(主数据库)
- Redis 7.2+(用于缓存、Action Cable 和 Sidekiq 任务处理)
- [Just](https://github.com/casey/just) 任务运行器(可选但推荐)
### 安装说明
1. 将仓库克隆到本地机器:
git clone https://github.com/unclesp1d3r/CipherSwarm.git
cd CipherSwarm
2. 安装依赖项并设置数据库:
使用 Just(推荐):
just setup
或手动执行:
bundle install
bun install
rails db:create
rails db:migrate
3. 启动开发服务器:
使用 Just:
just dev
或手动执行:
bin/dev
这将启动 Rails、资源编译和 Sidekiq 工作进程。
4. 通过 访问应用程序
#### 使用 Just 快速入门
CipherSwarm 包含一个 `justfile` 用于常见的开发任务。查看所有可用命令:
```
just --list
```
常用命令:
- `just setup` - 安装依赖项并设置数据库
- `just dev` - 启动完整的开发环境
- `just test` - 运行所有测试并生成覆盖率报告
- `just check` - 运行代码检查和安全检查
- `just db-reset` - 重置数据库
### 系统测试(UI/UX 测试)
CipherSwarm 包含使用 Capybara 和 Selenium WebDriver 实现的全面 UI 测试。这些测试为关键用户工作流提供了端到端的覆盖:
- **身份验证**:登录、密码重置、账户管理
- **Agent 管理**:创建、编辑、删除 Agent 并进行权限检查
- **活动和攻击工作流**:创建活动、添加攻击、管理嵌套资源
- **文件上传操作**:哈希列表、词表和其他使用 Active Storage 的文件资源
- **管理员用户管理**:用户创建、锁定/解锁、角色管理
- **导航和授权**:导航栏、侧边栏、访问控制验证
- **错误处理**:验证错误、授权错误、错误页面
#### 运行系统测试
```
# 运行所有系统测试
bundle exec rspec spec/system
# 运行特定测试目录
bundle exec rspec spec/system/agents
# 运行可见浏览器进行调试
HEADLESS=false bundle exec rspec spec/system
```
#### 文档
有关编写和维护系统测试的详细信息,请参阅 [系统测试指南](docs/testing/system-tests-guide.md)。
测试套件使用 **页面对象模式(Page Object Pattern)** 以提高可维护性,页面对象位于 `spec/support/page_objects/`。测试失败时会自动捕获屏幕截图并保存到 `tmp/capybara/`。
#### CI/CD
系统测试作为测试套件的一部分在 GitHub Actions 中自动运行。测试结果和失败测试的屏幕截图可作为构件(artifacts)获取。
有关完整的命令文档,请参见 `.kiro/steering/justfile.md`。
### Docker 安装
启动并运行 CipherSwarm 最快的方法是使用 Docker。以下步骤将指导您完成该过程:
1. 将仓库克隆到本地机器:
git clone https://github.com/unclesp1d3r/CipherSwarm.git
cd CipherSwarm
2. 部署 Docker 容器:
docker compose -f docker-compose-production.yml up
3. 通过 访问 CipherSwarm Web 界面。
4. 使用默认管理员凭据(用户名:admin,密码:password)登录,并立即更改密码。
对于具有多个 Agent 的生产部署,请参阅 [生产负载均衡指南](docs/deployment/production-load-balancing.md) 以了解水平扩展配置。
### 项目假设与目标受众
CipherSwarm 虽然执行的功能与 Hashtopolis 相似,但并不是后者的重制版。这是一个独特的项目,构思时有特定的目标受众,并受几个指导性假设的塑造:
1. **破解工具**:CipherSwarm 仅支持 Hashcat 作为破解工具。
2. **连接性**:假设所有连接到 CipherSwarm 的客户端都使用可靠的高速连接,通常是在局域网(LAN)环境中。
3. **信任级别**:CipherSwarm 假设所有客户端机器都是可信的,并且由使用 CipherSwarm 的用户直接控制和管理。
4. **用户群**:该系统假设用户虽然具有不同级别的管理访问权限,但属于同一组织或项目团队,从而确保一定程度的信任和共同目标。
5. **哈希列表管理**:CipherSwarm 旨在处理源自各种项目或操作的哈希列表。根据访问权限,它允许用户查看特定项目或所有项目的结果。
6. **客户端-项目关联**:破解客户端可以与特定项目相关联,仅执行该项目的操作。或者,它们可以跨所有项目执行操作,并对特定项目定义优先级。
CipherSwarm 专为通过高速网络互连的中大型破解基础设施而设计。它不支持通过互联网使用,也不支持与作为破解客户端的匿名用户系统集成。通过专注于安全、集中和高性能的环境,CipherSwarm 提供了量身定制的可扩展性和效率,以满足复杂破解操作的需求。
## 使用说明
1. 通过 访问 CipherSwarm Web 界面。
2. 使用默认管理员凭据(用户名:admin,密码:password)登录,并立即更改密码。
3. 通过界面将节点添加到您的网络。
4. 创建新的破解任务,指定哈希类型和输入文件。
5. 通过仪表板实时监控任务进度。
## 架构设计
CipherSwarm 建立在现代化的 Rails 8.1+ 架构之上,具有清晰的关注点分离和面向服务的模式。该系统遵循 Rails 约定,同时实施了分布式密码破解管理系统。
### 系统架构
应用程序使用单体 Rails 架构,包含以下层级:
- **Web 界面层**:使用 Hotwire(Turbo + Stimulus)的控制器、视图和 ViewComponents
- **服务层**:业务逻辑、状态管理和验证服务
- **模型层**:具有关联和验证的 ActiveRecord 模型
- **数据层**:PostgreSQL 17+ 数据库,使用 Redis 进行缓存和后台任务
### 身份验证与授权
- **Web UI**:Rails 8 内置身份验证,使用安全的会话 cookies
- **Agent API**:用于分布式 Agent 的 Bearer 令牌身份验证
- **授权**:基于项目的多租户,具有基于角色的访问控制
### 关键技术
- **Ruby 3.4.5** 与 **Rails 8.1+**
- **PostgreSQL 17+** 用于主数据存储
- **Redis 7.2+** 用于缓存、Action Cable 和 Sidekiq 任务处理
- **Hotwire**(Turbo + Stimulus)用于交互式前端
- **ViewComponent** 用于可复用的 UI 组件
- **Sidekiq** 用于后台任务处理
### 数据概念
在 CipherSwarm 系统中,hashcat 破解任务围绕四个核心对象进行管理:活动、攻击、模板和任务。理解这些对象及其相互关系对于有效利用系统进行分布式哈希破解至关重要。
#### 活动
活动代表围绕单个哈希列表的综合工作单元。每个活动旨在实现特定目标,例如从一组哈希中恢复密码。一个活动可能包含多个攻击,每个攻击都针对该活动的哈希列表,采用不同的策略或参数运行。活动有助于组织和确定攻击的优先级,允许根据优先级或有效性进行顺序执行。
#### 攻击
攻击是一个由其攻击类型及其使用的词表和规则定义的 hashcat 工作单元。攻击体现了一种特定的哈希破解方法,例如暴力破解或字典攻击,包含所有必要的参数。大型攻击可以细分为任务,以便在多个 Agent 之间分配工作负载,从而实现并行处理并加快破解过程。
#### 模板
模板作为攻击的可复制定义。它指定了攻击类型和参数(如词表和规则),但不绑定到特定的哈希列表。模板允许通过将预定义的策略集应用于不同的哈希列表和类型来快速配置新攻击。这种抽象有助于快速适应新的破解挑战,而无需从头开始重新配置。
#### 任务
任务是系统中最小的工作单元,代表单个 Agent 在任何给定时间负责处理的攻击片段。任务是分发到网络中 Agent 的基本工作包,允许将较大的攻击划分为可管理的片段。这种划分不仅通过并行处理提高了效率,还允许在网络中的 Agent 之间进行动态负载均衡。
## 文档
[docs/](docs/) 目录中提供了全面的文档:
**快速链接:**
- [入门指南](docs/user-guide/getting-started.md) - 首次设置和您的第一个活动
- [用户指南](docs/user-guide/README.md) - 所有功能的综合用户文档
- [故障排除](docs/user-guide/troubleshooting.md) - 系统诊断和常见解决方案
**参考:**
- [V2 升级概述](docs/v2-upgrade-overview.md) - V2 升级的完整概述
- [API 参考](docs/api-reference-agent-auth.md) - Agent API 文档
- [开发指南](docs/development/) - 开发和贡献指南
- [离线环境部署](docs/user-guide/air-gapped-deployment.md) - 在隔离环境中部署
## 贡献指南
我们欢迎社区的贡献!请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 文件以获取参与指南。
## 致谢
- 我们要感谢 [Hashtopolis](https://github.com/hashtopolis/server) 团队对我们的启发以及提供的 [Hashtopolis 通信协议 v2](https://github.com/hashtopolis/server/blob/master/doc/protocol.pdf) 文档。
- 我们真诚地感谢 [Hashcat](https://github.com/hashcat/hashcat) 提供了令人难以置信的破解工具。
- 感谢 Ruby on Rails 社区的指导。
- 特别感谢我们的 [贡献者](https://github.com/unclesp1d3r/CipherSwarm/graphs/contributors) 提供的宝贵意见和反馈。
标签:DOS头擦除, Hashtopolis替代, Hotwire, PoC, Ruby on Rails, WSL, 代码生成, 仪表盘, 任务调度, 内存转储, 分布式计算, 协作计算, 子域名枚举, 密码学, 密码审计, 密码破解, 开源安全工具, 异常处理, 手动系统调用, 批量扫描, 提示注入, 搜索引擎查询, 暴力破解, 测试用例, 渗透测试工具, 系统安全, 网络安全, 请求拦截, 逆向工程平台, 隐私保护, 集群管理, 高可用性