Hi,
I noticed some unexpected answers in exitmap's [1] dnsenum results and suspected that this has todo with IPv4 vs. IPv6.
First I looked at [2] and found that it only lists IPv4 and hostnames as possible answers but then I realized that exitmap might not be using the RESOLVE command?
def resolve(self, domain): """ Resolve the given domain using Tor's SOCKS resolution extension. """ domain_len = len(domain) if domain_len > 255: raise error.SOCKSv5Error("Domain must not be longer than 255 " "characters, but %d given." % domain_len) # Tor defines a new command value, \x0f, that is used for domain # resolution. self._send_all("\x05\xf0\x00\x03%s%s%s" % (chr(domain_len), domain, "\x00\x00")) resp = self._recv_all(10) if resp[:2] != "\x05\x00": raise error.SOCKSv5Error("Invalid server response: 0x%s" % resp[1].encode("hex")) return socket.inet_ntoa(resp[4:8])
Does Tor's SOCKS resolution extension support IPv6 answers or does it only attempt A records?
I'm aiming to resolve a hostname and would like to get the IPv4 and if available the IPv6 address.
thanks, nusenu
[1] https://github.com/NullHypothesis/exitmap [2] https://gitweb.torproject.org/torspec.git/tree/control-spec.txt#n1349