CTF/포렌식

[n00bzCTF] QRazy CSV - 포렌식 / PIL / QR코드

SecurityMan 2023. 6. 28. 11:00

 

문제 제목에서 QR 코드라고 힌트를 주고 있는

 

포렌식 문제이다.

 

반응형

 

 

문제에서 주어지는 것은 

 

secret.csv 파일이다.

 

 

해당 파일을 열어보면

 

row, col 이라고 적혀있고

 

그 아래 숫자들이 써있다.

 

row, col 이라는걸 보니 x,y 좌표라고 생각하면 될것 같고,

 

숫자는 x, y 모두 0부터 28까지 적혀있었다.

 

위에도 보면 0 ~ 28 범위 내에서 써있는 숫자도 있고,

 

안써있는 숫자도 있는데

 

써있는 숫자는 1, 안써있는 숫자는 0 으로 분류해서

 

해당 좌표에 색을 칠할지 말지 판단하면 되는듯 했다.

 

이번 문제는 Python PIL 라이브러리를 이용해서 풀었다.

PIL은 Python Imaging Library의 약자로

파이썬으로 이미지 처리를 할 수 있도록 해주는 라이브러리이다.

 


pip install image

pip install pillow

두 명령어를 이용해서 다운로드 받아주면 된다.

 

from PIL import Image

xlen = 29
ylen = 29

new = Image.new('RGB',(xlen,ylen),(255,255,255))

f = open('secret.csv', 'r')

for line in range(427):
	xy = f.readline().rstrip('\n').rstrip('"').lstrip('"')
	x = int(xy.split(',')[0])
	y = int(xy.split(',')[1])
	
	new.putpixel((x,y),(0,0,0))
	
new.save('new.png')

 

코드는 이렇게 작성한다.

 

secret.csv 파일을 읽어서

 

데이터를 불러와 정제한 뒤 

 

x, y 변수에 그 값을 집어넣는다.

 

그리고 그 x, y 좌표 부분을 검은색으로 칠해서

 

새로운 이미지를 생성해 저장하면 끝이다.

 

 

그럼 이렇게 QR 코드가 하나 생성된다.

 

 

온라인 스캐너에 넣으면 플래그를 찾을 수 있다.

반응형