# Description
what time(stamp) is it?
Plain Text
복사
# 분석
chall.pyc 파일을 준다.
pyc는 컴파일 된 내용임으로 pyc online decompiler에서 디컴파일해서 소스코드를 추출합니다.
chall.py
대충 코드를 읽어보면 seed를 time.time()을 통해서 생성하고
random.seed(seed)를 넣어준다.
즉 seed만 알 수 있으면 원본 Flag를 복구할 수 있다.
seed는 time.time()에서 현재 시간을 가져오기 때문에 지금 시간을 기준으로 -1씩 하면서 찾으면 나온다.
# Payload
# Decompiled with PyLingual (https://pylingual.io)
# Internal filename: ./chall.py
# Bytecode version: 3.13.0rc3 (3571)
# Source timestamp: 2025-03-15 15:42:49 UTC (1742053369)
import random
import time
seed = int(time.time())
while True:
seed -= 1
print(seed)
flag = list('o1me0T3}h_hTuvar_M4vdCFF3__{l3TY')
random.seed(seed)
random.shuffle(flag)
flag = ''.join(flag)
if flag.startswith('FMCTF'):
print(f'flag = {flag}')
break
Python
복사
# Flag
FMCTF{0h_You_h4v3_Trav3led_T1m3}
Plain Text
복사