사실 리버싱적인 부분은 정말 간단해서 그냥 넘어가도 될것같고, 리버싱 보다는 CRC 알고리즘 자체에 대한 문제라고 보는게 맞을 것 같다.
문제를 풀기 위해서는 CRC 연산, 그리고 CRC의 역연산에 대한 고민을 해봐야 한다.
이에 대한 내용은
위 링크에 너무 잘나와있어 위 글을 참고하는 것을 추천함(도움 많이 받았습니다 감사합니다)
사실 위 글을 보아도 어떻게 해야할지 감도 안오는데, 왜냐하면 연산을 알든 역연산을 알든
8글자를 모르고 8글자 전부 브루트 포싱해야한다는 것은 변하지 않는 사실이기 때문이다.
하지만 대략 n^8 정도 되는 연산량을 n^4*log(n^4) 정도로는 줄일 수가 있다. 이 과정에서 연산/역연산 모두 필요하다.
키워드만 던지자면 '정렬 후 바이너리 서치' 정도만 던진다.
하지만 python으로 짜면 절대 안나와서(실제로 파이썬 잘 안쓰고 C++만 쓰다보니 시간 예상도 C++로 하는바람에 파이썬으로 짰다가 C++로 다시짜는 삽질을..)
C++로 코딩하여 해결했다.
포스팅이야 간단하지만 이거 보려고 진짜 개고생..
드디어 50위 안에 들었다 ㅠㅠ
'reversing' 카테고리의 다른 글
Reversing.kr Metroapp (0) | 2016.03.10 |
---|---|
PIN Tool 가이드 (1) | 2016.01.06 |
reversing.kr windows kernel (1) | 2015.12.31 |