Compare commits

...

2 Commits
master ... 2to3

15 changed files with 109 additions and 103 deletions

View File

@ -1,2 +1,2 @@
import files from . import files
import config from . import config

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,4 +1,4 @@
import files as f from . import files as f
import json import json
import os import os

Binary file not shown.

View File

@ -2,7 +2,7 @@ def openFile(path):
try: try:
myFile = open(path) myFile = open(path)
except Exception as e: except Exception as e:
print e print(e)
pass pass
return myFile return myFile
@ -10,6 +10,6 @@ def closeFile(fileObj):
try: try:
fileObj.close() fileObj.close()
except Exception as e: except Exception as e:
print e print(e)
pass pass

Binary file not shown.

199
main.py
View File

@ -27,12 +27,12 @@ CSVFile = jsonData["country_codes"]
# Endconfig block # Endconfig block
if platform.system().lower() == "linux": if platform.system().lower() == "linux":
import readline import readline
else: else:
colour_attn = "" colour_attn = ""
colour_good = "" colour_good = ""
colour_pretty = "" colour_pretty = ""
colour_default = "" colour_default = ""
running = 1 running = 1
prompt = ': ' prompt = ': '
@ -43,119 +43,122 @@ ipData = {"asn_country_code":"Country", "asn_description":"Owner"}
CountryDict = cc.parseCSV(cc.openCSV(CSVFile)) CountryDict = cc.parseCSV(cc.openCSV(CSVFile))
def domainWhois(inData): def domainWhois(inData):
whoisData = whois.whois(inData).query() whoisData = whois.whois.Whois(inData).query()
return whois.Parser(inData, whoisData[1]).parse() return whois.parser.Parser(inData, whoisData[1]).parse()
def signal_handler(singal, frame): def signal_handler(singal, frame):
quit() quit()
def printWhois(resultData): def printWhois(resultData):
for x in range(0, len(whoisrecs)): for x in range(0, len(whoisrecs)):
try: try:
for item in resultData[whoisrecs[x]]: for item in resultData[whoisrecs[x]]:
if whoisrecs[x] == "Status": if whoisrecs[x] == "Status":
if "ok" in item or "OK" in item: if "ok" in item or "OK" in item:
print(indent + colour_good + '%s: %s' % (whoisrecs[x], item) + colour_default) print(indent + colour_good + '%s: %s' % (whoisrecs[x], item) + colour_default)
else: else:
print(indent + colour_attn + '%s: %s' % (whoisrecs[x], item) + colour_default) print(indent + colour_attn + '%s: %s' % (whoisrecs[x], item) + colour_default)
else: else:
print(indent + '%s: %s' % (whoisrecs[x], item)) print(indent + '%s: %s' % (whoisrecs[x], item))
except Exception as e: except Exception as e:
pass pass
def cnameToA(cname): def cnameToA(cname):
data = dns.resolver.query(cname, "A") data = dns.resolver.query(cname, "A")
for rdata in data: for rdata in data:
return rdata return rdata
def parseInput(inData): def parseInput(inData):
tmpInData = inData.lower() tmpInData = inData.lower()
tmpInData = tmpInData.strip() tmpInData = tmpInData.strip()
if tmpInData == "quit": if tmpInData == "quit":
quit() quit()
if checkIfIP(tmpInData): if checkIfIP(tmpInData):
lookupIP(tmpInData) lookupIP(tmpInData)
else: else:
lookupDomain(tmpInData) lookupDomain(tmpInData)
def recLookup(inData): def recLookup(inData):
for dnsrec in dnsrecords: for dnsrec in dnsrecords:
try: try:
data = dns.resolver.query(inData, dnsrec) data = dns.resolver.query(inData, dnsrec)
for rdata in data: for rdata in data:
rdataTMP = rdata.to_text().split(" ") rdataTMP = rdata.to_text().split(" ")
if dnsrec != "MX": if dnsrec != "MX":
if dnsrec != "NS": if dnsrec != "NS":
print( indent + colour_pretty + "%s:\t%s%s" % (dnsrec, colour_good, rdata) + colour_default) print( indent + colour_pretty + "%s:\t%s%s" % (dnsrec, colour_good, rdata) + colour_default)
else: else:
tmpData = cnameToA(rdata.to_text()) tmpData = cnameToA(rdata.to_text())
print( indent + colour_pretty + "%s:\t%s%s -> %s" % (dnsrec, colour_good, rdata, tmpData) + colour_default) print( indent + colour_pretty + "%s:\t%s%s -> %s" % (dnsrec, colour_good, rdata, tmpData) + colour_default)
else: else:
tmpData = cnameToA(rdataTMP[1]) tmpData = cnameToA(rdataTMP[1])
print( indent + colour_pretty + "%s:\t%s%s -> %s" % (dnsrec, colour_good, rdata, tmpData) + colour_default) print( indent + colour_pretty + "%s:\t%s%s -> %s" % (dnsrec, colour_good, rdata, tmpData) + colour_default)
except Exception as e: except Exception as e:
pass pass
def subLookup(inData, sub): def subLookup(inData, sub):
try: try:
data = dns.resolver.query(sub + '.' + inData) data = dns.resolver.query(sub + '.' + inData)
for rdata in data: for rdata in data:
if data.qname == data.canonical_name: if data.qname == data.canonical_name:
print(indent + colour_pretty + "%s:\t%s%s" % (sub, colour_good, rdata) + colour_default) print(indent + colour_pretty + "%s:\t%s%s" % (sub, colour_good, rdata) + colour_default)
else: else:
for rdata in dns.resolver.query(sub + '.' + inData, "CNAME"): for rdata in dns.resolver.query(sub + '.' + inData, "CNAME"):
print(indent + colour_pretty + "%s:\t%s%s -> %s" % (sub, colour_good, rdata, cnameToA(sub + "." + inData).to_text()) + colour_default) print(indent + colour_pretty + "%s:\t%s%s -> %s" % (sub, colour_good, rdata, cnameToA(sub + "." + inData).to_text()) + colour_default)
except Exception as e: except Exception as e:
pass pass
def lookupDomain(inData): def lookupDomain(inData):
try: try:
result = domainWhois(inData) result = domainWhois(inData)
except Exception as E: except Exception as E:
print('%s : TLD most likely needs to be configured' % (E)) print('%s : TLD most likely needs to be configured' % (E))
result = "Error" result = "Error"
print("\nWhois Information") print("\nWhois Information")
printWhois(result) printWhois(result)
print("\nDNS Records") print("\nDNS Records")
recLookup(inData) recLookup(inData)
print("\nSub Domains") print("\nSub Domains")
for subs in subdomains: for subs in subdomains:
subLookup(inData, subs) subLookup(inData, subs)
def lookupIP(inData): def lookupIP(inData):
with warnings.catch_warnings(): try:
warnings.filterwarnings("ignore", category=UserWarning) with warnings.catch_warnings():
ipnet = Net(inData) warnings.filterwarnings("ignore", category=UserWarning)
ipobj = IPASN(ipnet) ipnet = Net(inData)
results = ipobj.lookup() ipobj = IPASN(ipnet)
for types in ipData: results = ipobj.lookup()
if types == "asn_country_code": for types in ipData:
print(indent + "%s%s:%s\t%s%s" % (colour_pretty, ipData[types], colour_good, CountryDict[results[types]], colour_default)) if types == "asn_country_code":
else: print(indent + "%s%s:%s\t%s%s" % (colour_pretty, ipData[types], colour_good, CountryDict[results[types]], colour_default))
print(indent + "%s%s:%s\t%s%s" % (colour_pretty, ipData[types], colour_good, results[types], colour_default)) else:
rev_name = reversename.from_address(inData) print(indent + "%s%s:%s\t%s%s" % (colour_pretty, ipData[types], colour_good, results[types], colour_default))
try: rev_name = reversename.from_address(inData)
reverseName = str(dns.resolver.query(rev_name, "PTR")[0]) try:
except Exception as E: reverseName = str(dns.resolver.query(rev_name, "PTR")[0])
reverseName = E except Exception as E:
print('\n' + indent + '%sPTR:%s\t\t%s%s' % (colour_pretty, colour_good, reverseName, colour_default)) reverseName = E
print('\n' + indent + '%sPTR:%s\t\t%s%s' % (colour_pretty, colour_good, reverseName, colour_default))
except:
None
# 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):
count = 0 count = 0
inSplit = in1.split('.') inSplit = in1.split('.')
if len(inSplit) != 4: if len(inSplit) != 4:
return False return False
for part in inSplit: for part in inSplit:
if part.isdigit(): if part.isdigit():
count += 1 count += 1
else: else:
return False return False
if count == 4: if count == 4:
return True return True
signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGINT, signal_handler)
while running == 1: while running == 1:
parseInput(raw_input("Please Enter a domain" + prompt) ) parseInput(input("Please Enter a domain" + prompt) )
print('\n') print('\n')

3
requirments.txt Normal file
View File

@ -0,0 +1,3 @@
dnspython
ipwhois
readline