반응형
개념 설명
https://cryptohack.org/courses/intro/xor0/
CryptoHack – Home
A fun, free platform to learn about cryptography through solving challenges and cracking insecure code. Can you reach the top of the leaderboard?
cryptohack.org
XOR은 비트가 같으면 0을 반환하고 그렇지 않으면 1을 반혼하는 비트 연산자이다.
교과서에서 XOR 연산자는 ⊕로 표시되지만, 대부분의 과제와 프로그래밍 언어에서는 caret ^이 대신 사용된다.
더 긴 이진수의 경우 비트별 XOR: 0110 ^ 1010 = 1100이다. 우리는 먼저 정수를 십진법에서 이진법으로 변환함으로써 정수를 XOR할 수 있다. 먼저 각 문자를 유니코드 문자를 나타내는 정수로 변환하여 문자열을 XOR 할 수 있다.
문자열 "label"이 주어지면 정수 13으로 각 문자를 XOR 한다. 이런 정수를 다시 문자열로 변환하고 플래그를 crypto{new_string}으로 제출한다.
! python pwntools 라이브러리에는 다양한 유형과 길이의 데이터를 XOR할 수 있는 편리한 xor() 기능이 있다. 그러나 먼저, 이것을 해결하기 위해 스스로 함수를 구현하기를 권한다.
예제
from pwn import *
cipher = b'label'
print(xor(cipher, 13))
cipher = b'label'
print("".join(chr(c ^ 13) for c in cipher))
pwntools를 사용할 때와 사용하지 않을 때
반응형