File talk:StenographyOriginal.png
- I have tried decomposing this image and see no hidden image underneath. In GIMP I set RGB to 2/100 in each channel, and increased the brightness of the image until it was evident there was no stenograph. What am I doing wrong? Is this not the same image described?
Cranraspberry (talk) 04:21, 24 April 2009 (UTC)
The steps needed to reproduce this (on linux) follow (a friend just asked me how ;).
- Download StegnographyOriginal.png
wget http://upload.wikimedia.org/wikipedia/commons/4/4e/StenographyOriginal.png
- Convert it into BMP using imagemagick
convert StenographyOriginal.png SO.bmp
- Now load up python, and do some bit manipulation:
>>> f = open("SO.bmp", "r") # Open the file
>>> b = "".join(x for x in f) # Read the file into a binary string
>>> [ord(x) for x in b[10:14]] # Find the end of the header (see [[BMP]] for details)
[54, 0, 0, 0]
>>> h = b[:54] # h is now the BMP header
>>> t = b[54:] # t is now the BMP data
>>> k = [ord(x) & 3 for x in t] # k is now an array of the image data for the "nearly black" image
>>> j = [chr(x*80) for x in k] # j is now an array of the bytes for the cat image
>>> g = open("cat.bmp", "w") # open a new image for writing
>>> g.write(h) # old header should be alright, it's still going to have similar properties
>>> g.write("".join(j)) # write the new data
>>> exit()
- (Optional) Convert it back to a png
convert cat.bmp cat.png
Hope this is useful - there may be a nicer way of doing it for GUI people, but I dunno. Conrad.Irwin (on wikt) 19:05, 26 May 2009 (UTC)
Decoding with PhotoShop
[edit]I have attempted to decode this steganographic image with PhotoShop. No luck. I would think you could do it with the following steps:
- Brighten image until all but the two LS bits of the image are clipped to white. - Darken to a medium gray. - Increase contrast to bring out image.
(The Equalize command might even do the last two steps automatically.)
When I do these steps, I find no hidden image. Does the PNG perhaps store the image with a channel depth of greater than 8 bits? If so, then the example really is not fair; Screens are displayed with a 8 bit channel depth. If the steg image is displayed in bits beyond those eight, they will be simply discarded by hardware. RastaKins (talk) 19:23, 2 August 2010 (UTC)
- Not "fair"? That's the point of steganography — the hidden image should remain hidden unless one has the requisite tools and knowledge to extract it. If most standard hardware is incapable of displaying the information without some low-level bit diddling pre-processing, then so much the better.—QuicksilverT @ 23:53, 31 January 2011 (UTC)