A powerful Python CLI tool for DNS record enumeration across multiple types (A, AAAA, MX, NS, TXT, and more) and for discovering subdomains using a custom list. Featuring colorful output with ASCII art, live enumeration progress animation, and easy output handling with text files for efficient domain analysis and reconnaissance.
[+] google.com - SOA - ns1.google.com. dns-admin.google.com. 641839268 900 900 1800 60
Traceback (most recent call last):
File "C:\simpledns\dns_enum.py", line 109, in
main()
File "C:\simpledns\dns_enum.py", line 99, in main
resolve_record(domain)
File "C:\simpledns\dns_enum.py", line 38, in resolve_record
answer = dns.resolver.resolve(domain, record)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\dns\resolver.py", line 1305, in resolve
return get_default_resolver().resolve(qname, rdtype, rdclass, tcp, source,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\dns\resolver.py", line 1176, in resolve
timeout = self._compute_timeout(start, lifetime)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\dns\resolver.py", line 997, in _compute_timeout
raise Timeout(timeout=duration)
dns.exception.Timeout: The DNS operation timed out after 5.012404918670654 seconds
AND
Traceback (most recent call last):
File "C:\simpledns\dns_enum.py", line 109, in
main()
File "C:\simpledns\dns_enum.py", line 99, in main
resolve_record(domain)
File "C:\simpledns\dns_enum.py", line 38, in resolve_record
answer = dns.resolver.resolve(domain, record)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\dns\resolver.py", line 1305, in resolve
return get_default_resolver().resolve(qname, rdtype, rdclass, tcp, source,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\dns\resolver.py", line 1173, in resolve
(nameserver, port, tcp, backoff) = resolution.next_nameserver()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\dns\resolver.py", line 626, in next_nameserver
raise NoNameservers(request=self.request, errors=self.errors)
dns.resolver.NoNameservers: All nameservers failed to answer the query xxxx.com. IN RRSIG: Server 192.168.1.1 UDP port 53 answered SERVFAIL; Server 192.168.130.10 UDP port 53 answered SERVFAIL; Server 172.19.0.2 UDP port 53 answered SERVFAIL; Server 192.168.191.32 UDP port 53 answered SERVFAIL
PS C:\simpledns>
please look into this this, and maybe give options for custom dns.
Thanks for this, but this throws up resolver error. tried on linux, linux env, linux wsl2 and windows. Same error:
[+] DNS Enumeration started for : google.com
[+] google.com - A - 142.250.187.238
[+] google.com - MX - 10 smtp.google.com.
[+] google.com - NS - ns4.google.com. [+] google.com - NS - ns3.google.com. [+] google.com - NS - ns2.google.com. [+] google.com - NS - ns1.google.com.
[+] google.com - TXT - "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e" [+] google.com - TXT - "google-site-verification=wD8N7i1JTNTkezJ49swvWW48f8_9xveREV4oB-0Hf5o" [+] google.com - TXT - "google-site-verification=TV9-DBe4R80X4v0M4U_bd_J9cpOJM0nikft0jAgjmsQ" [+] google.com - TXT - "v=spf1 include:_spf.google.com ~all" [+] google.com - TXT - "MS=E4A68B9AB2BB9670BCE15412F62916164C0B20BB" [+] google.com - TXT - "apple-domain-verification=30afIBcvSuDV2PLX" [+] google.com - TXT - "onetrust-domain-verification=de01ed21f2fa4d8781cbc3ffb89cf4ef" [+] google.com - TXT - "globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8=" [+] google.com - TXT - "docusign=1b0a6754-49b1-4db5-8540-d2c12664b289" [+] google.com - TXT - "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95" [+] google.com - TXT - "cisco-ci-domain-verification=479146de172eb01ddee38b1a455ab9e8bb51542ddd7f1fa298557dfa7b22d963"
[+] google.com - SOA - ns1.google.com. dns-admin.google.com. 641839268 900 900 1800 60 Traceback (most recent call last): File "C:\simpledns\dns_enum.py", line 109, in
main()
File "C:\simpledns\dns_enum.py", line 99, in main
resolve_record(domain)
File "C:\simpledns\dns_enum.py", line 38, in resolve_record
answer = dns.resolver.resolve(domain, record)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\dns\resolver.py", line 1305, in resolve
return get_default_resolver().resolve(qname, rdtype, rdclass, tcp, source,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\dns\resolver.py", line 1176, in resolve
timeout = self._compute_timeout(start, lifetime)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\dns\resolver.py", line 997, in _compute_timeout
raise Timeout(timeout=duration)
dns.exception.Timeout: The DNS operation timed out after 5.012404918670654 seconds
AND
Traceback (most recent call last): File "C:\simpledns\dns_enum.py", line 109, in
main()
File "C:\simpledns\dns_enum.py", line 99, in main
resolve_record(domain)
File "C:\simpledns\dns_enum.py", line 38, in resolve_record
answer = dns.resolver.resolve(domain, record)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\dns\resolver.py", line 1305, in resolve
return get_default_resolver().resolve(qname, rdtype, rdclass, tcp, source,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\dns\resolver.py", line 1173, in resolve
(nameserver, port, tcp, backoff) = resolution.next_nameserver()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\dns\resolver.py", line 626, in next_nameserver
raise NoNameservers(request=self.request, errors=self.errors)
dns.resolver.NoNameservers: All nameservers failed to answer the query xxxx.com. IN RRSIG: Server 192.168.1.1 UDP port 53 answered SERVFAIL; Server 192.168.130.10 UDP port 53 answered SERVFAIL; Server 172.19.0.2 UDP port 53 answered SERVFAIL; Server 192.168.191.32 UDP port 53 answered SERVFAIL
PS C:\simpledns>
please look into this this, and maybe give options for custom dns.
Thanks