41 lines
1.1 KiB
Python
Executable File
41 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env nix-shell
|
|
#!nix-shell -i python3 -p "python3.withPackages (ppkgs: with ppkgs; [ pwntools ])"
|
|
|
|
from pwn import *
|
|
|
|
ADDR, PORT, *_ = "fickle-tempest.picoctf.net 61388".split()
|
|
|
|
def recv_question(r: remote) -> list[str]:
|
|
r.recvuntil(b'the')
|
|
xs = r.recvuntil(b'as a word.').decode().removesuffix('as a word.').strip().split(' ')
|
|
return xs
|
|
|
|
def send_answer(r: remote, answer: str):
|
|
r.recvuntil(b'Input:\n')
|
|
r.sendline(answer.encode())
|
|
|
|
def main():
|
|
r = remote(ADDR, PORT)
|
|
|
|
binary = recv_question(r)
|
|
answer = ''.join(chr(int(c, 2)) for c in binary)
|
|
print(f"{binary} -> {answer}")
|
|
send_answer(r, answer)
|
|
|
|
octals = recv_question(r)
|
|
answer = ''.join(chr(int(c[1:], 8)) for c in octals)
|
|
print(f"{octals} -> {answer}")
|
|
send_answer(r, answer)
|
|
|
|
hx = recv_question(r)[0]
|
|
hx_chunks = [hx[i:i+2] for i in range(0,len(hx),2)]
|
|
answer = ''.join(chr(int(c, 16)) for c in hx_chunks)
|
|
print(f"{hx} -> {answer}")
|
|
send_answer(r, answer)
|
|
|
|
print(r.recvall().decode())
|
|
r.close()
|
|
|
|
if __name__ == "__main__":
|
|
main()
|