import socket, sys, time, threading
def cap(port):
    s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    s.bind(("0.0.0.0",port))
    print(f"[cap {port}] listening",flush=True)
    n=0
    while True:
        data,addr=s.recvfrom(4096)
        n+=1
        if n<=12:
            print(f"[{port}] #{n} from {addr} len={len(data)}",flush=True)
            print("   "+data.hex(),flush=True)
for p in (5058,5055,5057):
    threading.Thread(target=cap,args=(p,),daemon=True).start()
time.sleep(int(sys.argv[1]) if len(sys.argv)>1 else 60)
