#!/usr/bin/env python3

import socket
import dns.message
import sys

port = 53

if len(sys.argv) < 2:
    print("Missing resolver IPv4")
    print("usage:", sys.argv[0], "IPv4")
    sys.exit(1)

if len(sys.argv) == 3:
    port = int(sys.argv[2])

host = sys.argv[1]

#host = "185.233.100.100" # Aquilenet
#host = "185.233.100.101" # Aquilenet
#host = "80.67.188.188" # LDN

# Fail to return FORMERR
#host = "89.234.141.66" # ARN
#host = "80.67.169.12" # FDN
#host = "80.67.169.40" # FDN

req = dns.message.make_query('curl.haxx.se', dns.rdatatype.from_text('AAAA'))
data = req.to_wire()
s_data = data[:round(len(data) / 2)]

print("data sent:", s_data)
print("      hex:", " ".join(format(c, "02x") for c in s_data))
print("      bin:", " ".join(format(c, "08b") for c in s_data))

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((host, port))
s.send(s_data)

print()

b_s = 1024
r_data = s.recv(b_s)

print("data recv:", r_data)
print("      hex:", " ".join(format(c, "02x") for c in r_data))
print("      bin:", " ".join(format(c, "08b") for c in r_data))

print()

resp = dns.message.from_wire(r_data)
print(resp)


