auditor
is a forensic tool for fast
integrity auditing that uses
cryptographic hash functions
.
It is similar to other popular tools (fsum, hashdeep, sha256sum, etc.), but with features to make digital data auditing simpler and faster.
auditor
has support to several hash
algorithms. The default is sha256
, that
is recommended by NIST since 2015 ( see
NIST Policy on Hash Functions). By default,
thash method
is enabled, but this mode can be disabled.
thash method
is enabled, but this mode can be disabled.
With auditor
installed in your
system, you can use it as follows:
Manual em português
auditor subcommands:
hash is the first step of forensic auditing. It generates audit files that allow verifying file integrity.
auditor hash input_path
This will:
input_path
with default algorithm
(sha256
)
Audit_FullList
: contains the
integrity data (hash, size, name) of file list in
input_path
. Default name:
_auditor_hashes.txt
Audit_Stamp
: contains only
the integrity data of Audit_FullList
.
Default name:
_auditor_stamp.txt
.This is the
file that needs to be printed or digitally signed to ensure
check of all integrity chain.
Audit_FullList
After hash
, you can perform
check
command to verify
integrity. To properly ensure integrity check in the future, follow advices
in
Important!
Overwrite audit files (-o), use blockSize 10MB and 'whirlpool' hash function
auditor hash input_path -o -b 10MB -a whirlpool
Overwrite audit files (-o), disable 'thash method' (-d), and use blake3 hash function (-a)
auditor hash input_path -o -d -a blake3
Use 100 workers (-w 100), overwrite audit files (-o), use blockSize 10MB (-b 10MB) and 'whirlpool' hash function (-a whirlpool)
auditor hash input_path -o -b 10MB -a whirlpool -w 100
Overwrite audit files (-o), include only txt files (-i "**/*.txt") only in root folder (-u 1)
auditor hash input_path -o -i "**/*.txt" -u 1
Just generate hashes, but don’t create any files
auditor hash input_path -l
See Manual section to all options!
check is the second step of forensic auditing. It checks the the integrity of data using information in the audit files and can be used after hash was performed.
auditor check input_path
This will:
Audit_FullList
and check against audit file Audit_Stamp
Audit_FullList
against all
original files in input_path
Audit_FullList
to be compared with the original one
created with hash
.
Check in quiet mode (-q) and stop on first error (-x), using default audit files.
auditor check input_path -q -x
Check F:\data_path using audit files with specific names. (-f to <Audit_FullList> and -s to <Audit_Stamp>)
auditor check F:\data_path -f C:\other_path\personal_fullList.txt -s C:\other_path\personal_stamp.txt -q -x
Check integrity of just one file in <input_path> against some audit file
auditor check F:\data_path\file1.txt -f C:\other_path\some_audit.txt -q -x
See Manual section to all options!
info does not perform hash integrity check. It only tests
the audit files and the content of
input_path
and shows useful
information. Can be used after hash was performed.
auditor info input_path
This will:
Audit_Stamp
and
Audit_FullList
exists.
Audit_Stamp
and
Audit_FullList
exists and listed
size is the same that in
input_path
.
input_path
are listed in
Audit_FullList
.
Audit_FullList
and check against audit file Audit_Stamp
Usage: auditor.exe <SUBCOMMAND> [OPTIONS]
To see version: auditor.exe --version or auditor.exe -V
To help: auditor.exe --help or auditor.exe -h
One of the following subcommands:
Hash <input_path> and generates audit files (<Audit_FullList>/<Audit_Stamp>)
Usage: auditor.exe hash <INPUT_PATH> [OPTIONS]
Checks the integrity of <input_path> against data in audit files (<Audit_FullList>/<Audit_Stamp>)
Usage: auditor.exe check <INPUT_PATH> [OPTIONS]
Only tests if audit files and <input_path> are synchronized. This doesn't check the integrity!
Usage: auditor.exe info [OPTIONS] <INPUT_PATH>
To securely ensure future check of all chain of integrity, you should:
Audit_Stamp
or
digitally sign this file. If you don´t do this, someone can simply
change the data an generate new audit files.
Audit_Stamp
MUST BE the same of the printed or digitally signed
version
done in step 1. If does not match, the integrity check is not
valid.
If you don't have a digital certificate, you can use a free timestamping authority to sign the file online, such as freetsa.org (using Online Signature).
The format of audit files are simple. Each line contains:
hash_value ?algorithm[<thash-BlockSize>]|file_size[:hex]*relative_filepath
where [ ] are optional:
hash_value
: value of hash.
algorithm[<thash-BlockSize>]
: algorithm used to hash, stored in capital letters to mantain
compatibility with some others tools. The parameter with
<thash-BlockSize> is optional, indicating that thash method and
BlockSize were used. BlockSize must be in KB, MB, GB or TB. Ex: 10MB.
file_size
: FileSize of original
file when was hashed. Useful in check, to improve speed when size
doesnt match. Why hash a big file when already is known that its size
does not match with original?
[:hex]
: Optional flag to
indicate that filepaths is in hex format. This is necessary because
char as '\n', '\r' or '\0', are permitted in some OS, and the hex
avoid problems with formatting the results.
relative_filepath
: The relative
filepath of file hashed.
Example 1: using method thash with algorithm sha256 and BlockSize 50MB :
281d5d93464f1165ea7c403ca99d63ff4bf9a360864f8df4bd0e8e6c03774e98 ?SHA256<thash-50MB>|500000*file_hashed.bin
Example 2: using normal method, just with algorithm blake3.
7357b67824d086dc53f5e1ded565f500456bea1812783f1fbcddc08fddc3944c ?BLAKE3|2233:hex*1aCb344356e4e2b2b6
Others formats can be implemented in future.
sha256:4807037412cbabf69c403635e763b2be7c2019cb2a1a134376c71e1a1c55e67c
Disclaimer: auditor
is provided as a
software in development, without ANY kind of warranty or support. So,
use it at your own risk.
Using
hyperfine, tests between
auditor
, fsum and hashdeep64 were performed and results are shown below.
Machine configs:
S.O.: Windows 11 Home 64bits
Processor: AMD Ryzen 7 (7800X3D 4.20 GHz)
RAM: 64 GB of RAM (Corsair Vengeance DDR5 64GB - 5200MHz)
Disk: SSD M.2 2TB (Corsair MP600 Pro NVMe)
Data Source:
Benchmarks:
Command | Mean [s] | Min [s] | Max [s] | Relative |
---|---|---|---|---|
.\fsum.exe -dC:\thash\data\completo\ -sha256 -R *.* |
249.565 | 249.565 | 249.565 | 5.94 |
.\auditor.exe hash C:\thash\data\completo\ -o |
42.049 | 42.049 | 42.049 | 1.00 |
.\hashdeep64.exe -d -r -j 48 -p 50m C:\thash\data\completo\ |
171.027 | 171.027 | 171.027 | 4.07 |