Identifying file types and formats
Skill meltedinhex/analyst-ai-pack/skills/identifying-file-types-and-formats
Identifies a sample's true file type independent of its extension: matching magic bytes and structural signatures, detecting container/archive formats, and flagging extension-content mismatches used to disguise malware. Activates for requests to identify a file type, check magic bytes, or detect a disguised/spoofed extension.From its SKILL.md
npx -y skills add meltedinhex/analyst-ai-pack --skill identifying-file-types-and-formatsAssembled 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, 494 tokens by cl100k_base, as published. Nobody here has run it
Identifying File Types and Formats
When to Use
- You receive an unknown sample and must determine what it actually is before choosing tools.
- You suspect masquerading — a
.pdfor.jpgthat is really an executable or script. - You need to detect container formats (ZIP/OLE/ISO) that hide a payload.
Do not use the file extension or the OS-reported type as truth — adversaries rename executables and embed payloads; always confirm by content.
Prerequisites
file/libmagic or an equivalent magic-byte database; the sample handled inertly in the lab.
Safety & Handling
- Never open the sample in its associated application during identification; read raw bytes only.
- Keep the disguised extension in mind — a double extension or RTLO trick can mislead the eye.
Workflow
Step 1: Read the magic bytes
Inspect the leading bytes and known offset signatures (e.g., MZ, \x7fELF, %PDF, PK\x03\x04,
OLE D0 CF 11 E0).
python scripts/analyst.py identify sample.dat
Step 2: Confirm structure
For container formats, confirm internal structure (ZIP central directory, OLE storage, ISO
CD001 at 0x8001) rather than trusting the header alone.
Step 3: Compare against the claimed extension
Flag mismatches: a .jpg whose content is MZ, or a document that is actually a script. These
are strong masquerading indicators.
Step 4: Route to the right analysis
Use the confirmed type to pick the correct workflow (PE static analysis, document analysis, archive extraction).
Validation
- The detected type is confirmed by both magic bytes and structural checks, not magic alone.
- Extension/content mismatches are explicitly reported.
- The result correctly routes the sample to the appropriate analysis skill.
Pitfalls
- Trusting the first 2 bytes only; some formats need offset or structural confirmation.
- Missing polyglot files that are valid as two formats at once.
- Overlooking nested containers (archive inside archive) that hide the real payload.
References
- See
references/api-reference.mdfor the type identifier. - libmagic and the magic-number reference (linked in frontmatter).
What ships with it: 3 files
4.1 KB alongside SKILL.md, 1 of them executable
references/
- api-reference.md1.1 KB
scripts/
- analyst.pyruns2.6 KB
- LICENSE340 B