A multithreaded C++ utility to scan files and compute their SHA-256 hash, then compare them against a list of IOC (Indicators of Compromise).
Perfect for detecting suspicious or compromised files on Linux and Windows systems.
- ⚡ Fast scanning with multithreading
- 📂 Cross-platform: Linux & Windows
- 🛡 Verify files using SHA-256 (OpenSSL)
- ⚙️ Flexible configuration:
- config.ini file
- 📝 Log results and errors to files
- 🚫 Exclude specific directories using PrunePaths
- C++20 or newer
- OpenSSL (
libssl-devon Linux,mingw-w64-x86_64-opensslon Windows) - pkg-config
sudo apt install build-essential libssl-dev pkg-config
makepacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-openssl pkg-config
mingw32-makeCreate a config.ini file in the project root:
scan_dir=C:\Path\To\Scan
output_file=output.log
error_file=error.log
ioc_file=C:\Path\To\IOC_hash.csv
prune_paths=C:\Windows
scan_dir: Directory to scanoutput_file: File to log scan resultserror_file: File to log errorsioc_file: CSV file containing IOC hashes (ONLY SHA256)prune_paths: Semicolon-separated list of folder names to skip
The IOC file (hashes.csv) should contain one SHA-256 hash per line:
9a0364b9e99bb480dd25e1f0284c8555...
2c26b46b68ffc68ff99b453c1d304134...
- Each hash must be 64 hexadecimal characters
- Case-insensitive
- Support for additional hash algorithms (SHA-1, SHA-512, MD5)
- Add multithreading to the file collection process to improve scan performance
Apache-2.0 license