WarGame/DigitalForensic with CTF

    [DigitalForensic] with CTF QR코드를 발견했지만

    QR.jpg를 다운로드 받으면 QR Code의 경계선이 일부 잘려있는것을 확인할 수 있다. 그림판으로 픽셀깎는 노인이 되었다. 경계선 약간은 보이기에 그대로 복원해주었다. 노가다를 통해서 KEY를 얻을 수 있었다.

    [DigitalForensic] with CTF 저는 이미지에서 어떤 것을…

    자료는 logo.gif 아래와 같이 생겼다. 확장자가 gif인게 눈에 띈다. 아마 프레임단위로 쪼개면 유의미한 결과를 볼 수 있을거 같다. Split animated GIF image in frames (free online tool) This online tool is designed to convert an animated GIF (and WebM, APNG, MNG, AVIF) image into individual frames for editing or viewing them separately. ezgif.com 다음과 같은 KEY가 포함된 사진을 프레임단위에서 추출할 수 있었다.

    [DigitalForensic] with CTF flagception

    logo.png를 다운로드 받으면 다음과 같은 logo를 얻을 수 있다. stegsolve로 확인하던 도중 파란깃발 위쪽에 특이한 패턴이 발견되었다. 사진의 크기는 7*20으로 딱 가로한줄에 한글자로 20글자가 나오게 생겼다. 해당하는 사진을 잘라서 흑색은 1, 백색은 0으로 문자로 변환시켜보았다. 사용된 코드는 아래와 같다. from PIL import Image if __name__=="__main__" : im = Image.open("file.png") B = (0,0,0,255) W = (255,255,255,255) ans = "" x = im.size[0] y = im.size[1] for i in range(y) : ans="" for j in range(x) : if(im.getpixel..

    [DigitalForensic] with CTF 아나그램(Anagram) 할 사람?…

    다운로드 받으면 많은양의 데이터가 있는 엑셀을 얻을 수 있다. 스크립트가 파일에 걸려있으니 이를 확인해보자 스크립트를 보면 Environ("USERPROFILE") & "\fileXYZ.data"를 생성하는 것을 볼 수 있다. 그러니까 이게 Window10기준으로는 사용자 폴더아래 fileXYZ.data가 생성된다. 생성된 파일을 HXD로 열어보자 시그니처를 보아하니 ELF파일이다. 리눅스에서 가동시켜보자 다음과 같은 KEY를 얻을 수 있었다.

    [DigitalForensic] with CTF basisSixtyFour…

    mystery.zip을 압축해제하면 2개의 이미지를 구할 수 있다. 두개인데, 두개의 차이를 계산하면 되는거 같다. 방법 1. StegSolve를 사용해서 Image Combine 기능을 이용해서 다음과 같은 KEY를 얻을 수 있었다. 방법2. 그래도 직접 계산하는게 실력증진에 좋을거 같아서 다음과 같은 python코드를 만들어 보았다. from PIL import Image if __name__=="__main__" : im1_target = "mystery1.png" im2_target = "mystery2.png" output_file = "output.png" im1 = Image.open(im1_target) im2 = Image.open(im2_target) width,height = im1...

    [DigitalForensic] with CTF 우리는 grayD의 49개 음영을 가지고 있습니다.

    자료는 다음과 같다. 으앜 지직거린다. 처음 문제를 풀기위해서 접근한 방식은 어쩌면 흑(#000000)~백(#FFFFFFF)이 아닌 유채색이 존재하지 않을까 였다. 그 의미에서 그러한 pixel을 찾기위해서 다음과 같은 코드를 구성했었다. from PIL import Image if __name__=="__main__" : im = Image.open("shades.png") width,height = im.size for x in range(width) : for y in range(height) : r,g,b = im.getpixel((x,y)) if(r!=g or g!=b or r!=b) : print("x : {0} y : {1} {2}".format(x,y,str(im.getpixel((x,y)..