old

Hack-me / Why Classical Cipher Sucks (키테이블에 따른 암호)

nopdata 2016. 7. 22. 02:13


Why Classical Cipher Sucks



이 문제 밑에는 두개의 텍스트 박스가 있다. 첫번째 텍스트 박스에 문자를 넣으면 두번째에 암호화된 값이 나온다.

소스코드가 제공되는데 다음과 같다.


_tob64는 키테이블인데 A-Za-z0-1+/= 의 조합이다. php는 아직 까막눈이기 때문이 이 소스를 파이썬으로 수정하였다.



이제 키를 얻어야 하는데 키의 길이는 총 30이다. 원래라면 소스를 일일히 분석해서 알아내야 하지만.. 문제를 보면  각 글자는 각 키에 맞는 값으로 변환된다. 즉, 1번째 키값은 1번째문자의 암호화에만 영향을 주고 2번째에는 영향을 주거나 받지 않는다.

따라서 a를 무작정 길게 넣었을때 30번째 자리부터는 같은 값이 되풀이 된다. a를 30개 넣었을때 나오는 값은

I9G7MBODMRKzMFKPIZODIFKLMFOHMZKHIJOHMFObMBOPMFG7MRKHIJOHMFOb가 된다.

이제 이 값을 가지고 각자리의 키값을 알아내면 된다.



문제를 풀기위한 소스이다. table에는 a를 넣었을때 나와야 할 값들을 저장해놓고 key각자리를 바꿔가며 맞으면 중단시킨다.

이 방법을 이용해 풀게 되면 각자리에 맞는 키값은 passwordisberryberrystrawberry가 되고 문제의 정답은 berryberrystrawberry가 된다


Hack-me Answer : berryberrystrawberry