This was a very easy stegano challenge, but weirdly, it was only solved by 6 teams including us. We were given a simple PNG image:
A bit of steganalysis showed us some LSB in the alpha channel:
Our first thought was: let’s XOR the two images! Then, we simply had to decode the resulting 8-bit binary string to get 100 points.
import Image img = Image.open('steg100.png') strbit1 = '' for y in range(0, img.size, 19): for x in range(0, img.size, 19): r, g, b, a = img.getpixel((x, y)) strbit1 += str(r & 1) strbit2 = '' for y in range(171, 171 + 19): for x in range(171, 171 + 19): r, g, b, a = img.getpixel((x, y)) strbit2 += str(a & 1) xored = ''.join(str(int(A) ^ int(B)) for A, B in zip(strbit1, strbit2)) print ''.join(chr(int(xored[i:i + 8], 2)) for i in range(0, len(xored), 8))
Output: flag = ASIS_08213db585ffe1c93c8f04622c319594.