Hashing and fingerprinting files
Skill meltedinhex/analyst-ai-pack/skills/hashing-and-fingerprinting-files
Computes cryptographic and fuzzy fingerprints for malware samples: MD5/SHA-1/SHA-256 for exact identity, plus import hashing (imphash), section hashing, and fuzzy hashes (ssdeep, TLSH) to cluster related variants. Activates for requests to hash a sample, compute imphash, or fingerprint files for similarity clustering.From its SKILL.md
npx -y skills add meltedinhex/analyst-ai-pack --skill hashing-and-fingerprinting-filesAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 21 stars21 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.0 KB, 518 tokens by cl100k_base, as published. Nobody here has run it
Hashing and Fingerprinting Files
When to Use
- You need a stable identity for a sample to look up, deduplicate, or share as an IOC.
- You want to cluster related variants that differ slightly using fuzzy/similarity hashes.
- You are computing imphash or section hashes to pivot across a malware family.
Do not use cryptographic hashes alone to judge similarity — a single byte change yields a completely different SHA-256; use fuzzy/import hashing for relatedness.
Prerequisites
- Python with
hashlib(stdlib); optionallyssdeep/python-tlshfor fuzzy hashes andpefilefor imphash. - Samples handled in the isolated lab per the safe-handling skill.
Safety & Handling
- Treat every sample as live: never execute it during hashing; operate on the inert file only.
- Store samples encrypted/password-protected and reference them by hash, not by original name.
Workflow
Step 1: Compute cryptographic hashes
Generate MD5, SHA-1, and SHA-256. SHA-256 is the canonical identity for sharing; MD5/SHA-1 aid lookups in legacy feeds.
python scripts/analyst.py hash sample.bin
Step 2: Compute structural hashes (PE)
For PE files, compute imphash (hash of the import table) and per-section hashes to pivot across samples built from the same toolchain.
Step 3: Compute fuzzy/similarity hashes
Generate ssdeep and/or TLSH digests so near-duplicates can be matched even when bytes differ.
Step 4: Record and cross-reference
Store all digests with the sample metadata; query threat-intel feeds by SHA-256 and cluster by imphash/fuzzy hash.
Validation
- The same input always yields identical cryptographic hashes (deterministic).
- Imphash matches across known-related samples; fuzzy hashes score high similarity for variants.
- Digests are recorded alongside sample metadata for later pivoting.
Pitfalls
- Treating MD5 collisions as identity proof; use SHA-256 as canonical.
- Assuming different cryptographic hashes mean unrelated files; check fuzzy/import hashes.
- Computing imphash on packed samples (imports are stubbed) and over-trusting the result.
References
- See
references/api-reference.mdfor the hashing helper. - ssdeep and TLSH (linked in frontmatter).
What ships with it: 3 files
3.9 KB alongside SKILL.md, 1 of them executable
references/
- api-reference.md1.3 KB
scripts/
- analyst.pyruns2.3 KB
- LICENSE340 B