Fixed up local libs and main.py, waiting on whois lib
This commit is contained in:
parent
bb7f62ca86
commit
e7a149781e
@ -1,2 +1,2 @@
|
|||||||
import files
|
from . import files
|
||||||
import config
|
from . import config
|
||||||
|
|||||||
BIN
libs/__pycache__/__init__.cpython-37.pyc
Normal file
BIN
libs/__pycache__/__init__.cpython-37.pyc
Normal file
Binary file not shown.
BIN
libs/__pycache__/cc.cpython-37.pyc
Normal file
BIN
libs/__pycache__/cc.cpython-37.pyc
Normal file
Binary file not shown.
BIN
libs/__pycache__/colours.cpython-37.pyc
Normal file
BIN
libs/__pycache__/colours.cpython-37.pyc
Normal file
Binary file not shown.
BIN
libs/__pycache__/config.cpython-37.pyc
Normal file
BIN
libs/__pycache__/config.cpython-37.pyc
Normal file
Binary file not shown.
BIN
libs/__pycache__/files.cpython-37.pyc
Normal file
BIN
libs/__pycache__/files.cpython-37.pyc
Normal file
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
import files as f
|
from . import files as f
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|||||||
@ -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
196
main.py
@ -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
3
requirments.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
dnspython
|
||||||
|
ipwhois
|
||||||
|
readline
|
||||||
Loading…
x
Reference in New Issue
Block a user