
CLI forensic tool that identifies 90+ hash algorithms (MD5, bcrypt, SHA256) from single values, files, or recursive directory scans, with JSON, YAML, and text export.
Note: this is a student project
Surely a random string like 'b318c90ba09d05dfc9ff3991974eee68' can look scary. Be afraid no more, HashPrint got your back.
HashPrint is a forensic CLI tool that can identify which algorithm (like MD5, bcrypt, SHA256) produced the scary looking string, called a hash, like the above one.
Requires Python 3.14+
If installing with pip, then you must have Python 3.14 or higher installed on your system
$ pip install pyhashprint
OR with uv
uv installs the correct Python version if necessary
First setup a virtual environment:
$ uv venv
Then install:
$ uv pip install pyhashprint
Use without installing
Requires uv
$ uv tool run pyhashprint
OR
$ uvx pyhashprint
| Option | Purpose |
|---|---|
| -h, --help | shows the help message and exits. |
| -f, --hash-file | this option takes a path to a text file as an argument. With this option, HashPrint will read the file at the specified path for hashes. The file must contain one hash per line. |
| -c, --hash | this option takes a hash as an argument and identifies it. It should be between single quotes and without the 0x prefix. |
| -x, --format | this option lets you choose between the export formats. You can export the results in JSON, YAML and text formats. This option cannot work without the -p, --path option. |
| -p, --path | this option specifies the path of the export file. If a path to a pre-existing file is specified, it will be overwritten if it already contains content. If the file at the specified path does not exist, HashPrint will create it. |
| -w, --walk | this option recursively scans a directory at the specified path for text files, containing one hash per line. |
| -v, --version | this option displays the version number of HashPrint. |
For help
$ hashprint --help
Display the version number
$ hashprint --version
Identify a single hash
$ hashprint -c 'a9993e364706816aba3e25717850c26c9cd0d89d'
OR
$ hashprint --hash 'a9993e364706816aba3e25717850c26c9cd0d89d'
Identify multiple hashes
$ hashprint -c '0cc175b9c0f1b6a831c399e269772661' -c 'e8b7be43'
Identify hashes from a file + export results to a file
$ hashprint -f path/to/txt/file/containing/hashes -x text -p path/of/export/file
The above command exports results in a human readable text format at a file of your choice. HashPrint will create the file if it does not exist.
Recursive Directory Scanner + exporting results to a file
$ hashprint -w path/to/directory -x format -p path/of/export/file
This project is licensed under the MIT license.
Found a bug or have an idea for a new feature?
-For bugs: Open an Issue.
-Suggest a feature or an improvement: Open an Issue.
-For new ideas or questions: Feel free to start a thread in Discussions!