서브웨이

dreamhack rev-basic-4 풀이 본문

Reverse Engineering/dreamhack

dreamhack rev-basic-4 풀이

샌드위치메이커 2021. 7. 28. 13:12

조금 더 어려워진 리버싱입니다.

 

자 파일을 한번 봅시다.

대충 입력을 넣어주고

일단 참조된 문자열을 중심으로 검증되는 부분을 찾아봅시다.

여기서 그럼 딱봐도 검증하는 함수로 보이는 부분으로 들어갑시다.

 

생각보다 길지는 않습니다.

대충 정리를 해보자면 이렇습니다.

이걸 정리하자면

(문자 >> 4) or ((문자 << 4) and F0) == 암호

이렇게 됩니다.

참고로 암호화된 문자열을 다음과 같습니다.

 

그럼 한번 입력값을 찾아봅시다.

간단하게 brute force 방식으로 모든 문자를 찾는 코드를 짜봅시다.

def guess(c):
    for j in range(33, 128):
        if (j >> 4) | ((j << 4) & 0xF0) == c:
            print(chr(j), end='')
            break


encrypted = [0x24, 0x27, 0x13, 0xC6, 0xC6, 0x13, 0x16, 0xE6, 0x47, 0xF5, 0x26, 0x96, 0x47, 0xF5, 0x46, 0x27, 0x13, 0x26, 0x26, 0xC6, 0x56, 0xF5, 0xC3, 0xC3, 0xF5, 0xE3, 0xE3]

for i in range(0, 27):
    guess(encrypted[i])

짜잔

'Reverse Engineering > dreamhack' 카테고리의 다른 글

dreamhack rev-basic-6 풀이  (0) 2021.07.28
dreamhack rev-basic-5 풀이  (0) 2021.07.28
dreamhack rev-basic-3 풀이  (0) 2021.07.21
dreamhack rev-basic-2 풀이  (0) 2021.07.21
dreamhack rev-basic-1 풀이  (0) 2021.07.21
Comments