Operation Request: Snappy Decompression
- 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
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