GryphonCTF_2016: I Need You

Category: Misc Points: 25 Description:

I need you to fix my QR code for me pls! This may help: 00010 Creator - Shawn Pang (@Optixal)



Credits to @zst123 [Manzel Seet] for eliminating the original possibilities(hahaha).

We are given a broken QR code. 00010 refers to the format string, with error correction M and mask pattern 2 (column) mod 3 == 0. Generator polynomial is 10100110111.

Firstly, we need to pad the format string on the right with zeroes till the length of 15, then we need to remove the zeroes on the lefs.

format =    00010
format =    000100000000000
format =    100000000000

Then, we need to pad the generator polynomial till the same length as the format.

generator = 10100110111
generator = 101001101110

Next, we have to xor it.

product = 101001101110 ^ 100000000000
product = 001001101110
product = 1001101110

As the resulting product is 10 bits, we can stop here. Now we can join the previous format bit string with the product string,

combined = format + product
combined = 00010 + 1001101110
combined = 000101001101110

Lastly, we need to XOR it again,

final = combined ^ 101010000010010
final = 000101001101110 ^ 101010000010010
final = 101111001111100

Using the table below, we can now encode this last final format/mask string into our QR code.


format attempt

Hm... it still doesn't scan... We go back to our table of format version table. Searching for the initial hint, we get 000100000111011. Pattern 7, with ECC H.


Encoding it again this time around with the new format/mask string, we get this QR code.


Scanning it, gives us the flag. We had done all the math for nothing. T.T

Therefore, the flag is GCTF{w3lc0m3_70_7h3_m47r1x}.