gchq / gchq/CyberChef

Operation Request: Snappy Decompression

Open
#1,506 2 comments 4 reactions 0 assignees View on GitHub
feature
Dominant language
JavaScript
Stars
35.8k
Forks
4.1k
Avg merge
2d 26m
Merged PRs (30d)
33

Description

**Is your feature request related to a problem? Please describe.**
I encountered some blobs compressed with the Snappy algorithm in some binary file.
There isn't currently a module in CyberChef that can decompress those.

**Describe the solution you'd like**
A new module for Snappy decompression.
This module shouldn't need parameters to operate. Just an input bytes stream.
Compression could be nice for completeness but I have no specific use for it. I also assume it's harder to implement.

**Additional context**
Snappy is an encryption algorithm created by Google.
The "high leve" description (which is pretty much enough to implement a decoder) can be found here:
https://github.com/google/snappy/blob/main/format_description.txt
There seem to be some variations of snappy: "framing" and "hadoop".
I think the "framing" one probably contains a magic.
The variation I'm particular interested does not start with a magic, it's the "original"(?) one that starts with a VarInt representing the size of the decompressed file.

**More Sources**
Official info, and C++ implementation, is available here:
https://github.com/google/snappy
3rd part implementations are listed here:
http://google.github.io/snappy/

Thank you.

Contributor guide

Open the contributing guide

Research direction

No repository file, entry point, or test is named. Start by reading Snappy's format_description.txt and compare the original, framing, and Hadoop variants before locating CyberChef's existing compression operations. Done means a parameterless operation decompresses the requested raw Snappy byte stream, with tests covering its expected input and output.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
data
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.