refactor script into remote challenge client

This commit is contained in:
Tuan-Dat Tran
2026-03-21 12:48:21 +01:00
parent a412c6432e
commit 9432ee1412

View File

@@ -1,28 +1,37 @@
import math
import re
import socket import socket
from threading import Thread
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) HOST = "challenge01.root-me.org"
host = "challenge01.root-me.org" PORT = 52002
port = 52002
serversocket.bind((host, port))
class client(Thread): def solve_prompt(prompt: str) -> str:
def __init__(self, socket, address): match = re.search(
Thread.__init__(self) r"square root of\s*(\d+)\s*and multiply by\s*(\d+)",
self.sock = socket prompt,
self.addr = address re.IGNORECASE,
self.start() )
if not match:
raise ValueError("Unsupported challenge prompt")
def run(self): left = int(match.group(1))
while 1: right = int(match.group(2))
print("Client sent:", self.sock.recv(1024).decode()) return str(math.sqrt(left) * right)
self.sock.send(b"Oi you sent something to me")
serversocket.listen(5) def main() -> None:
print("server started and listening") with socket.create_connection((HOST, PORT), timeout=2) as conn:
while 1: prompt = conn.recv(4096).decode(errors="replace")
clientsocket, address = serversocket.accept() print(prompt, end="")
client(clientsocket, address)
answer = solve_prompt(prompt)
conn.sendall((answer + "\n").encode())
result = conn.recv(4096).decode(errors="replace")
print(result, end="")
if __name__ == "__main__":
main()