[package]
edition = "2021"
rust-version = "1.88"
name = "blazehash"
version = "0.2.5"
authors = ["Albert Hui <albert@securityronin.com>"]
build = false
exclude = [
"target/",
".github/",
".serena/",
"docs/",
"wix/",
"tests/data/",
".pre-commit-config.yaml",
"renovate.json",
"PACKAGING.md",
"Makefile",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Forensic file hasher — hashdeep for the modern era, BLAKE3 by default"
homepage = "https://github.com/SecurityRonin/blazehash"
documentation = "https://docs.rs/blazehash"
readme = "README.md"
keywords = [
"hash",
"forensics",
"blake3",
"hashdeep",
"dfir",
]
categories = [
"command-line-utilities",
"cryptography",
]
license = "Apache-2.0"
repository = "https://github.com/SecurityRonin/blazehash"
[package.metadata.deb]
maintainer = "SecurityRonin <security-ronin@users.noreply.github.com>"
section = "utils"
priority = "optional"
extended-description = "blazehash is a forensic file hasher and drop-in superset of hashdeep. It defaults to BLAKE3 for speed, supports 8 hash algorithms (BLAKE3, SHA-256, SHA-512, SHA3-256, SHA-1, MD5, Tiger, Whirlpool), and provides multithreaded parallel hashing with memory-mapped I/O. Features include audit mode, piecewise hashing, resume support, and CSV/JSON/JSONL output formats."
assets = [[
"target/release/blazehash",
"usr/bin/",
"755",
]]
[features]
archive = [
"dep:zip",
"dep:flate2",
"dep:tar",
]
default = [
"forensic-image",
"gpu",
"sqlite",
"parquet-output",
"duckdb-output",
"pq",
"qr",
"archive",
"remote",
]
docker = [
"dep:oci-distribution",
"dep:flate2",
"dep:tar",
"dep:tokio",
]
duckdb-output = ["dep:duckdb"]
forensic-image = ["dep:ewf"]
gpu = [
"dep:wgpu",
"dep:pollster",
]
hashdb = [
"dep:bloomfilter",
"sqlite",
]
ots = []
parquet-output = [
"dep:parquet",
"dep:arrow",
]
pq = []
qr = [
"dep:qrcode",
"dep:image",
]
remote = [
"dep:opendal",
"dep:tokio",
"dep:suppaftp",
"dep:ssh2",
]
report = ["dep:minijinja"]
rocksdb-storage = [
"remote",
"opendal/services-rocksdb",
]
sqlite = ["dep:rusqlite"]
tui = [
"dep:ratatui",
"dep:crossterm",
]
yara = ["dep:yara-x"]
[lib]
name = "blazehash"
path = "src/lib.rs"
[[bin]]
name = "blazehash"
path = "src/main.rs"
[[test]]
name = "ads_tests"
path = "tests/ads_tests.rs"
[[test]]
name = "algorithm_tests"
path = "tests/algorithm_tests.rs"
[[test]]
name = "annotate_tests"
path = "tests/annotate_tests.rs"
[[test]]
name = "apply_patch_tests"
path = "tests/apply_patch_tests.rs"
[[test]]
name = "archive_tests"
path = "tests/archive_tests.rs"
[[test]]
name = "attack_tests"
path = "tests/attack_tests.rs"
[[test]]
name = "audit_tests"
path = "tests/audit_tests.rs"
[[test]]
name = "balance_tests"
path = "tests/balance_tests.rs"
[[test]]
name = "batch3_dep_tests"
path = "tests/batch3_dep_tests.rs"
[[test]]
name = "batch4_dep_tests"
path = "tests/batch4_dep_tests.rs"
[[test]]
name = "benchmark_tests"
path = "tests/benchmark_tests.rs"
[[test]]
name = "cat_tests"
path = "tests/cat_tests.rs"
[[test]]
name = "checksum_tests"
path = "tests/checksum_tests.rs"
[[test]]
name = "cli_tests"
path = "tests/cli_tests.rs"
[[test]]
name = "config_tests"
path = "tests/config_tests.rs"
[[test]]
name = "contains_tests"
path = "tests/contains_tests.rs"
[[test]]
name = "convert_tests"
path = "tests/convert_tests.rs"
[[test]]
name = "count_tests"
path = "tests/count_tests.rs"
[[test]]
name = "dedup_tests"
path = "tests/dedup_tests.rs"
[[test]]
name = "diff_tests"
path = "tests/diff_tests.rs"
[[test]]
name = "disclosure_cli_tests"
path = "tests/disclosure_cli_tests.rs"
[[test]]
name = "disclosure_tests"
path = "tests/disclosure_tests.rs"
[[test]]
name = "duplicates_tests"
path = "tests/duplicates_tests.rs"
[[test]]
name = "e2e_tests"
path = "tests/e2e_tests.rs"
[[test]]
name = "exclude_tests"
path = "tests/exclude_tests.rs"
[[test]]
name = "export_tests"
path = "tests/export_tests.rs"
[[test]]
name = "filter_tests"
path = "tests/filter_tests.rs"
[[test]]
name = "first_tests"
path = "tests/first_tests.rs"
[[test]]
name = "folder_diff_tests"
path = "tests/folder_diff_tests.rs"
[[test]]
name = "format_tests"
path = "tests/format_tests.rs"
[[test]]
name = "gdrive_auth_tests"
path = "tests/gdrive_auth_tests.rs"
[[test]]
name = "gdrive_collect_tests"
path = "tests/gdrive_collect_tests.rs"
[[test]]
name = "gdrive_hash_auth_tests"
path = "tests/gdrive_hash_auth_tests.rs"
[[test]]
name = "gdrive_tests"
path = "tests/gdrive_tests.rs"
[[test]]
name = "gpu_sha256_chunked_tests"
path = "tests/gpu_sha256_chunked_tests.rs"
[[test]]
name = "gpu_tests"
path = "tests/gpu_tests.rs"
[[test]]
name = "grep_tests"
path = "tests/grep_tests.rs"
[[test]]
name = "hash_only_tests"
path = "tests/hash_only_tests.rs"
[[test]]
name = "hash_tests"
path = "tests/hash_tests.rs"
[[test]]
name = "head_tests"
path = "tests/head_tests.rs"
[[test]]
name = "image_tests"
path = "tests/image_tests.rs"
[[test]]
name = "info_tests"
path = "tests/info_tests.rs"
[[test]]
name = "interleave_tests"
path = "tests/interleave_tests.rs"
[[test]]
name = "intersect_tests"
path = "tests/intersect_tests.rs"
[[test]]
name = "lint_tests"
path = "tests/lint_tests.rs"
[[test]]
name = "manifest_loader_tests"
path = "tests/manifest_loader_tests.rs"
[[test]]
name = "manifest_tests"
path = "tests/manifest_tests.rs"
[[test]]
name = "manpage_tests"
path = "tests/manpage_tests.rs"
[[test]]
name = "mcp_tests"
path = "tests/mcp_tests.rs"
[[test]]
name = "merge_tests"
path = "tests/merge_tests.rs"
[[test]]
name = "merkle_tests"
path = "tests/merkle_tests.rs"
[[test]]
name = "mft_tests"
path = "tests/mft_tests.rs"
[[test]]
name = "missing_tests"
path = "tests/missing_tests.rs"
[[test]]
name = "nomicon_removal_tests"
path = "tests/nomicon_removal_tests.rs"
[[test]]
name = "normalize_tests"
path = "tests/normalize_tests.rs"
[[test]]
name = "nsrl_tests"
path = "tests/nsrl_tests.rs"
[[test]]
name = "oci_source_tests"
path = "tests/oci_source_tests.rs"
[[test]]
name = "parallel_config_tests"
path = "tests/parallel_config_tests.rs"
[[test]]
name = "path_only_tests"
path = "tests/path_only_tests.rs"
[[test]]
name = "piecewise_tests"
path = "tests/piecewise_tests.rs"
[[test]]
name = "pivot_tests"
path = "tests/pivot_tests.rs"
[[test]]
name = "pq_signing_tests"
path = "tests/pq_signing_tests.rs"
[[test]]
name = "qr_tests"
path = "tests/qr_tests.rs"
[[test]]
name = "redact_tests"
path = "tests/redact_tests.rs"
[[test]]
name = "remote_auth_tests"
path = "tests/remote_auth_tests.rs"
[[test]]
name = "remote_hash_tests"
path = "tests/remote_hash_tests.rs"
[[test]]
name = "remote_reader_tests"
path = "tests/remote_reader_tests.rs"
[[test]]
name = "remote_uri_tests"
path = "tests/remote_uri_tests.rs"
[[test]]
name = "remote_writer_tests"
path = "tests/remote_writer_tests.rs"
[[test]]
name = "rename_tests"
path = "tests/rename_tests.rs"
[[test]]
name = "repair_tests"
path = "tests/repair_tests.rs"
[[test]]
name = "report_tests"
path = "tests/report_tests.rs"
[[test]]
name = "resume_tests"
path = "tests/resume_tests.rs"
[[test]]
name = "reverse_tests"
path = "tests/reverse_tests.rs"
[[test]]
name = "sample_tests"
path = "tests/sample_tests.rs"
[[test]]
name = "search_tests"
path = "tests/search_tests.rs"
[[test]]
name = "selfcheck_tests"
path = "tests/selfcheck_tests.rs"
[[test]]
name = "shuffle_tests"
path = "tests/shuffle_tests.rs"
[[test]]
name = "signing_tests"
path = "tests/signing_tests.rs"
[[test]]
name = "slice_tests"
path = "tests/slice_tests.rs"
[[test]]
name = "sort_tests"
path = "tests/sort_tests.rs"
[[test]]
name = "split_tests"
path = "tests/split_tests.rs"
[[test]]
name = "stamp_tests"
path = "tests/stamp_tests.rs"
[[test]]
name = "stats_tests"
path = "tests/stats_tests.rs"
[[test]]
name = "subtract_tests"
path = "tests/subtract_tests.rs"
[[test]]
name = "sym_diff_tests"
path = "tests/sym_diff_tests.rs"
[[test]]
name = "tag_tests"
path = "tests/tag_tests.rs"
[[test]]
name = "tail_tests"
path = "tests/tail_tests.rs"
[[test]]
name = "tally_tests"
path = "tests/tally_tests.rs"
[[test]]
name = "timeline_cli_tests"
path = "tests/timeline_cli_tests.rs"
[[test]]
name = "timeline_tests"
path = "tests/timeline_tests.rs"
[[test]]
name = "uniq_tests"
path = "tests/uniq_tests.rs"
[[test]]
name = "unique_hash_tests"
path = "tests/unique_hash_tests.rs"
[[test]]
name = "update_tests"
path = "tests/update_tests.rs"
[[test]]
name = "verify_image_tests"
path = "tests/verify_image_tests.rs"
[[test]]
name = "verify_tests"
path = "tests/verify_tests.rs"
[[test]]
name = "vt_tests"
path = "tests/vt_tests.rs"
[[test]]
name = "walk_tests"
path = "tests/walk_tests.rs"
[[test]]
name = "watch_tests"
path = "tests/watch_tests.rs"
[[test]]
name = "yara_tests"
path = "tests/yara_tests.rs"
[[test]]
name = "yara_threshold_tests"
path = "tests/yara_threshold_tests.rs"
[dependencies.adler]
version = "1"
[dependencies.anyhow]
version = "1"
[dependencies.argon2]
version = "0.5"
[dependencies.arrow]
version = "54"
optional = true
[dependencies.base64]
version = "0.22"
[dependencies.bincode]
version = "1"
[dependencies.blake2]
version = "0.10"
[dependencies.blake3]
version = "1"
[dependencies.blazehash-core]
version = "0.2.4"
[dependencies.bloomfilter]
version = "1"
features = ["serde"]
optional = true
[dependencies.chrono]
version = "0.4"
features = ["std"]
default-features = false
[dependencies.clap]
version = "4"
features = ["derive"]
[dependencies.clap_complete]
version = "4"
[dependencies.clap_mangen]
version = "0.2"
[dependencies.crc]
version = "3"
[dependencies.crc32c]
version = "0.6"
[dependencies.crossterm]
version = "0.28"
optional = true
[dependencies.digest]
version = "0.10"
[dependencies.dirs]
version = "5"
[dependencies.duckdb]
version = "1.4.4"
features = ["bundled"]
optional = true
[dependencies.ed25519-dalek]
version = "2"
features = ["rand_core"]
[dependencies.ewf]
version = "0.2"
optional = true
[dependencies.flate2]
version = "1"
optional = true
[dependencies.globset]
version = "0.4"
[dependencies.hex]
version = "0.4"
[dependencies.image]
version = "0.25"
features = ["png"]
optional = true
default-features = false
[dependencies.indicatif]
version = "0.17"
[dependencies.md-5]
version = "0.10"
[dependencies.memmap2]
version = "0.9"
[dependencies.minijinja]
version = "2"
optional = true
[dependencies.ml-dsa]
version = "0.1.0-rc.8"
[dependencies.notify]
version = "6"
[dependencies.oci-distribution]
version = "0.11"
optional = true
[dependencies.opendal]
version = "0.55.0"
features = [
"services-s3",
"services-gcs",
"services-azblob",
"services-azdls",
"services-azfile",
"services-b2",
"services-cos",
"services-obs",
"services-oss",
"services-swift",
"services-upyun",
"services-gdrive",
"services-onedrive",
"services-dropbox",
"services-aliyun-drive",
"services-yandex-disk",
"services-pcloud",
"services-koofr",
"services-seafile",
"services-github",
"services-huggingface",
"services-vercel-artifacts",
"services-vercel-blob",
"services-alluxio",
"services-webhdfs",
"services-lakefs",
"services-dbfs",
"services-ghac",
"services-ipfs",
"services-ipmfs",
"services-memory",
"services-dashmap",
"services-mini-moka",
"services-moka",
"services-redb",
"services-sled",
"services-cacache",
"services-redis",
"services-redis-native-tls",
"services-memcached",
"services-etcd",
"services-tikv",
"services-mongodb",
"services-gridfs",
"services-mysql",
"services-postgresql",
"services-sqlite",
"services-persy",
"services-cloudflare-kv",
"services-d1",
"services-fs",
"services-http",
"services-webdav",
"services-hdfs-native",
"services-compfs",
"blocking",
]
optional = true
[dependencies.parquet]
version = "54"
optional = true
[dependencies.pollster]
version = "0.3"
optional = true
[dependencies.qrcode]
version = "0.14"
optional = true
[dependencies.rand]
version = "0.8"
[dependencies.ratatui]
version = "0.29"
optional = true
[dependencies.rayon]
version = "1"
[dependencies.regex]
version = "1"
[dependencies.ripemd]
version = "0.1"
[dependencies.rpassword]
version = "6"
[dependencies.rusqlite]
version = "0.31"
features = ["bundled"]
optional = true
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.sha1]
version = "0.10"
features = ["oid"]
[dependencies.sha2]
version = "0.10"
features = ["oid"]
[dependencies.sha3]
version = "0.10"
[dependencies.signature]
version = "2"
[dependencies.sm3]
version = "0.4"
[dependencies.ssh2]
version = "0.9"
features = ["vendored-openssl"]
optional = true
[dependencies.streebog]
version = "0.10"
[dependencies.suppaftp]
version = "6"
features = ["rustls"]
optional = true
default-features = false
[dependencies.tar]
version = "0.4"
optional = true
[dependencies.tempfile]
version = "3"
[dependencies.tiger]
version = "0.2"
[dependencies.tiny-keccak]
version = "2"
features = ["k12"]
[dependencies.tlsh2]
version = "0.4"
features = ["diff"]
[dependencies.tokio]
version = "1"
features = [
"rt-multi-thread",
"macros",
]
optional = true
[dependencies.toml]
version = "0.8"
[dependencies.ureq]
version = "2"
features = ["json"]
[dependencies.uuid]
version = "1"
features = ["v5"]
[dependencies.walkdir]
version = "2"
[dependencies.wgpu]
version = "22"
optional = true
[dependencies.whirlpool]
version = "0.10"
[dependencies.xxhash-rust]
version = "0.8"
features = ["xxh3"]
[dependencies.yara-x]
version = "0.9"
optional = true
[dependencies.zip]
version = "2"
optional = true
[dev-dependencies.assert_cmd]
version = "2"
[dev-dependencies.predicates]
version = "3"
[dev-dependencies.regex]
version = "1"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.zip]
version = "2"
[target.'cfg(target_os = "linux")'.dependencies.libc]
version = "0.2"
[target.'cfg(target_os = "linux")'.dependencies.opendal]
version = "0.55.0"
features = ["services-monoiofs"]
[target.'cfg(target_os = "macos")'.dependencies.libc]
version = "0.2"
[target.'cfg(target_os = "windows")'.dependencies.tokio]
version = "1"
features = [
"rt-multi-thread",
"fs",
"sync",
"macros",
]
[target.'cfg(target_os = "windows")'.dependencies.windows-sys]
version = "0.59"
features = [
"Win32_Storage_FileSystem",
"Win32_Foundation",
"Win32_System_Memory",
"Win32_Security",
"Win32_UI_Shell",
"Win32_System_Threading",
"Win32_System_Registry",
]