stegify alternatives and similar packages
Based on the "Images" category.
Alternatively, view stegify alternatives based on common mentions on social networks and blogs.
-
Primitive Pictures
Reproducing images with geometric primitives. -
imaginary
Fast, simple, scalable, Docker-ready HTTP microservice for high-level image processing -
pigo
Fast face detection, pupil/eyes localization and facial landmark points detection library in pure Go. -
bimg
Go package for fast high-level image processing powered by libvips C library -
gowitness
🔍 gowitness - a golang, web screenshot utility using Chrome Headless -
geopattern
:triangular_ruler: Create beautiful generative image patterns from a string in golang. -
canvas
Cairo in Go: vector to raster, SVG, PDF, EPS, WASM, OpenGL, Gio, etc. -
Angular 2 Image Gallery
Image Gallery built with Angular 15+, node.js and GraphicsMagick -
darkroom
An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency. -
mergi
go library for image programming (merge, crop, resize, watermark, animate, ease, transit) -
steganography
Pure Golang Library that allows LSB steganography on images using ZERO dependencies -
fastimage
Finds the type and/or size of a remote image given its uri, by fetching as little as needed. -
webp-server
Simple and minimal image server capable of storing, resizing, converting and caching images. -
LookUp
:mag: Pure Go implementation of fast image search and simple OCR, focused on reading info from screenshots -
goimghdr
The imghdr module determines the type of image contained in a file for go -
scout
Scout is a standalone open source software solution for DIY video security.
Access the most powerful time series database as a service
Do you think we are missing an alternative of stegify or a related project?
Popular Comparisons
README
stegify
Overview
stegify
is a simple command line tool capable of fully transparent hiding any file within an image or set of images.
This technique is known as LSB (Least Significant Bit) steganography
Demonstration
Carrier | Data | Result |
---|---|---|
[Original File](examples/street.jpeg) | [Data file](examples/lake.jpeg) | [Encoded File](examples/test_decode.jpeg) |
The Result
file contains the Data
file hidden in it. And as you can see it is fully transparent.
If multiple Carrier
files are provided, the Data
file will be split in pieces and every piece is encoded in the respective carrier.
Carrier1 | Carrier2 | Data | Result1 | Result2 |
---|---|---|---|---|
The Result1
file contains one half of the Data
file hidden in it and Result2
the other. As always fully transparent.
Installation
Installing from Source
go get -u github.com/DimitarPetrov/stegify
Installing via Homebrew (macOS)
brew tap DimitarPetrov/stegify
brew install stegify
Or you can download a binary for your system here.
Usage
As a command line tool
Single carrier encoding/decoding
stegify encode --carrier <file-name> --data <file-name> --result <file-name>
stegify decode --carrier <file-name> --result <file-name>
When encoding, the file with name given to flag --data
is hidden inside the file with name given to flag
--carrier
and the resulting file is saved in new file in the current working directory under the
name given to flag --result
.
NOTE: The result file won't have any file extension and therefore it should be specified explicitly in
--result
flag.
When decoding, given a file name of a carrier file with previously encoded data in it, the data is extracted
and saved in new file in the current working directory under the name given to flag --result
.
NOTE: The result file won't have any file extension and therefore it should be specified explicitly in
--result
flag.
In both cases the flag --result
could be omitted and default values will be used.
Multiple carriers encoding/decoding
stegify encode --carriers "<file-names...>" --data <file-name> --results "<file-names...>"
OR
stegify encode --carrier <file-name> --carrier <file-name> ... --data <file-name> --result <file-name> --result <file-name> ...
stegify decode --carriers "<file-names...>" --result <file-name>
OR
stegify decode --carrier <file-name> --carrier <file-name> ... --result <file-name>
When encoding a data file in more than one carriers, the data file is split in N chunks, where N is number of provided carriers. Each of the chunks is then encoded in the respective carrier.
NOTE: When decoding, carriers should be provided in the exact same order for result to be properly extracted.
This kind of encoding provides one more layer of security and more flexibility regarding size limitations.
In both cases the flag --result/--results
could be omitted and default values will be used.
NOTE: When encoding the number of the result files (if provided) should be equal to the number of carrier files. When decoding, exactly one result is expected.
When multiple carriers are provided with mixed kinds of flags, the names provided through carrier
flag are taken first and with carriers/c
flags second.
Same goes for the result/results
flag.
Programmatically in your code
stegify
can be used programmatically too and it provides easy to use functions working with file names
or raw Readers and Writers. You can visit godoc under
steg
package for details.
Disclaimer
If carrier file is in jpeg or jpg format, after encoding the result file image will be png encoded (therefore it may be bigger in size) despite of file extension specified in the result flag.
Showcases
🚩 Codefest’19
stegify
was used for one of the Capture The Flag challenges in Codefest’19.
Participants were given a photo of a bunch of "innocent" cats. Nothing suspicious right? Think again!