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

service = "_http._tcp.local"
header = struct.pack(">HHHHHH", 0x1234, 0x0000, 1, 0, 0, 0)
labels = service.split(".")
qname = b"".join(bytes([len(label)]) + label.encode() for label in labels) + b"\x00"
question = qname + struct.pack(">HH", 12, 1)  # PTR IN
packet = header + question

targets = ["224.0.0.251", "127.0.0.1"]

for i in range(15):
    for target in targets:
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 1)
        sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_LOOP, 1)
        sock.sendto(packet, (target, 5353))
        sock.close()
    time.sleep(0.15)

print("sent PTR queries to multicast and loopback")
