Files
SnarfCode/scripts/test_dns_packet.py

28 lines
1009 B
Python

import socket
import struct
def test_dns(server_ip, domain="google.com"):
# Build simple DNS query packet
# Transaction ID: 0x1234, Flags: 0x0100 (standard query, recursion desired)
header = struct.pack(">HHHHHH", 0x1234, 0x0100, 1, 0, 0, 0)
qname = b"".join(bytes([len(p)]) + p.encode("ascii") for p in domain.split(".")) + b"\x00"
qtype_qclass = struct.pack(">HH", 1, 1) # A record, IN class
packet = header + qname + qtype_qclass
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(3.0)
try:
sock.sendto(packet, (server_ip, 53))
resp, _ = sock.recvfrom(1024)
print(f"SUCCESS: Received {len(resp)} bytes DNS response from {server_ip} for {domain}!")
# Check answer count
ancount = struct.unpack(">H", resp[6:8])[0]
print(f"Answer count: {ancount}")
except Exception as e:
print(f"FAILED to query {server_ip}: {e}")
finally:
sock.close()
test_dns("140.44.4.36", "google.com")