Skip to content

πŸ’¬πŸ’¨ Hidden data using text-based steganography.

License

Notifications You must be signed in to change notification settings

spuuntries/shroudify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

30 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ₯· Shroudify

Remember Cloakify? Well, this is that.
But worse, in node.js.


πŸ€” What

This project is a not-really-clean-room port of the Cloakify project into the node.js ecosystem as a library.

Don't know what the Cloakify project is?
Basically, it's text-based steganography, which means, hiding files/data in text.


πŸ“š How to use

Simple, first install the module in your project:

npm i shroudify or yarn add shroudify

then import it:

const shroudify = require("shroudify") or import shroudify from shroudify

There are two methods, .encode(input, {options}) and .decode(input, {options}).

The thing has JSDoc typings w/ explanatory descriptions, btw. So this explanation's only good if you're trying it out on runkit or smth.

input can either be a string or a Buffer.

The options object can contain any of these:

  • Cipher
    The cipher to use, can be one of the premade ciphers' name, or a path to a file containing 65 strings, with 1 string per row.
  • Rounds
    The number of base64 encoding rounds to be done, good for injecting dead data, isn't that useful to prevent brute-force, however.
    In fact, this could even compromise the secrecy of the system by providing more data on the cipher itself.
  • Key
    The key to use for encryption. If set, the data will first be encrypted through AES-256 before being encoded. Currently the library only supports encryption through AES-256 w/o any native support for custom providers.
  • Compression The encryption level to use (0-9). If set, the data will be compressed using brotli. Currently brotli is the only available provider for compression, though support for more is planned (PRs are welcome wink wink).
  • Seed
    The seed for shuffling the cipher wordlist.
  • writeFile
    A path. If set, this will append to the file specified.
  • Join
    The character that joins the encoded message's strings, by default it is " ", however "\n", for example, can allow for line-based cipher strings.

Both methods return a string.


πŸ”’ Premade Ciphers

Current out-of-the-box ciphers:

  • urls

    Random URLs I generated on some random URL generator.

  • kek

    Weird shits that popped into my head while devving this. The kek cipher is filled with "questionable"/NSFW language, ple ase don't use it in an unsuitable production environment.

  • randomwords

    Random words generated by niceware


😭 Contributing

To set up a dev environment:

  1. Clone the repo
  2. Install dependencies on the root of the repo, use any node package manage you want...
  3. Import the thing from the entry point, i.e. index.js. So, e.g. const shroudify = require("./index.js").

πŸ“œ License

Shroudify is licensed under apache-2.0, dew any project you'd like n habe fun!

About

πŸ’¬πŸ’¨ Hidden data using text-based steganography.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published