Write-up/Reversing
[Dreamhack] rev-basic-4
mameul
2024. 5. 13. 23:52
728x90
풀이
main 함수이다. sub_140001000 함수을 살펴보자.
함수를 살펴보면 byte_140003000에 위치한 배열과 a1의 상위 4비트, 하위 4비트의 위치를 바꾼 값과 비교해서 일치하면 되는 것을 확인할 수 있다.
byte_140003000의 배열값을 복사하고, 파이썬 코드를 작성하자. 배열값의 상위 4비트, 하위4비트의 위치를 바꾸면 원하는 값을 얻을 수 있을 것이다.
data = bytes.fromhex("24 27 13 C6 C6 13 16 E6 47 F5 26 96 47 F5 46 27 13 26 26 C6 56 F5 C3 C3 F5 E3 E3 00 00 00 00 00")
tmp = []
for i in range(28):
a = (data[i]<<4|data[i]>>4)%256
tmp.append(chr(a))
for i in range(28):
print(tmp[i],end='')
여기서 ascii 코드 변환을 제대로 하기 위해서 %256도 해줘야한다.
결과는 이렇게 나왔다.
파일을 실행하여 확인해보면 찾던 입력값인 것을 확인할 수 있다.