
레코드샵에서 한 솔로 사운드트랙을 찾았다... 돈 벌어서 사러 가야지..
암호학보다는 문자 인코딩 포멧 익히기에 가깝다.
100번의 쿼리에 대해서 제대로 복호화를 해내면 된다.
당연히 문제에서 어떠한 방식으로 인코딩한 것인지 알려준다.
from pwn import * # pip install pwntools
import json
import base64
import codecs
from Crypto.Util.number import bytes_to_long, long_to_bytes
r = remote('socket.cryptohack.org', 13377, level = 'debug')
def json_recv():
line = r.recvline()
return json.loads(line.decode())
def json_send(hsh):
request = json.dumps(hsh).encode()
r.sendline(request)
for i in range(100):
received = json_recv()
'''
print("Received type: ")
print(received["type"])
print("Received encoded value: ")
print(received["encoded"])
'''
typeGet = received["type"]
encoded = received["encoded"]
if(typeGet == "base64"):
decoded = base64.b64decode(encoded).decode()
elif(typeGet == "hex"):
decoded = bytes.fromhex(encoded).decode()
elif(typeGet == "rot13"):
decoded = codecs.decode(encoded, 'rot13')
elif(typeGet == "bigint"):
decoded = long_to_bytes(int(encoded, 16)).decode()
else:
decoded = "".join(chr(i) for i in encoded)
to_send = {
"decoded": decoded
}
json_send(to_send)
json_recv()