반응형
- 주어진 파일은 겉보기엔 같은 파일이다.
- 하지만 속성을 확인해 보면 파일 크기가 다르다.
- sudo apt-get install imagemagick
- compare명령어로 각 파일을 비교한다.
- display명령어로 둘의 다른 부분을 diff.png로 저장하였다.
- 왼쪽 상단에 빨간 픽셀이 보인다.
- 빨간색과 아닌 부분을 0과 1로 구분하여 바이너리로 표현한 후 문자열로 바꾸면 될 것 같다.
from PIL import Image
f=Image.open("E:/forensics/CTF-d/Multimedia/32/diff.png")
for i in range(f.size[0]):
for j in range(f.size[1]):
pixel=f.getpixel((0,0))
print(pixel)
- (0,0) 좌표의 픽셀값을 뽑아보니 (193,0,24,255)가 나왔다.
- 이것과 같은 픽셀을 가진 위치를 뽑으면 구간을 알 수 있을 것 같다.
from PIL import Image
f=Image.open("E:/forensics/CTF-d/Multimedia/32/diff.png")
for i in range(f.size[0]):
for j in range(f.size[1]):
pixel=f.getpixel((i,j))
if pixel == (193,0,24,255):
print(i,j,pixel)
- 출력결과가 살짝 이상하다.......
- 너비는 48까지이고, 높이는 6까지 인 것 같은데 마지막 결과에서 높이가 1로 끝난다.....;;;;
from PIL import Image
f=Image.open("E:/forensics/CTF-d/Multimedia/32/diff.png")
result=""
for i in range(49):
byte=""
for j in range(7):
pixel=f.getpixel((i,j))
print("[%d,%d] %s"%(i,j,pixel))
- 오우......빨간색 픽셀이 하나가 아니였다.....
- 미세하게 다르다........
- 그냥 이미지 두개를 비교하여 틀린부분을 바이너리로 바꿔야 할 것 같다.
from PIL import Image
img1=Image.open("E:/DaJung/forensics/CTF-d/Multimedia/32/original.png")
img2=Image.open("E:/DaJung/forensics/CTF-d/Multimedia/32/encrypted.png")
result = ""
for x in range(49):
byte = ""
for y in range(7):
pixel_img1 = img1.getpixel((x,y))
pixel_img2= img2.getpixel((x,y))
if pixel_img1 != pixel_img2:
byte += '1'
else:
byte += '0'
#print(byte)
result += chr(int(byte,2)) # byte를 원래 문자로 변환
print(result)
- 출력값 중에 { }안의 값을 SHA256으로 해쉬값을 생성하면 플래그가 나온다.
- Flag : BDFA42FD05BFA808E9BCB63786ED3983353AC7F6874C37046722AB5944C79F0D
반응형
'#Digital Forensic with CTF > CTF-d_Multimedia' 카테고리의 다른 글
CTF-d_Multimedia #34 broken (0) | 2020.10.20 |
---|---|
CTF-d_Multimedia #33 Find Key(Image) (0) | 2020.10.20 |
CTF-d_Multimedia #31 Find Key(Hash) (0) | 2020.10.19 |
CTF-d_Multimedia #30 Listen carefully!! (0) | 2020.10.19 |
CTF-d_Multimedia #29 답을 찾기 위해 돋보기를 써라! (0) | 2020.10.19 |