crypto - Almost Random 🌱
암호학 1레벨 문제이다! 문제를 읽어보면,충분히 무작위인 것처럼 보입니다.하지만 무작위성이라는 건 보기보다 훨씬 어렵죠.라고 한다! 이제 문제 파일을 받아서 열어보자chall.py라는 파일이 있다. python의 random모듈을 이용한 PRNG(가상 난수 생성기) 역추적 문제라고 생각된다.rng = random.Random()을 통해 생성기를 초기화한다. 파이썬의 이 모듈은 Mersenne Twister 알고리즘을 사용한다.사용자는 최대 700개의 토큰을 받을 수 있고,다음에 나올 32비트 난수를 정확히 맞추면 flag가 출력되는 형식이라고 한다. 이제 핵심은Mersenne Twister는 내부적으로 624개의 32비트 정수 상태를 가지고 있고,624개의 연속된 32비트 난수를 알아낸다면 알고리즘 내부..