So many changes....

Made IP lookups much nicer to look at, added subdomain lookups

Fixed some bugs with whois parsing, now AUS eligbility info is properly
obtained
This commit is contained in:
Benjamyn Love 2018-03-20 06:46:05 +11:00
parent 486f9d1017
commit 214be5a275
2 changed files with 41 additions and 14 deletions

View File

@ -3,6 +3,6 @@
"dnsrecords":["A", "AAAA", "MX", "TXT", "NS", "SOA"], "dnsrecords":["A", "AAAA", "MX", "TXT", "NS", "SOA"],
"colour_attn":"red", "colour_attn":"red",
"colour_good":"green", "colour_good":"green",
"colour_pretty":"blue", "colour_pretty":"cyan",
"colour_default":"reset" "colour_default":"reset"
} }

53
main.py
View File

@ -15,7 +15,9 @@ from libs import colours as gc
running = 1 running = 1
prompt = ': ' prompt = ': '
indent = '~ ' indent = '~ '
whoisrecs = ["NotFound", "DomainName", "Registrar", "Status", "UpdatedDate", "CreationDate", "ExpirationDate", "RegistrantName", "RegistrantEmail", "EligibilityName", "EligibilityType", "EligibilityID", "NameServer"] whoisrecs = ["NotFound", "DomainName", "Registrar", "Status", "UpdatedDate", "CreationDate", "ExpirationDate", "RegistrantName", "RegistrantEmail", "EligibilityName", "EligibilityType", "EligibilityID", "RegistrantID", "NameServer"]
#ipData = ["asn_country_code", "asn_description"]
ipData = {"asn_country_code":"Country", "asn_description":"Owner"}
# Loaded from the config file # Loaded from the config file
jsonData = config.readConf() jsonData = config.readConf()
@ -58,17 +60,7 @@ def parseInput(inData):
quit() quit()
if checkIfIP(tmpInData): if checkIfIP(tmpInData):
##IP lookup code ##IP lookup code
print("Got IP address") lookupIP(tmpInData)
with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=UserWarning)
ipnet = Net(tmpInData)
ipobj = IPASN(ipnet)
results = ipobj.lookup()
for key,value in results.iteritems():
print('%s: %s' % (key, value))
rev_name = reversename.from_address(tmpInData)
reverseName = str(dns.resolver.query(rev_name, "PTR")[0])
print('\nPTR: %s' % (reverseName))
else: else:
lookupDomain(tmpInData) lookupDomain(tmpInData)
@ -80,6 +72,20 @@ def recLookup(inData):
except Exception as e: except Exception as e:
pass pass
def subLookup(inData, sub):
try:
data = dns.resolver.query(sub + '.' + inData)
for rdata in data:
if data.qname == data.canonical_name:
for rdata in dns.resolver.query(sub + '.' + inData):
record = rdata
else:
for rdata in dns.resolver.query(sub + '.' + inData, "CNAME"):
record = rdata
print(indent + colour_pretty + "%s:\t%s%s" % (sub, colour_good, record) + colour_default)
except Exception as e:
pass
def lookupDomain(inData): def lookupDomain(inData):
try: try:
result = domainWhois(inData) result = domainWhois(inData)
@ -90,6 +96,26 @@ def lookupDomain(inData):
printWhois(result) printWhois(result)
print("\nDNS Records") print("\nDNS Records")
recLookup(inData) recLookup(inData)
print("\nSubDomains")
for subs in subdomains:
subLookup(inData, subs)
def lookupIP(inData):
with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=UserWarning)
ipnet = Net(inData)
ipobj = IPASN(ipnet)
results = ipobj.lookup()
#for key,value in results.iteritems():
# print('%s: %s' % (key, value))
for types in ipData:
print(indent + "%s%s:%s\t%s%s" % (colour_pretty, ipData[types], colour_good, results[types], colour_default))
rev_name = reversename.from_address(inData)
try:
reverseName = str(dns.resolver.query(rev_name, "PTR")[0])
except Exception as E:
reverseName = E
print('\n' + indent + '%sPTR:%s\t\t%s%s' % (colour_pretty, colour_good, reverseName, colour_default))
# Taken and modified from DNSpy 1, I am not asahmed it works # Taken and modified from DNSpy 1, I am not asahmed it works
def checkIfIP(in1): def checkIfIP(in1):
@ -108,4 +134,5 @@ def checkIfIP(in1):
signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGINT, signal_handler)
while running == 1: while running == 1:
parseInput(raw_input("\nPlease Enter a domain" + prompt) ) parseInput(raw_input("Please Enter a domain" + prompt) )
print('\n')