Files
SnarfCode/scripts/test_dns_record_ips.py

31 lines
1.1 KiB
Python

import socket
import sys
def make_query(name):
import random
txid = random.randint(1, 65535)
header = txid.to_bytes(2, 'big') + (0x0100).to_bytes(2, 'big') + (1).to_bytes(2, 'big') + b'\x00\x00\x00\x00\x00\x00'
qname = b''.join([bytes([len(p)]) + p.encode('ascii') for p in name.split('.')]) + b'\x00'
return header + qname + (1).to_bytes(2, 'big') + (1).to_bytes(2, 'big')
def query_ip(server, domain):
packet = make_query(domain)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(2.0)
try:
s.sendto(packet, (server, 53))
data, _ = s.recvfrom(1024)
# Parse answer IP (last 4 bytes of first A record)
if len(data) >= 16:
ip = f"{data[-4]}.{data[-3]}.{data[-2]}.{data[-1]}"
return ip
except Exception as e:
return str(e)
finally:
s.close()
for server in ["140.44.4.36", "140.44.4.65"]:
for dom in ["pihole1.snarfnet.net", "pihole2.snarfnet.net", "dns1.snarfnet.net", "dns2.snarfnet.net", "ns1.snarfnet.net", "ns2.snarfnet.net"]:
ip = query_ip(server, dom)
print(f"[{server}] {dom:<25} -> {ip}")