English | 简体中文
Do you often worry that the precious files on your hard drive have been corrupted by cosmic rays? If so, HashOwl is an excellent tool for detecting that.
HashOwl is a high-performance, multithreaded command-line tool written in modern C++. It calculates hashes for files or whole directories, can export a JSON snapshot, and can later verify a target against that snapshot.
- Fast multithreaded scanning for directories.
- Supports both single-file and directory-tree hashing.
- Generates structured JSON snapshots for later integrity checks.
- Verification mode reports:
- passed files
- modified files
- missing files
- untracked files
- Built-in progress display with throughput (MB/s or GB/s).
crc32(default)crc64md5sha1sha256sha384sha512blake3
Current tested setup:
- OS: Windows
- Compiler: MSVC
- Build system: CMake + Ninja presets
- CMake version: 3.21+
Third-party dependencies include nlohmann/json, indicators, blake3, and libdeflate.
Use the CMake presets in this repository:
cmake --preset x64-debug
cmake --build out/build/x64-debug
cmake --preset x64-release
cmake --build out/build/x64-releaseAdditional presets are available in CMakePresets.json (for example x86-debug and x86-release).
- The project is currently Windows-focused.
- MD5 and SHA-family hashing use native
bcrypt.lib. - Release presets enable aggressive MSVC optimization flags.
./out/build/x64-release/src/HashOwl.exe <path> [--algo <md5|sha1|sha256|sha384|sha512|crc32|crc64|blake3>] [-o [output_path]] [--verify <snapshot.json>]--algo <algorithm>: Select hashing algorithm (default:CRC32).-o [output_path]: Export snapshot JSON.- If only
-ois provided, output defaults to<target_name>_hashowl.jsonnext to the target. - If
output_pathis a directory, the default file name is created under that directory. - If
output_pathis a file path, that exact path is used.
- If only
--verify <snapshot.json>/-v <snapshot.json>: Verify target against a previous snapshot.--help/-h: Print help.
0: Success1: Argument error2: Runtime error3: Verification failed (modified or missing files)
./out/build/x64-release/src/HashOwl.exe C:\path\to\file.txt./out/build/x64-release/src/HashOwl.exe C:\path\to\folder --algo SHA512./out/build/x64-release/src/HashOwl.exe C:\path\to\folder -o./out/build/x64-release/src/HashOwl.exe C:\path\to\folder -o C:\custom\output\snapshot.json./out/build/x64-release/src/HashOwl.exe C:\path\to\folder --verify C:\path\to\folder_hashowl.jsonVerification Report:
------------------------------------------------
Passed: 1042 files
Modified: 2 files
- config\settings.ini
- data\pagefile.sys [READ ERROR]
Missing: 1 files
- docs\old_readme.md
Untracked: 5 files
- temp\new_cache.tmp
------------------------------------------------
Total Time: 0.45 seconds