Fast and secure steganography CLI for hiding text/files in images.

indie CLI


This complete README is hidden
in the target.png file below

without the original readme.png
this could have also been a lie
as none could ever tell.


Convince yourself & decrypt it
go run indie.go -d -o readme.png -t target.png


Tweet

A new implementation to hide information into images with high speed. Each pixel is scanned for security and validity reasons and subsequently RGB tweaked to encode a secret text which lies in the difference between an original and target file. indie.go was developed as an alternative steganographic method with high memory capacity, negligible quality loss and high security.

The advantage over password managers

Indie involves no passwords one needs to memorize! If an original image is picked, indie will draw it's information and encode the provided plain text then output a target file which looks like a copy of the original image. To decode your secret again indie will just need the original and target file path. Without the original image file the algorithm at hand is considered cryptographically secure by the theorem of perfect secrecy.



Branches

  • master Release Branch
  • benchmark Performance Benchmark Branch

Performance Benchmarks

Capacity [bit/pixel] Speed
4 -

Setup

If you are using indie with go make sure to have it installed. For Ubuntu/Debian use for instance

sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt update
sudo apt install golang-go

see here for custom OS installers.

Next, download indie or clone repository

git clone https://github.com/B0-B/indie.go.git
cd /indie.go

Getting Started

The typical encryption line

go run indie.go -c -e -o /path/to/original/file.png -t /optional/target/path.png -s "Confidential Hello World!" 

encodes and saves the provided message string in a slightly altered copy (of the original image) which is exported to the target path. The opt. -c command will scan and print the available capacity for this picture in bytes. The return should yield

Capacity ( parrot.png ):  553352  bytes
Encrypt text into /optional/target/path.png using original parrot.png image.

To decrypt use the -d flag and provide original and target path

go run indie.go -d -o /path/to/original/file.png -t /optional/target/path.png

The expected output should look like this

~$ go run indie.go -d -o /path/to/original/file.png -t /optional/target/path.png

# output
Decrypt text from ./out.png using original parrot.png image.

------------- secret --------------
    Confidential Hello World! 
-----------------------------------

note the encoded secret at the end. Thats it! Please visit next section for usage parameters.


Usage

See the options for indie below. Note that the order is not necessary but is just a recommendation. The options list is obtained by -h flag.

~/indie.go$ go run indie.go -h

 ____  _  _  ____  ____  ____ 
(_  _)( \( )(  _ \(_  _)( ___)
 _)(_  )  (  )(_) )_)(_  )__) 
(____)(_)\_)(____/(____)(____)
           
help options:

        go run indie.go [-h/-c/-vb/-e/-v] [-o original file] [-t target file] [-f/-w opt. output path]

options within brackets can be used simulataneously

  -c    Prints available capacity in bytes.
  -d    Decrypt option.
  -e    Encrypt option.
  -f string
        Draw text from file path.
  -h    Help - prints all options.
  -o string
        Original image path to use for encryption.
  -s string
        Draw text from CL string input.
  -t string
        Specify target path (optional).
  -v    Outputs the current version.
  -vb
        Verbose information. Helpful for debugging.
  -w string
        Write the output to a file instead of terminal.

Upcoming

  • New format encoders for jpg and gif compatibility
Owner
Similar Resources

👄 The most accurate natural language detection library in the Go ecosystem, suitable for long and short text alike

👄 The most accurate natural language detection library in the Go ecosystem, suitable for long and short text alike

👄 The most accurate natural language detection library in the Go ecosystem, suitable for long and short text alike

Jul 28, 2022

a simple and lightweight terminal text editor written in Go

Simple Text editor written in Golang build go build main.go

Oct 4, 2021

AppGo is an application that is intended to read a plain text log file and deliver an encoded polyline

AppGo AppGo is an application that is intended to read a plain text log file and deliver an encoded polyline. Installation To run AppGo it is necessar

Oct 23, 2021

A UTF-8 and internationalisation testing utility for text rendering.

ɱéťàł "English, but metal" Metal is a tool that converts English text into a legible, Zalgo-like character swap for the purposes of testing localisati

Jan 14, 2022

A simple action that looks for multiple regex matches, in a input text, and returns the key of the first found match.

Key Match Action A simple action that looks for multiple regex matches, in a input text, and returns the key of the first found match. TO RUN Add the

Feb 7, 2022

Guess the natural language of a text in Go

guesslanguage This is a Go version of python guess-language. guesslanguage provides a simple way to detect the natural language of unicode string and

Jul 22, 2022

Extract urls from text

xurls Extract urls from text using regular expressions. Requires Go 1.13 or later. import "mvdan.cc/xurls/v2" func main() { rxRelaxed := xurls.Relax

Jul 29, 2022

Easy AWK-style text processing in Go

awk Description awk is a package for the Go programming language that provides an AWK-style text processing capability. The package facilitates splitt

Jul 25, 2022

Change the color of console text.

go-colortext package This is a package to change the color of the text and background in the console, working both under Windows and other systems. Un

Jul 25, 2022
Small and fast FTS (full text search)

Microfts A small full text indexing and search tool focusing on speed and space. Initial tests seem to indicate that the database takes about twice as

Jul 30, 2022
A general purpose application and library for aligning text.

align A general purpose application that aligns text The focus of this application is to provide a fast, efficient, and useful tool for aligning text.

Jul 31, 2022
Parse placeholder and wildcard text commands

allot allot is a small Golang library to match and parse commands with pre-defined strings. For example use allot to define a list of commands your CL

Apr 13, 2022
omniparser: a native Golang ETL streaming parser and transform library for CSV, JSON, XML, EDI, text, etc.
omniparser: a native Golang ETL streaming parser and transform library for CSV, JSON, XML, EDI, text, etc.

omniparser Omniparser is a native Golang ETL parser that ingests input data of various formats (CSV, txt, fixed length/width, XML, EDI/X12/EDIFACT, JS

Aug 1, 2022
Produces a set of tags from given source. Source can be either an HTML page, Markdown document or a plain text. Supports English, Russian, Chinese, Hindi, Spanish, Arabic, Japanese, German, Hebrew, French and Korean languages.
Produces a set of tags from given source. Source can be either an HTML page, Markdown document or a plain text. Supports English, Russian, Chinese, Hindi, Spanish, Arabic, Japanese, German, Hebrew, French and Korean languages.

Tagify Gets STDIN, file or HTTP address as an input and returns a list of most popular words ordered by popularity as an output. More info about what

Jul 17, 2022
Templating system for HTML and other text documents - go implementation

FAQ What is Kasia.go? Kasia.go is a Go implementation of the Kasia templating system. Kasia is primarily designed for HTML, but you can use it for any

Mar 15, 2022
Diff, match and patch text in Go

go-diff go-diff offers algorithms to perform operations required for synchronizing plain text: Compare two texts and return their differences. Perform

Aug 1, 2022
:book: A Golang library for text processing, including tokenization, part-of-speech tagging, and named-entity extraction.

prose prose is a natural language processing library (English only, at the moment) in pure Go. It supports tokenization, segmentation, part-of-speech

Aug 1, 2022
PipeIt is a text transformation, conversion, cleansing and extraction tool.
PipeIt is a text transformation, conversion, cleansing and extraction tool.

PipeIt PipeIt is a text transformation, conversion, cleansing and extraction tool. Features Split - split text to text array by given separator. Regex

Jul 25, 2022
ByNom is a Go package for parsing byte sequences, suitable for parsing text and binary data

ByNom is a Go package for parsing byte sequences. Its goal is to provide tools to build safe byte parsers without compromising the speed or memo

May 5, 2021