Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2057d2a3fd | ||
|
|
e7a149781e |
No files matched your search
+2
-2
@@ -1,2 +1,2 @@
|
||||
import files
|
||||
import config
|
||||
from . import files
|
||||
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.
BIN
Binary file not shown.
Binary file not shown.
+1
-1
@@ -1,4 +1,4 @@
|
||||
import files as f
|
||||
from . import files as f
|
||||
import json
|
||||
import os
|
||||
|
||||
|
||||
Binary file not shown.
+2
-2
@@ -2,7 +2,7 @@ def openFile(path):
|
||||
try:
|
||||
myFile = open(path)
|
||||
except Exception as e:
|
||||
print e
|
||||
print(e)
|
||||
pass
|
||||
return myFile
|
||||
|
||||
@@ -10,6 +10,6 @@ def closeFile(fileObj):
|
||||
try:
|
||||
fileObj.close()
|
||||
except Exception as e:
|
||||
print e
|
||||
print(e)
|
||||
pass
|
||||
|
||||
Binary file not shown.
@@ -27,12 +27,12 @@ CSVFile = jsonData["country_codes"]
|
||||
# Endconfig block
|
||||
|
||||
if platform.system().lower() == "linux":
|
||||
import readline
|
||||
import readline
|
||||
else:
|
||||
colour_attn = ""
|
||||
colour_good = ""
|
||||
colour_pretty = ""
|
||||
colour_default = ""
|
||||
colour_attn = ""
|
||||
colour_good = ""
|
||||
colour_pretty = ""
|
||||
colour_default = ""
|
||||
|
||||
running = 1
|
||||
prompt = ': '
|
||||
@@ -43,119 +43,122 @@ ipData = {"asn_country_code":"Country", "asn_description":"Owner"}
|
||||
CountryDict = cc.parseCSV(cc.openCSV(CSVFile))
|
||||
|
||||
def domainWhois(inData):
|
||||
whoisData = whois.whois(inData).query()
|
||||
return whois.Parser(inData, whoisData[1]).parse()
|
||||
whoisData = whois.whois.Whois(inData).query()
|
||||
return whois.parser.Parser(inData, whoisData[1]).parse()
|
||||
|
||||
def signal_handler(singal, frame):
|
||||
quit()
|
||||
quit()
|
||||
|
||||
def printWhois(resultData):
|
||||
for x in range(0, len(whoisrecs)):
|
||||
try:
|
||||
for item in resultData[whoisrecs[x]]:
|
||||
if whoisrecs[x] == "Status":
|
||||
if "ok" in item or "OK" in item:
|
||||
print(indent + colour_good + '%s: %s' % (whoisrecs[x], item) + colour_default)
|
||||
else:
|
||||
print(indent + colour_attn + '%s: %s' % (whoisrecs[x], item) + colour_default)
|
||||
else:
|
||||
print(indent + '%s: %s' % (whoisrecs[x], item))
|
||||
except Exception as e:
|
||||
pass
|
||||
for x in range(0, len(whoisrecs)):
|
||||
try:
|
||||
for item in resultData[whoisrecs[x]]:
|
||||
if whoisrecs[x] == "Status":
|
||||
if "ok" in item or "OK" in item:
|
||||
print(indent + colour_good + '%s: %s' % (whoisrecs[x], item) + colour_default)
|
||||
else:
|
||||
print(indent + colour_attn + '%s: %s' % (whoisrecs[x], item) + colour_default)
|
||||
else:
|
||||
print(indent + '%s: %s' % (whoisrecs[x], item))
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
def cnameToA(cname):
|
||||
data = dns.resolver.query(cname, "A")
|
||||
for rdata in data:
|
||||
return rdata
|
||||
data = dns.resolver.query(cname, "A")
|
||||
for rdata in data:
|
||||
return rdata
|
||||
|
||||
def parseInput(inData):
|
||||
tmpInData = inData.lower()
|
||||
tmpInData = tmpInData.strip()
|
||||
if tmpInData == "quit":
|
||||
quit()
|
||||
if checkIfIP(tmpInData):
|
||||
lookupIP(tmpInData)
|
||||
else:
|
||||
lookupDomain(tmpInData)
|
||||
tmpInData = inData.lower()
|
||||
tmpInData = tmpInData.strip()
|
||||
if tmpInData == "quit":
|
||||
quit()
|
||||
if checkIfIP(tmpInData):
|
||||
lookupIP(tmpInData)
|
||||
else:
|
||||
lookupDomain(tmpInData)
|
||||
|
||||
def recLookup(inData):
|
||||
for dnsrec in dnsrecords:
|
||||
try:
|
||||
data = dns.resolver.query(inData, dnsrec)
|
||||
for rdata in data:
|
||||
rdataTMP = rdata.to_text().split(" ")
|
||||
if dnsrec != "MX":
|
||||
if dnsrec != "NS":
|
||||
print( indent + colour_pretty + "%s:\t%s%s" % (dnsrec, colour_good, rdata) + colour_default)
|
||||
else:
|
||||
tmpData = cnameToA(rdata.to_text())
|
||||
print( indent + colour_pretty + "%s:\t%s%s -> %s" % (dnsrec, colour_good, rdata, tmpData) + colour_default)
|
||||
else:
|
||||
tmpData = cnameToA(rdataTMP[1])
|
||||
print( indent + colour_pretty + "%s:\t%s%s -> %s" % (dnsrec, colour_good, rdata, tmpData) + colour_default)
|
||||
except Exception as e:
|
||||
pass
|
||||
for dnsrec in dnsrecords:
|
||||
try:
|
||||
data = dns.resolver.query(inData, dnsrec)
|
||||
for rdata in data:
|
||||
rdataTMP = rdata.to_text().split(" ")
|
||||
if dnsrec != "MX":
|
||||
if dnsrec != "NS":
|
||||
print( indent + colour_pretty + "%s:\t%s%s" % (dnsrec, colour_good, rdata) + colour_default)
|
||||
else:
|
||||
tmpData = cnameToA(rdata.to_text())
|
||||
print( indent + colour_pretty + "%s:\t%s%s -> %s" % (dnsrec, colour_good, rdata, tmpData) + colour_default)
|
||||
else:
|
||||
tmpData = cnameToA(rdataTMP[1])
|
||||
print( indent + colour_pretty + "%s:\t%s%s -> %s" % (dnsrec, colour_good, rdata, tmpData) + colour_default)
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
def subLookup(inData, sub):
|
||||
try:
|
||||
data = dns.resolver.query(sub + '.' + inData)
|
||||
for rdata in data:
|
||||
if data.qname == data.canonical_name:
|
||||
print(indent + colour_pretty + "%s:\t%s%s" % (sub, colour_good, rdata) + colour_default)
|
||||
else:
|
||||
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)
|
||||
except Exception as e:
|
||||
pass
|
||||
try:
|
||||
data = dns.resolver.query(sub + '.' + inData)
|
||||
for rdata in data:
|
||||
if data.qname == data.canonical_name:
|
||||
print(indent + colour_pretty + "%s:\t%s%s" % (sub, colour_good, rdata) + colour_default)
|
||||
else:
|
||||
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)
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
def lookupDomain(inData):
|
||||
try:
|
||||
result = domainWhois(inData)
|
||||
except Exception as E:
|
||||
print('%s : TLD most likely needs to be configured' % (E))
|
||||
result = "Error"
|
||||
print("\nWhois Information")
|
||||
printWhois(result)
|
||||
print("\nDNS Records")
|
||||
recLookup(inData)
|
||||
print("\nSub Domains")
|
||||
for subs in subdomains:
|
||||
subLookup(inData, subs)
|
||||
try:
|
||||
result = domainWhois(inData)
|
||||
except Exception as E:
|
||||
print('%s : TLD most likely needs to be configured' % (E))
|
||||
result = "Error"
|
||||
print("\nWhois Information")
|
||||
printWhois(result)
|
||||
print("\nDNS Records")
|
||||
recLookup(inData)
|
||||
print("\nSub Domains")
|
||||
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 types in ipData:
|
||||
if types == "asn_country_code":
|
||||
print(indent + "%s%s:%s\t%s%s" % (colour_pretty, ipData[types], colour_good, CountryDict[results[types]], colour_default))
|
||||
else:
|
||||
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))
|
||||
try:
|
||||
with warnings.catch_warnings():
|
||||
warnings.filterwarnings("ignore", category=UserWarning)
|
||||
ipnet = Net(inData)
|
||||
ipobj = IPASN(ipnet)
|
||||
results = ipobj.lookup()
|
||||
for types in ipData:
|
||||
if types == "asn_country_code":
|
||||
print(indent + "%s%s:%s\t%s%s" % (colour_pretty, ipData[types], colour_good, CountryDict[results[types]], colour_default))
|
||||
else:
|
||||
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))
|
||||
except:
|
||||
None
|
||||
|
||||
# Taken and modified from DNSpy 1, I am not asahmed it works
|
||||
def checkIfIP(in1):
|
||||
count = 0
|
||||
inSplit = in1.split('.')
|
||||
if len(inSplit) != 4:
|
||||
return False
|
||||
for part in inSplit:
|
||||
if part.isdigit():
|
||||
count += 1
|
||||
else:
|
||||
return False
|
||||
if count == 4:
|
||||
return True
|
||||
count = 0
|
||||
inSplit = in1.split('.')
|
||||
if len(inSplit) != 4:
|
||||
return False
|
||||
for part in inSplit:
|
||||
if part.isdigit():
|
||||
count += 1
|
||||
else:
|
||||
return False
|
||||
if count == 4:
|
||||
return True
|
||||
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
|
||||
while running == 1:
|
||||
parseInput(raw_input("Please Enter a domain" + prompt) )
|
||||
print('\n')
|
||||
parseInput(input("Please Enter a domain" + prompt) )
|
||||
print('\n')
|
||||
@@ -0,0 +1,3 @@
|
||||
dnspython
|
||||
ipwhois
|
||||
readline
|
||||
Reference in new issue
Block a user