Skip to content

Instantly share code, notes, and snippets.

@suryadana
Created December 17, 2016 03:28
Show Gist options
  • Save suryadana/c6f550e53be833486e9f79139c2abe4a to your computer and use it in GitHub Desktop.
Save suryadana/c6f550e53be833486e9f79139c2abe4a to your computer and use it in GitHub Desktop.
#!/usr/bin/env python2
import socket
import threading
import time
import SocketServer
import random
HOST = "192.168.0.254"
PORT = 4001
WELCOME_MSG = "Format: number1<space><operator><space>number2\n"
ERROR_MSG = "Invalid!\n"
CORRECT_MSG = "Correct!\n"
WRONG_MSG = "Incorrect!\n"
CONGRATS = "CONGRATS DUDE! BUT YOU WON'T GET THE FLAG :P\n"
MAX_TO_SOLVE = 5
class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
def run_equation(self):
stat = True
min_val = 1; max_val = 10
rand_num = random.randint(min_val, max_val)
num_solved = 0
while stat:
check = rand_num * random.randint(0, rand_num)
self.request.sendall("What is equation of {} ?\n".format(check))
self.request.sendall("Equation: ")
equation = self.request.recv(1024)
if len(equation.split()) == 3:
eq = eval(equation)
self.request.sendall(str(eq) + "\n")
if eq == check:
self.request.sendall(CORRECT_MSG)
num_solved += 1
else:
self.request.sendall(WRONG_MSG)
else:
self.request.sendall(ERROR_MSG)
check = rand_num * random.randint(0, rand_num)
if num_solved == MAX_TO_SOLVE:
stat = False
self.request.sendall(CONGRATS)
def handle(self):
self.request.sendall(WELCOME_MSG)
self.run_equation()
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
pass
if __name__ == "__main__":
server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
ip, port = server.server_address
server_thread = threading.Thread(target=server.serve_forever)
server_thread.daemon = False
server_thread.start()
while True:
try:
time.sleep(1)
except:
break
server.shutdown()
server.server_close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment