반응형
설명
https://cryptohack.org/courses/intro/xorkey0/
다음 몇 과제에서는 이전에 배운 내용을 사용하여 XOR 퍼즐을 더 풀어볼 것이다.
단일 바이트로 XOR을 사용하여 데이터를 숨겼지만 그 바이트는 비밀이다.
16진수부터 디코딩하는 것을 잊지 마십시오.
예제 풀이
73626960647f6b206821204f21254f7d694f7624662065622127234f726927756d
이걸 단일 바이트로 xor 했는데 뭐랑 xor 했는지가 비밀인가보다.
그럼 브루트포싱을 해보면 되지 않을까?
cipher = bytes.fromhex('73626960647f6b206821204f21254f7d694f7624662065622127234f726927756d')
for i in range(1, 100) :
search = "".join(chr(c ^ i) for c in cipher)
if('crypto' in search) :
print(search)
우선 hex를 byte로 변경하고 for과 join으로 xor의 self-inverse? 특성을 이용해서
복호화한다. flag는 crypto로 시작하므로 문자열이 crypto가 있으면 그걸 출력한다.
반응형