npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@stegapng/core

v1.1.0

Published

Hide secret data in images

Downloads

1

Readme

About

Stega PNG allows you to hide arbitrary data into the RGBA colorspace data of images.

Read the API documentation.

Install

To use this core library in your JavaScript or TypeScript project, add it to your project's dependencies using your preferred Node package manager:

npm install @stegapng/core

Colorspace Encoding

Since PNG images use lossless compression, it is possible to store invisible data in the least significant bits of the image's RGB (red, green, and blue) colorspace. Alpha (transparency) channels are ignored since using alpha LSBs would often make it trivial to detect the presence of hidden data.

Where To Embed the Bits?

We can configure exactly where secret bits are embedded in the PNG colorspace data, using the best algorithm that fits our requirements.

By default, a linear congruential generator (LCG) allows us to very efficiently choose target pixel channels pseudorandomly on a "full cycle". This means that each pixel channel is picked at most exactly once. Thus, the available space to store data is maximized without needing to generate large arrays of shuffled indices, keep track of "used" channels, etc.

Data Encoding Scheme

StegaV0

Version 0 embraces the KISS approach. The byte-length of the supplied data is encoded into the first 4 bytes, followed by the data itself.

| Segment | Length | Description | |-----------------|---------|--------------------------------------------| | Data Length (L) | 4 bytes | Max 4GB, further limited by the image size | | Data | L bytes | Arbitrary user-supplied data |

The RGBA colorspace index selection is done via a LCG with parameters derived from the RGBA colorspace array itself.