{"id":13531111,"url":"https://github.com/hegusung/WebHashcat","last_synced_at":"2025-04-01T19:31:12.480Z","repository":{"id":64352675,"uuid":"75570966","full_name":"hegusung/WebHashcat","owner":"hegusung","description":"Hashcat web interface","archived":false,"fork":false,"pushed_at":"2025-03-07T15:48:10.000Z","size":1724,"stargazers_count":295,"open_issues_count":13,"forks_count":63,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-07T16:35:43.868Z","etag":null,"topics":["analytics","cracking","hashcat","password-cracking","pentesting","security-tools"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hegusung.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-12-04T23:16:28.000Z","updated_at":"2025-03-07T15:48:14.000Z","dependencies_parsed_at":"2023-12-20T21:51:47.483Z","dependency_job_id":null,"html_url":"https://github.com/hegusung/WebHashcat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hegusung%2FWebHashcat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hegusung%2FWebHashcat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hegusung%2FWebHashcat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hegusung%2FWebHashcat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hegusung","download_url":"https://codeload.github.com/hegusung/WebHashcat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246700245,"owners_count":20819844,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","cracking","hashcat","password-cracking","pentesting","security-tools"],"created_at":"2024-08-01T07:01:00.158Z","updated_at":"2025-04-01T19:31:07.470Z","avatar_url":"https://github.com/hegusung.png","language":"Python","funding_links":[],"categories":["Hashcat"],"sub_categories":["Web interfaces"],"readme":"# WebHashcat\nHashcat web interface\n\nWebHashcat is a very simple but efficient web interface for hashcat password cracking tool.\nIt hash the following features:\n* Distributed cracking sessions between multiple server (you only need to install HashcatNode on the remote server)\n* Cracked hashes are displayed almost as soon as they are cracked\n* Cracking session restore (for example after host reboot)\n* Upload plaintext files for analytics purposes\n* Search patterns through the entire database\n* Analytics\n\nCurrently WebHashcat supports rule-based and mask-based attack mode\n\nThis project is composed of 2 parts: \n- WebHashcat, the web interface made with the django framework \n- HashcatNode, A hashcat wrapper which creates an API over hashcat\n\n## WebHashcat Usage\n\n### Adding rules, masks and wordlists to webhashcat\n\nGo to the Hashcat \u003e Files page, than simply use the upload button to add new files. Note that uploaded files are added to webhashcat but not deployed to nodes yet.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"./screenshots/webhashcat_files.png\" alt=\"Rules/Masks/Wordlists\"\u003e\u003c/p\u003e\n\n### Registering a node\n\nThe nodes can be simply added and removed on the Node page, you only need to define the ip, port, username and password (as defined in the hashcatnode configuration script).\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"./screenshots/webhashcat_node_list.png\" alt=\"Node list\"\u003e\u003c/p\u003e\n\nOnce a node is registered, click on the node and hit the synchronise button on the top. Rules, Masks and Wordlists should now be uploaded to the node (all files should be green).\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"./screenshots/webhashcat_node.png\" alt=\"Node\"\u003e\u003c/p\u003e\n\n### Adding a hashfile\n\nIn the hashcat page, simply hit the bottom \"add\" button to upload a new hashfile, after comparing the new hashfile to the centralised potfile (can take a few minutes with huge hashfiles), your hashfile should appear in the list.\n\n### Creating a cracking session\n\nSimply hit the \"+\" button on the left of the hashfile, then select the desired cracking method. Note that sessions aren't started automatically, you will need to use the \"play\" button to start them.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"./screenshots/webhashcat_hashfile_list.png\" alt=\"Hashfile list\"\u003e\u003c/p\u003e\n\nIf you set the cron to 5 minutes, the central potfile will be updated every 5 minutes with newly cracked hashes.\n\nSimply click on the hashfile to view the results, it can take few seconds on huge hashfiles. Note that you can also download the results on both the hashfile list and hashfile views.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"./screenshots/webhashcat_hashfile.png\" alt=\"Hashfile details\"\u003e\u003c/p\u003e\n\n### Search for ŝpecific patterns in usernames\n\nUsing this functionality you can easily search from client's email addresses in leaks uploaded in webhashcat. Simply provide a string you want to look for in the username and select in which hashfiles you want to look for it. Once the research in the database is done, you should be able to download the results. If you add a new hashfile afterwards, you can simply click on the 'reload' button and WebHashcat will search again in the whole database.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"./screenshots/webhashcat_searches.png\" alt=\"Hashfile details\"\u003e\u003c/p\u003e\n\n## Install\n\n### HashcatNode\n\n#### Using docker\n\nIf you are using docker on Windows (or WSL), change the Dockerfile:\n```\nFROM dizcza/docker-hashcat:latest\n# to:\nFROM dizcza/docker-hashcat:cuda\n```\n\nFirst install nvidia-docker:\n```\ncurl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -\ndistribution=$(. /etc/os-release;echo $ID$VERSION_ID)\ncurl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list\nsudo apt-get update\nsudo apt-get install -y nvidia-docker2\nsudo pkill -SIGHUP dockerd\n```\n\nThen, run the following docker command:\n```\ndocker-compose up -d --build\n```\n\nThe default credentials are: test:test\n\nChange them by editing the docker-compose.yml config file\n\n#### Manual install\n\nHashcatNode can be run on both Windows and Python\n\nWindows limitation:\nOnly **one** cracking session can be running/paused at a time\n\nInstall the pip packages:\n```\npip3 install -r requirements.txt\n```\nIf you are running it on Windows, install also the pywin32 package\n```\npip3 install pywin32\n```\n\nRename the `settings.ini.sample` file to `settings.ini` and fill the parameters accordingly.\n\nThe rules, mask and wordlist directory must be writable by the user running hashcatnode\n\nthe hashcatnode can be run simply by running `./hashcatnode.py`\n\n* Create the database (sqlite)\nRun the script (HashcatNode folder)\n```\n./create_database.py\n```\n\n* Create the node certificates (Install a Windows version of OpenSSL if you are running HashcatNode on Windows)\n```\nopenssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes\n```\n\n* HashcatNode can be started manually by:\n```\npython3 hashcatnode.py\n```\n\n* Register as a service (systemd) (linux only)\nEdit the systemd/hashcatnode.service file to match your setup, then copy it to /etc/systemd/system/ \n\n##### Dependencies\n\n- python3\n- flask\n- flask-basicauth\n- peewee\n- hashcat \u003e= 3\n\n### WebHashcat\n\n#### Using docker\n\ndocker-compose \u003e= 2.29 is required, you can install it using the following guide:\nhttps://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04\n\nThen, run the following command:\n```\ndocker-compose up -d --build\n```\n\nWebHashcat should be available on port 8000\n\n#### Manual install\n\n##### Installing Packages\n\nInstall the following packages:\n```\napt install mysql-server\napt install libmysqlclient-dev\napt install redis\napt install supervisor\n```\n\nInstall the pip packages:\n```\npip3 install -r requirements.txt\n```\n\n##### Creating the database\n\nCreate the database using the following command to ensure you can insert utf8 usernames/passwords\n```\nmysql\u003e CREATE DATABASE webhashcat CHARACTER SET utf8;\nmysql\u003e CREATE USER webhashcat IDENTIFIED BY '\u003cinsert_password_here\u003e';\nmysql\u003e GRANT ALL PRIVILEGES ON webhashcat.* TO 'webhashcat';\n```\n\n##### Configuration\n\nWebHashcat is a django application using mysql database, its installation is done this way:\n* Copy `Webhashcat/settings.py.sample` file to `WebHashcat/settings.py`\n* Edit it:\n- Change the SECRET_KEY parameter\nYou can generate a random secret key by running this in a python shell\n```\nfrom django.utils.crypto import get_random_string\n\nchars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^\u0026*(-_=+)'\nget_random_string(50, chars)\n```\n- Add your webhashcat fqdn to ALLOWED_HOSTS\n- Set your mysql username and password in the DATABASES section\n- Set DEBUG = False if you are using it in production !\nyou can refer to the following django documentation for further info: https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/\n\n* Copy `settings.ini.sample` file to `settings.ini`\n* Edit `settings.ini` file\n- the potfile parameter doesn't need to be changed\n\n* Create the tables with django\n```\n./manage.py makemigrations\n./manage.py migrate\n```\n\n* Create the user to access the interface\n```\n./manage.py createsuperuser\n```\n\n##### Setting up the web server\n\n* If you want to test the interface without setting up a web server use this command:\n```\n./manage.py runserver\n```\n\n* If you want to set up the interface with a proper webserver like apache or nginx please refer to the following documentation:\nhttps://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/modwsgi/\n\n##### Setting up supervisor\n\nSupervisor is the deamon which is responsible of heavy background tasks such as pulling latest results from the nodes or importing hashfiles.\n\n* After installing supervisor, copy the configuration files from the Webhashcat/supervisor folder to the /etc/supervisor/conf.d/ folder.\n* Once done, edit them to match your configuration\n\n##### Dependencies\n\n- python3\n- django \u003e= 2\n- hashcat \u003e= 3\n- mysqlclient\n- humanize\n- requests\n- requests-toolbelt\n- celery\n- redis\n- supervisor\n\n## Operating System improvements\n\nIf you are willing to process more than 10M hashes, I recommend you to apply the following mofication to your system:\n* Increase the your /tmp size: Mysql tends to put a lot of data in the /tmp directory when processing huge hashfiles\n* Increase your swap partition size\n* If you use InnoDB tables in you MySQL configuration, I recommend you to edit your my.cnf configuration file and increase the innodb_buffer_pool_size value. This way MySQL will be able to allocate sufficiant memory when updating cracked hashes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhegusung%2FWebHashcat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhegusung%2FWebHashcat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhegusung%2FWebHashcat/lists"}