CipherSwarm is a distributed password cracking management system designed for efficiency, scalability, and airgapped networks. It coordinates multiple hashcat instances across different machines to efficiently crack password hashes using various attack strategies, with a modern web interface and robust API.
Important
V2 Migration Status
CipherSwarm has migrated to v2 development on the main
branch. This is the active development preview with modern FastAPI backend and SvelteKit frontend, but is not yet stable for production use.
main
branch: Active v2 development (unstable, preview)v1-archive
branch: Stable v1 production version
All new contributions should target the main
branch for v2 development.
- Distributed hash-cracking tasks managed through a user-friendly web interface
- Scalable architecture to efficiently distribute workloads across a network of computers
- Integration with hashcat for versatile hash cracking capabilities
- Real-time monitoring of task progress and comprehensive result reporting
- Secure, easy-to-use system for both setup and operation
- Modern SvelteKit-powered web UI with Flowbite Svelte and DaisyUI
- RESTful API (OpenAPI 3.0.1)
- Airgap and LAN support
- Python 3.13 or higher
- PostgreSQL 16 or higher
- hashcat
- uv (Python package installer)
- just (recommended for all developer tasks)
-
Clone the repository:
git clone https://github.com/unclesp1d3r/CipherSwarm.git cd CipherSwarm
-
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies and set up pre-commit hooks:
just install
-
Set up the environment variables:
cp .env.example .env # Edit .env with your configuration
-
Initialize the database and start the development server:
just dev
The quickest way to get CipherSwarm up and running is to use Docker Compose:
-
Clone the repository:
git clone https://github.com/unclesp1d3r/CipherSwarm.git cd CipherSwarm
-
Deploy the Docker containers:
docker compose -f docker-compose.dev.yml up
-
Access the CipherSwarm web interface at http://localhost:8000.
CipherSwarm is designed for medium to large-scale cracking infrastructure, interconnected via high-speed networks. It assumes:
- Cracking Tool: Only Hashcat is currently supported.
- Connectivity: All clients use reliable, high-speed LAN connections.
- Trust Level: All client machines are trustworthy and under direct user control.
- User Base: Users belong to the same organization or project team.
- Hashlist Management: Handles hash lists from various projects/operations, with access control.
- Client-Project Affiliation: Clients can be project-specific or shared, with defined priorities.
CipherSwarm is not intended for use over the Internet or with anonymous clients.
- Access the CipherSwarm web interface at http://localhost:8000.
- Log in with your credentials (admin user setup required on first run).
- Add agents/nodes to your network through the interface.
- Create new cracking campaigns and attacks, specifying hash types and input files.
- Monitor the progress of your tasks in real-time through the dashboard.
CipherSwarm is built on a modular architecture that separates task management, agent communication, and hash-cracking processes. This design allows for easy scaling and customization.
CipherSwarm manages hashcat cracking jobs around several core objects:
- Campaigns: A comprehensive unit of work focused on a single hash list. Each campaign may encompass multiple attacks, each with different strategies or parameters.
- Attacks: A defined unit of hashcat work (mode, wordlist, rules, etc.). Large attacks can be subdivided into tasks for parallel processing across agents.
- Templates: In CipherSwarm, templates are implemented as reusable attack definitions. This is achieved by allowing an Attack to reference another Attack as its template via the
template_id
field. There is no separate Template model; instead, any attack can serve as a template for others. - Tasks: The smallest unit of work, representing a segment of an attack assigned to an agent. Tasks enable parallel processing and dynamic load balancing.
- Agents: Registered clients capable of executing tasks, reporting benchmarks, and maintaining a heartbeat.
- HashLists: Sets of hashes targeted by campaigns. Each campaign is linked to one hash list, but a hash list may be reused across campaigns.
- Other Entities: CrackResults, AgentErrors, Sessions, Audits, and Users, each supporting the distributed cracking workflow and security model.
CipherSwarm uses just
for all common developer tasks. The most important commands are:
- Setup & Install:
just install
— Install Python/JS dependencies and pre-commit hooks
- Development Server:
just dev
— Run DB migrations and start the FastAPI dev server with hot reload
- Linting & Formatting:
just check
— Run all code and commit checksjust format
— Auto-format code with ruffjust format-check
— Check formatting only
- Testing & Coverage:
just test
— Run the full test suite with coveragejust ci-check
— Run formatting, lint, and all tests (CI equivalent)just coverage
— Show coverage report
- Docs:
just docs
— Run the local docs server (MkDocs)just docs-test
— Build docs for test
- Database (test DB):
just db-reset
— Drop, recreate, and migrate the test database
Tip: Run
just
orjust --summary
to see all available tasks.
- Backend: FastAPI (Python 3.13+)
- Frontend: SvelteKit + JSON API + Shadcn Svelte
- Database: PostgreSQL
- ORM: SQLAlchemy
- Authentication: Bearer Token
- API Documentation: OpenAPI 3.0.1
- Swagger UI:
http://localhost:8000/docs
- ReDoc:
http://localhost:8000/redoc
CipherSwarm has comprehensive test coverage with 712+ tests across unit, integration, and contract testing layers.
To run the full test suite:
just test
To run all checks (formatting, lint, tests — as in CI):
just ci-check
To see a coverage report:
just coverage
- Unit Tests (106 files): Service layer and component testing
- Integration Tests (36 files): API endpoint and cross-component testing
- Contract Tests: Agent API v1 compliance validation against OpenAPI spec
- Coverage: 80%+ across all modules with comprehensive reporting
For detailed testing information, see Testing Guide.
We welcome contributions from the community! Please refer to the CONTRIBUTING.md file for guidelines on how to get involved.
- Thanks to the Hashtopolis team for inspiration and protocol documentation.
- Thanks to Hashcat for their incredible cracking tool.
- Thanks to the Python, FastAPI, and open source communities.
- Special thanks to all contributors for their valuable input and feedback.
This project is licensed under the Mozilla Public License Version 2.0 - see the LICENSE file for details.
Built with ❤️ by the CipherSwarm team