[그림 1] 문제


Matrix에서는 문제에서 딱히 힌트가 없어보였습니다.

그런데 문제에서 visualize라는 단어에서 한 가지 힌트를 얻을 수 있었습니다.

KUCIS수업을 들으면서 전북대 정보보호 동아리 사람들과 이야기를 하면서 보이게 하도록 해보는 게 어떨까 해서 matrix.txt의 헥사 값을 이진수로 보도록 하였습니다.

[그림 2] matrix.txt 파일


이 파일은 matrix.txt에서 쓰여진 헥스값입니다. 이 값을 이진수로 바꿔보면 다음 [그림 3]과 같습니다.

[그림 3] 이진수로 바꾼 matrix.txt


이 값을 다시 흑백의 네모로 구분해보면, QR코드와 같은 모습을 볼 수 있습니다.

[그림 4]는 SecuMaster 회장의 노가다를 통해 탄생한 QR코드입니다.


[그림 4] 노가다를 통한 QR코드


하지만 [그림 4]와 같은 방법으로 QR코드로 만들어보았지만, 제대로 실행이 되지 않았습니다.

이 이유는 QR코드의 세 개의 큰 정사각형을 보면 살짝 튀어나온 부분이 있는 것을 볼 수 있습니다.


이는 SecuMaster 부회장이 발견한 힌트이며, QR코드에는 중복되는 코드가 있다는 것을 발견하였습니다.

중복된 부분은 [그림 5]와 같습니다.

[그림 5] 중복된 코드 부분


이를 삭제하고, python 코드를 통해 이미지를 만들게 되면, 다음과 같은 소스를 통해 QR코드를 작성할 수 있습니다.

from PIL import Image, ImageDraw
key ="""0000000000000000000000000000000 0111111101110001111111011111110 0100000101001000000000010000010 0101110101000001010000010111010 0101110101101000010010010111010 0101110101001010100000010111010 0100000100100001001100010000010 0111111101010101010101011111110 0000000001011000001011000000000 0010101101101111101110110111110 0011100001111110111100010011110 0111001101001011010000111010110 0101010000101100000011100010110 0001001110100001010101010010000 0100011001100100001101000101000 0101111111001011111110101110110 0010011011011001010110110101010 0001011101000011110101100111010 0010101001100010001100000001010 0010101100101001000000100000110 0101100000101010110011001011010 0111011101010011111101111111100 0000000001000000001011000110110 0111111100000001101101010101000 0100000101100101011111000111010 0101110100111011001001111111010 0101110101011110101011010101100 0101110100010000000101110100000 0100000101100010011001100101100 0111111100000010101001001010000 0000000000000000000000000000000"""
key = key.split(" ")
Image = Image.new("RGB", (32, 32), "white")
for a in range(0,31):
	for b in range(0,31):
             if(key[a][b]=="1"):
                     Image.putpixel((a,b),1)
             else:
                     pass
 
#Image.show()
Image.save("save.png")


PIL이라는 모듈을 따로 설치해야 하는 번거로움이 있지만, 위와 같은 소스를 통해 QR코드를 얻을 수 있습니다.

그리고 그 QR코드를 QR코드 리더기로 보면 [그림 6]과 같이 됩니다.


[그림 6] 문제 해결






+ Recent posts