refactor script into remote challenge client
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user