#!/usr/bin/env python3
import socket
import struct
import time

def send_ptr(service="_http._tcp.local", target="224.0.0.251", port=5353):
    header = struct.pack('>HHHHHH', 0x1234, 0x0000, 1, 0, 0, 0)
    labels = service.split('.')
    name = b''.join([bytes([len(l)]) + l.encode() for l in labels]) + b'\x00'
    question = name + struct.pack('>HH', 12, 0x0001)  # PTR, class IN
    packet = header + question
    
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.settimeout(1)
    # Allow multicast
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    try:
        sock.sendto(packet, (target, port))
        print(f"[*] Sent to {target}:{port}")
    except Exception as e:
        print(f"[!] Error: {e}")
    finally:
        sock.close()

# Send to multicast address
for i in range(10):
    send_ptr()
    time.sleep(0.2)
