A simple misc challenge which involves using a TCP connection to play a simple game in which you have to answer to a request with specific words.

For exemple : GORGE FIRE PHREAK must be answered to by STOP-ROLL-DROP

To do so I wrote a simple python script :

import socket
import time

def main():
    # Connect to the server
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(("83.136.249.153", 30914))
    s.recv(4096).decode()
    s.sendall(b"y\n") # We must send 'y' to start the game
    message = s.recv(1024).decode()[19:] # We receive the data
    print(message)
    while True:
        response = create_response(handle_input(message)) # And we answer
        print(response)
        time.sleep(0.5)
        s.sendall(response.encode())
        time.sleep(0.5)
        message = s.recv(4096).decode() # And we start again
        print(message)


def create_response(input:list) -> str:
    back = str()
    for mon in input:
        # Add the correct word
        if mon == "GORGE":
            back += "STOP"
        elif mon == "FIRE":
            back += "ROLL"
        elif mon == "PHREAK":
            back += "DROP"
        back += "-"
    back = back[:-1] # Remove the last '-'
    back += "\n"
    return back

def handle_input(input:str) -> list:
    # Transform the data into a list to make it easier to handle
    data_raw = str()
    for c in input:
        data_raw += c
        if c == "\n": break
    data = list()
    word = str()
    for c in data_raw:
        if c != "," and c != " " and c != "\n":
            word += c
        elif c == ",":
            data.append(word)
            word = ""
    data.append(word)
    return data


if __name__ == "__main__":
    main()