def get_dns_answer_to_mdns_lwip(tester_host, id): dns = dpkt.dns.DNS(b'\x5e\x39\x84\x00\x00\x01\x00\x01\x00\x00\x00\x00\x0a\x64\x61\x76\x69\x64' b'\x2d\x63\x6f\x6d\x70\x05\x6c\x6f\x63\x61\x6c\x00\x00\x01\x00\x01\xc0\x0c' b'\x00\x01\x00\x01\x00\x00\x00\x0a\x00\x04\xc0\xa8\x0a\x6c') dns.qd[0].name = tester_host dns.an[0].name = tester_host dns.an[0].ip = socket.inet_aton('127.0.0.1') dns.an[0].rdata = socket.inet_aton('127.0.0.1') dns.id = id print('Created answer to mdns (lwip) query: {} '.format(dns.__repr__())) return dns.pack()
def get_dns_answer_to_mdns(tester_host): # type:(str) -> dpkt.dns.Msg dns = dpkt.dns.DNS() dns.op = dpkt.dns.DNS_QR | dpkt.dns.DNS_AA dns.rcode = dpkt.dns.DNS_RCODE_NOERR arr = dpkt.dns.DNS.RR() arr.cls = dpkt.dns.DNS_IN arr.type = dpkt.dns.DNS_A arr.name = tester_host arr.ip = socket.inet_aton('127.0.0.1') dns.an.append(arr) console_log('Created answer to mdns query: {} '.format(dns.__repr__())) return dns.pack()
def get_dns_answer_to_mdns(tester_host): dns = dpkt.dns.DNS(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') dns.op = dpkt.dns.DNS_QR | dpkt.dns.DNS_AA dns.rcode = dpkt.dns.DNS_RCODE_NOERR arr = dpkt.dns.DNS.RR() arr.cls = dpkt.dns.DNS_IN arr.type = dpkt.dns.DNS_A arr.name = tester_host arr.ip = socket.inet_aton('127.0.0.1') dns. an.append(arr) print("Created answer to mdns query: {} ".format(dns.__repr__())) return dns.pack()
def mdns_server(esp_host): global g_done UDP_IP = "0.0.0.0" UDP_PORT = 5353 MCAST_GRP = '224.0.0.251' sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) sock.bind((UDP_IP, UDP_PORT)) mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY) sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) dns = dpkt.dns.DNS( b'\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01' ) sock.settimeout(30) resp_dns = dpkt.dns.DNS( b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' ) resp_dns.op = dpkt.dns.DNS_QR | dpkt.dns.DNS_AA resp_dns.rcode = dpkt.dns.DNS_RCODE_NOERR arr = dpkt.dns.DNS.RR() arr.cls = dpkt.dns.DNS_IN arr.type = dpkt.dns.DNS_A arr.name = u'tinytester.local' arr.ip = socket.inet_aton('127.0.0.1') resp_dns.an.append(arr) sock.sendto(resp_dns.pack(), (MCAST_GRP, UDP_PORT)) while g_run_server: try: m = sock.recvfrom(1024) dns = dpkt.dns.DNS(m[0]) if len(dns.qd) > 0 and dns.qd[0].type == dpkt.dns.DNS_A: if dns.qd[0].name == u'tinytester.local': print(dns.__repr__(), dns.qd[0].name) sock.sendto(resp_dns.pack(), (MCAST_GRP, UDP_PORT)) if len(dns.an) > 0 and dns.an[0].type == dpkt.dns.DNS_A: if dns.an[0].name == esp_host + u'.local': print("Received answer esp32-mdns query") g_done = True print(dns.an[0].name) dns = dpkt.dns.DNS( b'\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01' ) dns.qd[0].name = esp_host + u'.local' sock.sendto(dns.pack(), (MCAST_GRP, UDP_PORT)) print("Sending esp32-mdns query") time.sleep(0.5) sock.sendto(resp_dns.pack(), (MCAST_GRP, UDP_PORT)) except socket.timeout: break except dpkt.UnpackError: continue
def get_mdns_service_query(service): # type:(str) -> dpkt.dns.Msg dns = dpkt.dns.DNS() dns.op = dpkt.dns.DNS_QR | dpkt.dns.DNS_AA dns.rcode = dpkt.dns.DNS_RCODE_NOERR arr = dpkt.dns.DNS.RR() arr.cls = dpkt.dns.DNS_IN arr.type = dpkt.dns.DNS_SRV arr.name = service arr.target = socket.inet_aton('127.0.0.1') arr.srvname = service dns.qd.append(arr) console_log('Created mdns service query: {} '.format(dns.__repr__())) return dns.pack()
def get_dns_answer_to_service_query( mdns_service): # type:(str) -> dpkt.dns.Msg dns = dpkt.dns.DNS() dns.op = dpkt.dns.DNS_QR | dpkt.dns.DNS_AA dns.rcode = dpkt.dns.DNS_RCODE_NOERR arr = dpkt.dns.DNS.RR() arr.name = mdns_service arr.cls = dpkt.dns.DNS_IN arr.type = dpkt.dns.DNS_SRV arr.priority = 0 arr.weight = 0 arr.port = 100 arr.srvname = mdns_service arr.ip = socket.inet_aton('127.0.0.1') dns.an.append(arr) console_log('Created answer to mdns query: {} '.format(dns.__repr__())) return dns.pack()
def get_dns_query_for_esp(esp_host): dns = dpkt.dns.DNS(b'\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01') dns.qd[0].name = esp_host + u'.local' print("Created query for esp host: {} ".format(dns.__repr__())) return dns.pack()