왜 그럴까요..?
array=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")

result = ""
x = 0
i = 0
for o in range(27):
    for u in range(91): #왜 91을 넘어가면 안 되는지 모르겠음
        if (x >> 4 | x << 4 & 240) == array [i]:
            i = i + 1
            result += chr(x)
            x = 0
        else:
            x = x + 1

print(result)

이렇게 한번 풀어 봤는데요.. 왜 91을 넘어가면 안 되는 건가요..

array=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")

result = ""
x = 0

for i in range(27):
    while (x >> 4 | x << 4 & 240) != array [i]:
        x = x + 1
    else:
        x = x % 256
        result += chr(x)


print(result)

다르게도 한번 풀어봤는데.. 답이 "Br0ll0ant^bit^dr0bbld^8<_<>" 이렇게 나오네요. 이건 왜 틀리게 나오는 걸까요... 고수님들 도와주세요ㅠㅠ

#reversing
작성자 정보
답변 1

1바이트 중 상위 4비트와 하위 4비트를 바꾼 결과 값입니다.

로직을 분석해보셨다면 아시겠지만 쉽게 생각하면 다시 바꿔주면 됩니다.

array=[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]

print('FLAG : DH{')
for num in array:
    hex_num = str(hex(num)).replace('0x', '')
    print(chr(int(hex_num[1] + hex_num[0], 16)), end='')
print('}')

이런 식으로 작성도 가능하죠

뉴비라 잘 모르겠네요!
궁금증 있으시면 DISCORD : tjdmin1로 연락주세요 :)

2024.07.17. 04:41
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기