MD5Cracker: A Scalable Distributed Password Recovery System
Introduction
Distributed systems offer improved performance, scalability, and fault tolerance. This project explores a distributed system designed to crack MD5 hashes for 5-character alphabetical passwords using a brute force approach.
Problem Statement and Learning Outcomes
The primary goals of the project were to:
- Create a scalable distributed system for cracking MD5 hashes
- Distribute workload among multiple worker nodes
- Provide insights into:
- Distributed system implementation
- REST API design
- Single-page application deployment
- SSH tunneling
- Client-server connection maintenance
Design and Setup
The system architecture features:
- Server-client interaction model
- Resources from the GENI network
- React frontend deployed on the web
- Password cracker server running on GENI
Execution and Results
Technical Setup
- Python 3.7
- Flask 2.2.2
- Ngrok
- 1 server and 10 clients on a GENI slice
Metrics and Analysis
The experiment was run 50 times, analyzing:
- Total time to break a hash
- Total file processing time
Key findings:
- Password cracking time decreases with:
- More clients
- Increased bandwidth
Conclusion
The project demonstrates the power of distributed systems in efficiently cracking MD5 hashes. By leveraging a user-friendly web interface and effective workload management, the system showcases improved performance and scalability.
Additional Resources