디지털 포렌식 #34 (N0named, John the Ripper)

0

디지털포렌식

목록 보기
100/115

CTF-D를 거의 다 풀어가서, 다른 사이트의 문제를 풀기 시작했다.
아 이게 진짜 풀이가 없어서 내가 혼자서 끙끙 싸매고서 풀면 얻는 쾌감이 진짜 대단하다.

아무튼. 너의 집 비밀번호는? 를 풀어보자.

zip파일을 제공해주고,

cdfa
친한 이성친구: 야, 너 컴퓨터 잘 알지? 
내가 과제를 압축할때 비밀번호로 내 생년월일 6 자리를 썼는데
그 뒤에 영어 소문자가 하나 더 들어갔나봐 ㅠㅠ 비밀번호좀 찾아줘. 
부탁 할께. 아마 실수로 들어간 영어소문자 하나는 q,w,e,r,t,y 중에 하나일거야! 
내 생일정돈 알지? 아, 그리고 절대로 다른 사람에겐 맡기지 마!

나: 아니 그 정도는 너가 하면 되잖아! 원본파일은 어쩐거야?

라는 단서를 붙여준다. 이러고 Zip 파일 1개를 제공해준다.
처음에는, Brute force가 가장 먼저 떠올랐다.
근데 뭐 힌트가 따로 있지 않을까 싶어서 이것저것 봤는데, File도 단 1개고 뭐 아무것도 없다. 그래서 그냥 Brute-force가 맞다고 생각했다. 문제에서 준 정보는 생년월일 + qwerty뿐이니까.
그래서 했다.

txt = open('C:/Users/samsung/Desktop/pass.txt','w+b')

passwordlist = []
password = ""
for a in range(1900,2022,1):
    for b in range(1,13,1):
        for c in range(1,32,1):
            for d in ['q','w','e','r','t','y']:
                password += str(a)
                if b >= 10:
                    password += str(b)
                elif b < 10:
                    password += '0'
                    password += str(b)
                if c >= 10:
                    password += str(c)
                elif c < 10:
                    password += '0'
                    password += str(c)
                password += d
                password += '\n'
                passwordlist.append(password[2:-1])
                password = ""

for i in passwordlist:
    txt.write((i+'\n').encode())

txt.close()

그래서 조건에 맞게 Python 코드를 작성하고 john the ripper에 사용할 wordlist를 만들었다.

원래 john the ripper는 그냥 shadow에 쓴다.
근데 Zip에 쓰려면, zip2john으로 zip file hash 얻고

john.exe --wordlist=Fiiename.txt hash파일(zip2john으로 생성한)

하면 답을 얻을 수 있다.


https://secnhack.in/crack-zip-files-password-using-john-the-ripper/

http://ctf.no-named.kr:1234/challenges#%EB%84%88%EC%9D%98%20%EC%A7%91%20%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%EB%8A%94?-21

0개의 댓글