ThroughTime은 실행파일과 dll파일을 같이 주는데 메인 함수를 보면 dll에서 code_3 함수를 호출한다.
연도와 문자열을 입력받아 code3에 주는데 저기서 i는 그냥 문자열 길이 체크용
code3을 찾아보면 get_limit에 문자열 길이, 연도를 넣어서 연산한 값을 v4에 저장 후 입력받았던 문자열을 연산하는데 사용한다.
get_limit은 그냥 연도랑 문자열 길이의 차 % 127을 반환해준다.
문제에서 암호화된 문자열을 줬으니까 한 번 더 연산만 하면 원래 입력했던 문자열을 찾을 수 있으니까 그게 플래그
연도는 22부터 127 사이 값을 입력받았을 때 문자열을 암호화 하니까 그냥 22부터 127까지 돌려보면 찾을 수 있다.
Flag : TIME-BABY-IS-WATCHING-YOU
import sys
string=['4','(','-','"','K','%','%','+','3','D','!','8','C','6','-','%','5',';','9',';','=','X','-','(','/']
#for century in range(22,128):
# for char in string:
def get_limit(century, leng):
if century > leng:
return century - leng
else:
return leng - century
cnt=0
for century in range(22,128):
cnt=0
chk=get_limit(century, len(string))
print ""
print "======================="+str(century)+"========================"
for flag in string:
if cnt == chk:
cnt=0
try:
sys.stdout.write(chr((ord(flag)^(century + cnt))-1))
cnt=cnt+1
except:
cnt=cnt+1
'Write Up > Wargame' 카테고리의 다른 글
didiz writeup (0) | 2018.02.05 |
---|---|
unbreakable (0) | 2018.02.05 |
CCCRrracckkkMMe Write up (0) | 2018.01.29 |