Aperi'Solve

CI Lint Black Code Style Website Rawsec's CyberSecurity Inventory

Try it now: https://www.aperisolve.com

Support Aperi'Solve:

What is Aperi'Solve?

Aperi'Solve is a platform which performs steganalysis on images.

The platform uses layer analysis, "zsteg", "steghide", "outguess", "exiftool", "binwalk", "foremost" and "strings" for deeper steganography analysis.

Why Aperi'Solve?

Aperi'Solve has been created in order to have an "easy to use" platform which performs common steganalysis tests such as LSB or steghide. The platform is also a quick alternative for people who were note able to install tools like zsteg (ruby gem) properly.

Features

Aperi'Solve is based on Python3 with Flask and PIL module, the platform supports the most common image formats like.png, .jpg, .gif, .bmp, .jpeg, .jfif, .jpe, .tiff...

The platform allows you to:

  • Visualize each bit layer of each channel for a given image (ie. LSB of Red channel).
  • Browse and Download each bit layer image.
  • Visualise zsteg information such as text encoded on LSB
  • Download steghide files using a defined password
  • Download outguess files using a defined password
  • Visualise exiftool information such as geolocation or author
  • Visualise binwalk information
  • Download binwalk files such as ZIP file in PNG headers
  • Download foremost files such as ZIP file in PNG headers
  • Visualise pngcheck output
  • Visualise strings output

Installation

Even if Aperi'Solve is available at the URL https://www.aperisolve.com/, you can set up your own instance with the following command:

git clone https://github.com/Zeecka/AperiSolve.git
cd aperisolve
docker compose up -d

Default will run on http://localhost:5000/

Development

Aperi'Solve platform is a Flask web service (python 3.11+) with python workers performing analysis. Jobs are stacked in a redis-queue, and image information is stored in a postgresql database. All services run inside Docker containers.

Adding new analyzer

Adding new analyzer is easy.

  1. Copy and adapt the template_analyzer.py file with your name, ie. "myanalyzer.py".
  2. Add this analyzer to workers.py.
    • Import your function from .analyzers.analyzer import analyze_myanalyzer
    • Add the function to the analyzers variable, like other analyzers.
  3. Add your analyzer name to TOOL_ORDER in aperisolve.js.

Tips

Here is a batch of useful commands.

docker compose down -v  # Remove the volume containings results
docker compose -f compose.dev.yml up  # Start application in developpement mode
rm -rf aperisolve/results  # Remove results from development mode
docker exec -it postgres psql -U aperiuser -d aperisolve  # Get postgresql shell
docker exec -it aperisolve-web bash # Get a shell inside the running web app

Note, if you used compose.dev.yml, you must remove "results" when switching to production Docker setup.

Code quality

Python code follows the following linters:

  • Black
  • Flake8 (ignoring E203,E501,W503)
  • Pylint (ignoring W0718,R0903,R0801)
  • Mypy (ignoring unused-awaitable)

GitHub CI will alert in case of failure.

Roadmap

  • Zsteg extract / --all --> Download zsteg files such as mp3 encoded on LSB
  • Test on mobile
  • i18n
  • Rootless analyzers ?
S
Description
My aperisolve deployment
Readme MIT
4 MiB
Languages
Python 50.7%
JavaScript 19.5%
HTML 17.9%
CSS 9.8%
Dockerfile 1.9%
Other 0.2%