Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time


Known Vulnerabilities WTFPL

A web-based, enhanced and open-source port of StegSolve. Upload any image file, and the relevant options will be displayed. View a live demo at


  • Browse through the 32 bit planes of the image
  • Extract and Embed data using LSB steganography techniques
  • Hide images within other image bit planes
  • View PNG Chunk info
  • Download RGBA values of image
  • Browse through image colour palette (if exists)
  • Built as an Angular7 SPA, and no data is stored/transferred.

Future Plans

  • Max filesize warning to stop tab crashes on massive files
  • Gray Bits feature
  • An Autostereogram solver (see here)
  • Automated LSB Detection (via entropy and filetype detection, on common LSB paths)
  • Add support for other PNG types (at the moment we only support RGB, RGBA and bitmap)
  • Better automated filetype regex / More filetypes recognized in the IdentifyFileTypeService service
  • Better strings regex (see current code)
  • More steps inside the CTF Checklist page
  • Randomize colour palette for regular PNGs (not just type 3)


Dev Environment

git clone
cd StegOnline
(sudo) npm install -g @angular/cli
(sudo) npm install -i
(sudo) ng serve --open

Live Environment (Apache2)

This will install into the StegOnline/ folder of your site

cd ~/Documents #Or wherever you want to store it
git clone
cd StegOnline
(sudo) npm install -g @angular/cli
(sudo) npm install -i
(sudo) ng build --prod --base-href=/StegOnline/ --aot=false --build-optimizer=false --output-path=/var/www/html/StegOnline

Inside of the newly created /var/www/html/StegOnline folder, create the following .htaccess file:

Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.html [L,QSA]


Contributions would be highly appreciated, as maintaining a large program takes a lot of effort.
See the "Future Plans" section for feature ideas <3

Working with transparency in JavaScript

Since the Canvas API doesn't properly parse the Alpha channel (ref, ref), we use PngToy for all PNGs. This also allows us to view other relevant information, such as chunk info and bitmap data. Unfortunately, the original PngToy library was deleted by the owner, so I'm using a copy hosted here.