Fixed up local libs and main.py, waiting on whois lib

This commit is contained in:
Benjamyn Love 2018-08-30 02:18:14 +10:00
parent bb7f62ca86
commit e7a149781e
10 changed files with 106 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.

View File

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

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

196
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,119 @@ 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(): with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=UserWarning) warnings.filterwarnings("ignore", category=UserWarning)
ipnet = Net(inData) ipnet = Net(inData)
ipobj = IPASN(ipnet) ipobj = IPASN(ipnet)
results = ipobj.lookup() results = ipobj.lookup()
for types in ipData: for types in ipData:
if types == "asn_country_code": if types == "asn_country_code":
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, CountryDict[results[types]], colour_default))
else: else:
print(indent + "%s%s:%s\t%s%s" % (colour_pretty, ipData[types], colour_good, results[types], colour_default)) print(indent + "%s%s:%s\t%s%s" % (colour_pretty, ipData[types], colour_good, results[types], colour_default))
rev_name = reversename.from_address(inData) rev_name = reversename.from_address(inData)
try: try:
reverseName = str(dns.resolver.query(rev_name, "PTR")[0]) reverseName = str(dns.resolver.query(rev_name, "PTR")[0])
except Exception as E: except Exception as E:
reverseName = E reverseName = E
print('\n' + indent + '%sPTR:%s\t\t%s%s' % (colour_pretty, colour_good, reverseName, colour_default)) 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):
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