Skip to content

Commit b35e72f

Browse files
committed
Added timeout option to recursive check to avoid waiting for ever to a response.
1 parent 4ce684b commit b35e72f

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

dnsrecon.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -884,21 +884,21 @@ def check_bindversion(ns_server, timeout):
884884
return version
885885

886886

887-
def check_recursive(ns_server):
887+
def check_recursive(ns_server, timeout):
888888
"""
889889
Check if a NS Server is recursive.
890890
"""
891891
is_recursive = False
892892
query = dns.message.make_query('www.google.com.', dns.rdatatype.NS)
893893
try:
894-
response = dns.query.udp(query, ns_server)
894+
response = dns.query.udp(query, ns_server, timeout)
895895
recursion_flag_pattern = "\.*RA\.*"
896896
flags = dns.flags.to_text(response.flags)
897897
result = re.findall(recursion_flag_pattern, flags)
898898
if (result):
899899
print_error("\t Recursion enabled on NS Server {0}".format(ns_server))
900900
is_recursive = True
901-
except (socket.error):
901+
except (socket.error, dns.exception.Timeout):
902902
return is_recursive
903903
return is_recursive
904904

@@ -961,7 +961,7 @@ def general_enum(res, domain, do_axfr, do_google, do_spf, do_whois, zw):
961961
print_status('\t {0} {1} {2}'.format(ns_rcrd[0], ns_rcrd[1], ns_rcrd[2]))
962962

963963
# Save dictionary of returned record
964-
recursive = check_recursive(ns_rcrd[2])
964+
recursive = check_recursive(ns_rcrd[2], res._res.timeout)
965965
bind_ver = check_bindversion(ns_rcrd[2], res._res.timeout)
966966
returned_records.extend([
967967
{'type': ns_rcrd[0], "target": ns_rcrd[1], 'address': ns_rcrd[2], 'recursive': str(recursive),

0 commit comments

Comments
 (0)