import socket, sys, time

BCAST = "255.255.255.255"

def probe(port, msg, label, seconds=3):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind(("0.0.0.0", port))
    s.settimeout(1.0)
    s.sendto(msg, (BCAST, port))
    end = time.time() + seconds
    while time.time() < end:
        try:
            data, addr = s.recvfrom(512)
        except socket.timeout:
            continue
        print(f"[{label}] {addr} -> {data!r}")
    s.close()

probe(49004, b"HF-A11ASSISTHREAD", "AT4")
probe(49005, b"::REQUEST-POLYAIRE-AIRTOUCH-DEVICE-INFO:;", "AT5")
print("done")
