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/