반응형
설명
https://cryptohack.org/courses/intro/xorkey1/
내 비밀키로 암호화 했는데, 당신은 절대 추측할 수 없을 것이다.
! 플래그 형식과 이 과제에 도움이 될 수 있는 방법을 기억하라.
예제 풀이
0e0b213f26041e480b26217f27342e175d0e070a3c5b103e2526217f27342e175d0e077e263451150104
from Crypto.Util.number import *
cipher = 0x0e0b213f26041e 480b26217f27342e175d0e070a3c5b103e2526217f27342e175d0e077e2634511501 04
for i in range(0x6d79584f526b65 00000000000000000000000000000000000000000000000000000000000000000000 79, 0x6d79584f526b66 00000000000000000000000000000000000000000000000000000000000000000000 79, 0x100):
flag = str(long_to_bytes(cipher ^ i))
print(flag)
crypto{} 형식인 것을 알고 있으므로 일부를 구한다. 그래도 브루트포싱을 하는 것은 시간이 너무 오래 걸린다.
그렇다기엔 풀 수 있는 방법이 없다. 내용이 48~01까지 띄어쓰기로 싸인 부분인데
이건 어떤 문자든 될 수 있기 때문이다.
이런걸 문제로 만들려면 키의 길이가 짧아서 계속계속 사용되었어야 풀릴 것이다.
이를테면 crypto{ 까지 구한게 키라던가.
앞 부분이 뭔가 0x6? 로 시작하는게 영문자일거 같아서 출력해보니 이렇게 나온다.
myXORke
뒤에 y만 들어가면 되겠네.
cipher = bytes.fromhex('0e0b213f26041e480b26217f27342e175d0e070a3c5b103e2526217f27342e175d0e077e263451150104')
key = [0x6d, 0x79, 0x58, 0x4f, 0x52, 0x6b, 0x65, 0x79]
# print(bytes.fromhex('6d79584f526b6579'))
i=0
for c in cipher :
print(chr(c ^ key[i%8]), end='')
i += 1
이건 좀 어려웠다.
Introduction to Cryptohack 코스를 마쳤다.
반응형