ASIS CTF 2014: Blocks (Stego 100)

May 16, 2014

This challenge comes with an 361x361px large image—that’s 19×19 squares of 19x19px each.

Every square is either black or white. After analyzing the alpha-planes, a hidden pattern can be found in Alpha plane 0.
This second pattern contains 19×19 squares of 1x1px.

For the next step we scaled down the first image to match the 19x19px size of the second pattern.
Then we converted each image to a binary file row-wise by setting a bit to 0, if a pixel is black and to 1, if it is white, starting in the upper left corner.

Finally we used this Python-script to perform a bitwise exclusive or operation on the nth byte of each of the files and then combining the result to a string.
This gave us the flag ASIS_08213db585ffe1c93c8f04622c319594

a = open('inner.bin', 'rb')
x = a.read()

b = open('outer.bin', 'rb')
y = b.read()

print ''.join([chr(ord(a) ^ ord(b)) for a,b in zip(x,y)])

Output:

flag = ASIS_08213db585ffe1c93c8f04622c319594

Leave a Reply