Nodes/ComfyUI ARG Toolkit/Stegano LSB Decode
ComfyUI Node

Stegano LSB Decode

Pull the hidden message back out of the pixels

By AzelusLightvale·Created 12 months ago·Updated 4 days ago· 1
Stegano LSB Decode
  • images
  • STRING
m1
n2
generator_type
encodingUTF-8

The solver's half of the pack's signature trick. If SteganoLSBEncode hides a message in the least significant bits of an image, this node extracts it. Someone posts an image that "looks normal but feels wrong" - you drop it in, set the generator, and read out what's hidden in the pixels. It's the node that turns "this image is sus" into an actual clue.

Like its encode sibling, it's built on the stegano library. The important thing to understand before you start: LSB steganography is symmetric - the extraction parameters must exactly match the hiding parameters. You can't just "scan" an image with this node and hope; you need to know (or guess) which generator and settings were used to hide the message.

How it works

Inputs:

  • images - the image to decode (IMAGE tensor).
  • generator_type - must match the encode side: None, LFSR, ackermann, ackermann_fast, ackermann_naive, ackermann_slow, composite, eratosthenes, identity, shi_tomashi, triangular_numbers. Same broken-generator exclusions as encode (carmichael, fermat, fibonacci, log_gen, mersenne).
  • m - primary generator parameter (LFSR, Ackermann variants).
  • n - secondary parameter (Ackermann fast/slow).
  • encoding - UTF-8 or UTF-32LE, must match encode.

Output: a STRING - the revealed message.

Mechanically it mirrors encode: read the image's pixel bits in the order the generator dictates, collect them into bytes, decode with the chosen encoding. If the generator or parameters are wrong, you'll get garbage or an empty string rather than an error - which is the core difficulty.

The inputs that matter

If you made the puzzle, this is trivial: match the encode settings and done. If you're solving someone else's puzzle, generator_type is your first guess. Sequential hiding (None) is the most common; if that yields nothing, the puzzle-maker probably used LFSR or an ackermann variant, and m/n are the values to brute-force - small integers make for a fast, very ARG-appropriate search.

Installing it

Part of ComfyUI ARG Toolkit - ComfyUI Manager (search "ComfyUI ARG Toolkit") or:

cd ComfyUI/custom_nodes
git clone https://github.com/AzelusLightvale/ComfyUI-ARG-Toolkit

Restart ComfyUI. stegano arrives via Manager; no model files.

Common issues

  • Garbage or empty output - parameter mismatch (generator/m/n/encoding) with the encode side. Try None first, then LFSR with small m values.
  • Fails on images that were re-saved as JPEG - lossy compression scrubbed the LSBs. You need the original PNG-quality file; nothing to decode from a heavily compressed copy.
  • Suspicious images everywhere - a fun side effect of having this installed is that you'll start trying it on random puzzle images. That's the point. Just remember most images contain no hidden message, and no output is the expected outcome.
CategoryARG Toolkit/Steganography

Inputs (5)

NameTypeDefaultDescription
imagesIMAGE
mINT1The primary number used when accessing certain generators. Needed for: LFSR, Ackermann (all variants).
nINT2The secondary number used when accessing certain generators. Needed for: Ackermann (Fast, Slow).
generator_typeCOMBO11 options: None, LFSR, ackermann, ackermann_fast, ackermann_naive, ackermann_slow, +5
encodingCOMBOUTF-8Chooses the encoding format for the message. Only allows standard UTF-8 or a version with UTF-32LE

Outputs (1)

NameTypeDescription
STRINGSTRING