[문제풀이] reversing.kr - Position Wargames/reversing.kr2017. 7. 7. 10:21
문제를 풀기 전에 ReadMe.txt 파일을 보도록 하자 .
문제의 요지는 프로그램에서 시리얼 넘버가 76876-77776 과 같을 때의 이름을 찾아라.
위의 파일로 보아 끝자리는 p로 끝나며 총 4글자임을 짐작해볼 수 있겠다.
일단 시리얼 넘버를 넣어놓고 분석을 진행해보자.
우선 이름을 입력하는 곳에 이름을 입력할 경우 기본적인 검증을 진행한다.
복잡하지 않으니 그냥 말로만 간단히 적도록 하겠다.
1. 문자열이 4개로 구성되어 있는가 ?
2. 입력된 글자가 알파벳 소문자로 구성되어 있는가 ?
3. 입력된 문자열 중 중복된 문자가 존재하는가 ?
위 사항을 만족하면 입력된 이름을 기준으로 시리얼과 매칭 작업을 진행하게 된다.
로직은 첫번째 글자와 세번째 글자가 동일하게 적용되고
두번째 글자와 네번째 글자가 동일하게 적용된다.
이것이 첫번째/세번째 글자를 이용한 로직
EBP-20 = (CL & 1) + 5; - 1
EBP-1D = ((BL >> 3) & 1) + 5 - 2
EBP-1F = ((CL >> 1) & 1) + 5 - 3
EBP-1E = ((DL >> 2) & 1) + 5 - 4
EBP-1C = ((AL >> 4) & 1) + 5 - 5
이것이 두번째/네번째 글자를 적용한 로직
BL = (((BL >> 2) & 1) +1) - 1
EBP-25 = ((DL >> 3) & 1) + 1 - 2
EBP-24 = ((AL >> 4) & 1) + 1 - 3
EBP-28 = (CL & 1) + 1 - 4
EBP-27 = ((CL >> 1) & 1) + 1 - 5
위에 나온 순서대로 첫번째 글자와 두번째 글자, 세번째 글자와 네번째 글자를 통해 나온 값을 더해서 시리얼 넘버를 생성하고 입력된 시리얼 넘버와 비교한다.
단순 3글자라서 브루트포스도 가능할 거 같긴 한데 (최대 약 3^26승 , 동일 문자열 제외/맞나?- -) 그럼 의미가 없으니 이렇게 진행해보았다.
사실 애플리케이션에 브루트포싱을 자동화돌리는 건 나한텐 의미있을수도 있겠다.
해본적이 없기 때문에 이 또한 도전이 되리..
위의 경우의 수를 직접 판단해서 답을 작성해도 되지만,
간단히 프로그램 하나짜면 금방 답을 얻을 수 있다.
'Wargames > reversing.kr' 카테고리의 다른 글
[문제풀이] reversing.kr - ransomeware (0) | 2017.07.07 |
---|---|
[문제풀이] reversing.kr - HateIntel (0) | 2017.07.07 |
[문제풀이] reversing.kr - Twist1 (0) | 2017.07.07 |
[문제풀이] reversing.kr - ImagePrc (0) | 2017.07.07 |
[문제풀이] reversing.kr - Direct3D FPS (1) | 2017.07.07 |