Added the basic CNAME -> A lookup, seems to be kinda working now. There are a few bugs... rip
This commit is contained in:
parent
ae826b71ae
commit
f0bd0babde
15
HTTPy.py
15
HTTPy.py
@ -133,7 +133,13 @@ def options(inputs):
|
|||||||
def iterate(inArray, pre):
|
def iterate(inArray, pre):
|
||||||
count = 0
|
count = 0
|
||||||
while count != len(inArray) - 1:
|
while count != len(inArray) - 1:
|
||||||
print bcolors.CYAN + pre, bcolors.GREEN + inArray[count] + bcolors.RESET
|
#print checkIfIP(inArray[count].split('.'))
|
||||||
|
if checkIfIP(inArray[count].split('.')) == 0:
|
||||||
|
tmpVal = isCNAME(inArray[count])
|
||||||
|
|
||||||
|
print bcolors.CYAN + pre, bcolors.GREEN + inArray[count] + " -> " + tmpVal[0] + bcolors.RESET
|
||||||
|
else:
|
||||||
|
print bcolors.CYAN + pre, bcolors.GREEN + inArray[count] + bcolors.RESET
|
||||||
count = count + 1
|
count = count + 1
|
||||||
def parseWhois(whioisInfo):
|
def parseWhois(whioisInfo):
|
||||||
NS = re.compile("^[Nn]")
|
NS = re.compile("^[Nn]")
|
||||||
@ -183,7 +189,7 @@ def newdig(inDomain, record, sub=""):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
dig = "error"
|
dig = "error"
|
||||||
print str(e)
|
print str(e)
|
||||||
print "========================================================"
|
#print "========================================================"
|
||||||
test = dig.split("\n")
|
test = dig.split("\n")
|
||||||
#iterate(test, record)
|
#iterate(test, record)
|
||||||
return test, record, sub
|
return test, record, sub
|
||||||
@ -215,6 +221,11 @@ def getInput():
|
|||||||
if inInput == "quit":
|
if inInput == "quit":
|
||||||
running = 0
|
running = 0
|
||||||
|
|
||||||
|
def isCNAME(CNAME):
|
||||||
|
retval = newdig(CNAME, "A")
|
||||||
|
return retval[0]
|
||||||
|
|
||||||
|
|
||||||
#Main Loop
|
#Main Loop
|
||||||
testFile = openFile(os.path.expanduser('~/.httpy'))
|
testFile = openFile(os.path.expanduser('~/.httpy'))
|
||||||
test = testFile.read()
|
test = testFile.read()
|
||||||
|
|||||||
229
testing.py
Normal file
229
testing.py
Normal file
@ -0,0 +1,229 @@
|
|||||||
|
import subprocess
|
||||||
|
import re # YAY REVERSE ENGINEER... wait its just regex
|
||||||
|
import readline
|
||||||
|
import os
|
||||||
|
#Made this work with linux magic, test
|
||||||
|
|
||||||
|
#Define Colours
|
||||||
|
class bcolors:
|
||||||
|
RED = "\033[1;31m"
|
||||||
|
BLUE = "\033[1;34m"
|
||||||
|
CYAN = "\033[1;36m"
|
||||||
|
GREEN = "\033[0;32m"
|
||||||
|
RESET = "\033[0;0m"
|
||||||
|
BOLD = "\033[;1m"
|
||||||
|
REVERSE = "\033[;7m"
|
||||||
|
|
||||||
|
#FIXME: Have any CNAMES returned do a lookup and print it after the record.
|
||||||
|
|
||||||
|
inInput = ""
|
||||||
|
partDomain = ""
|
||||||
|
running = 1
|
||||||
|
pingOn = "p"
|
||||||
|
whoOn = "W"
|
||||||
|
phrases = ["ping", "whois", "quit", "clear", "help", "nameserver"]
|
||||||
|
|
||||||
|
|
||||||
|
def openFile(filename):
|
||||||
|
try:
|
||||||
|
myfile = open(filename)
|
||||||
|
except Exception as E:
|
||||||
|
print E
|
||||||
|
print 'Creating default config file'
|
||||||
|
myfile = open(filename, 'w')
|
||||||
|
myfile.write('records=A:MX:TXT:NS:SRV:SOA\n')
|
||||||
|
myfile.write('subdomains=www:mail')
|
||||||
|
myfile.close()
|
||||||
|
quit()
|
||||||
|
return myfile
|
||||||
|
|
||||||
|
def closeFile(fileObj):
|
||||||
|
try:
|
||||||
|
fileObj.close()
|
||||||
|
except Exception as E:
|
||||||
|
print E
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
#Check and see if python can do pairs
|
||||||
|
def splitLines(confline):
|
||||||
|
tmpLine = confline.split('\n')
|
||||||
|
retval = []
|
||||||
|
for line in tmpLine:
|
||||||
|
if line != '':
|
||||||
|
tmpLines = line.split('=')
|
||||||
|
retval.append(tmpLines[1].split(':'))
|
||||||
|
return retval
|
||||||
|
|
||||||
|
def printHelp():
|
||||||
|
print bcolors.BLUE
|
||||||
|
print "========================================================"
|
||||||
|
print "= help - This screen ="
|
||||||
|
print "= clear - Clears the screen ="
|
||||||
|
print "= ping - Enables/Disables pinging the IP Address ="
|
||||||
|
print "= whois - Enables/Disables whois lookups ="
|
||||||
|
print "========================================================"
|
||||||
|
print bcolors.RESET
|
||||||
|
|
||||||
|
def compareSOA(inNameservers, inDomain, origSOA):
|
||||||
|
dnsServer = '8.8.8.8'
|
||||||
|
soaRecords = []
|
||||||
|
count = 0
|
||||||
|
outSOA = ''
|
||||||
|
returnmsg = "SOA Good"
|
||||||
|
for nameserver in inNameservers:
|
||||||
|
if nameserver != '':
|
||||||
|
dnsServer = "@" + nameserver
|
||||||
|
try:
|
||||||
|
outSOA = subprocess.check_output(["dig", "SOA", dnsServer, "+short", inDomain])
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
output = e.output
|
||||||
|
returncode = e.returncode
|
||||||
|
|
||||||
|
|
||||||
|
outSOAa = outSOA.split(' ')
|
||||||
|
#print outSOAa[2]
|
||||||
|
if len(outSOAa) != 1:
|
||||||
|
soaRecords.append(outSOAa[2])
|
||||||
|
for soa in soaRecords:
|
||||||
|
if soa != soaRecords[0]:
|
||||||
|
return "SOA Records don't Match"
|
||||||
|
return "SOA good"
|
||||||
|
|
||||||
|
#print soaRecords
|
||||||
|
|
||||||
|
def checkIfIP(in1):
|
||||||
|
count = 0
|
||||||
|
if len(in1) != 4:
|
||||||
|
return 0
|
||||||
|
for dom in in1:
|
||||||
|
if dom.isdigit():
|
||||||
|
count += 1
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
if count == 4:
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
def checkPhrase(inputs):
|
||||||
|
for word in phrases:
|
||||||
|
if inputs == word:
|
||||||
|
options(inputs)
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def options(inputs):
|
||||||
|
global whoOn
|
||||||
|
global pingOn
|
||||||
|
|
||||||
|
if inputs == "ping":
|
||||||
|
if pingOn == "P":
|
||||||
|
pingOn = "p"
|
||||||
|
else:
|
||||||
|
pingOn = "P"
|
||||||
|
if inputs == "whois":
|
||||||
|
if whoOn == "W":
|
||||||
|
whoOn = "w"
|
||||||
|
else:
|
||||||
|
whoOn = "W"
|
||||||
|
if inputs == "clear":
|
||||||
|
subprocess.call("clear")
|
||||||
|
if inputs == "help":
|
||||||
|
printHelp()
|
||||||
|
|
||||||
|
def iterate(inArray, pre):
|
||||||
|
count = 0
|
||||||
|
while count != len(inArray) - 1:
|
||||||
|
print bcolors.CYAN + pre, bcolors.GREEN + inArray[count] + bcolors.RESET
|
||||||
|
count = count + 1
|
||||||
|
def parseWhois(whioisInfo):
|
||||||
|
NS = re.compile("^[Nn]")
|
||||||
|
D = re.compile("^[Dd]")
|
||||||
|
R = re.compile("^[Rr]")
|
||||||
|
U = re.compile("^[Uu]")
|
||||||
|
S = re.compile("Status")
|
||||||
|
L = re.compile("^[Ll]")
|
||||||
|
E = re.compile("^[Ee]")
|
||||||
|
|
||||||
|
for str in whioisInfo:
|
||||||
|
str = str.strip()
|
||||||
|
if NS.match(str) or D.match(str) or R.match(str) or U.match(str) or S.match(str) or L.match(str) or E.match(str):
|
||||||
|
if "domain" in str or "Domain" in str and "Name" not in str or "Status" in str:
|
||||||
|
if "name" not in str and "ID" not in str:
|
||||||
|
if "ok" in str or "OK" in str:
|
||||||
|
print bcolors.GREEN + str + bcolors.RESET
|
||||||
|
else:
|
||||||
|
print bcolors.RED + str + bcolors.RESET
|
||||||
|
else:
|
||||||
|
if "Expired" in str or "expired" in str:
|
||||||
|
print bcolors.RED + str + bcolors.RESET
|
||||||
|
else:
|
||||||
|
print str
|
||||||
|
|
||||||
|
def whois(inDomain):
|
||||||
|
lookup = subprocess.check_output(["whois", inDomain])
|
||||||
|
print "========================================================"
|
||||||
|
test = lookup.split("\n")
|
||||||
|
#iterate(test, "")
|
||||||
|
parseWhois(test)
|
||||||
|
|
||||||
|
def dig(inDomain, record):
|
||||||
|
try:
|
||||||
|
dig = subprocess.check_output(["dig", record, "+short", inDomain])
|
||||||
|
except Exception as e:
|
||||||
|
dig = "error"
|
||||||
|
print str(e)
|
||||||
|
print "========================================================"
|
||||||
|
test = dig.split("\n")
|
||||||
|
iterate(test, record)
|
||||||
|
return test
|
||||||
|
|
||||||
|
def newdig(inDomain, record, sub=""):
|
||||||
|
try:
|
||||||
|
dig = subprocess.check_output(["dig", record, "+short", inDomain])
|
||||||
|
except Exception as e:
|
||||||
|
dig = "error"
|
||||||
|
print str(e)
|
||||||
|
print "========================================================"
|
||||||
|
test = dig.split("\n")
|
||||||
|
#iterate(test, record)
|
||||||
|
return test, record, sub
|
||||||
|
|
||||||
|
def ipLookup(inDomain):
|
||||||
|
host = "N/A"
|
||||||
|
ipLook = subprocess.check_output(["geoiplookup", inDomain])
|
||||||
|
try:
|
||||||
|
host = subprocess.check_output(["host", inDomain])
|
||||||
|
returncode = 0
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
output = e.output
|
||||||
|
returncode = e.returncode
|
||||||
|
|
||||||
|
print '\n', ipLook, '\n', "PTR: ", host
|
||||||
|
|
||||||
|
def ipPing(inDomain):
|
||||||
|
ping = subprocess.call(["ping", "-c 2", inDomain])
|
||||||
|
#iterate(ping, "")
|
||||||
|
|
||||||
|
def getInput():
|
||||||
|
global inInput
|
||||||
|
global partDomain
|
||||||
|
global running
|
||||||
|
inInput = raw_input("["+ pingOn +"][" + whoOn + "] Please enter a domain/IP: ")
|
||||||
|
inInput = inInput.strip()
|
||||||
|
inInput = inInput.lower()
|
||||||
|
partDomain = inInput.split(".")
|
||||||
|
if inInput == "quit":
|
||||||
|
running = 0
|
||||||
|
|
||||||
|
def isCNAME(CNAME):
|
||||||
|
val = checkIfIP(CNAME)
|
||||||
|
if val == 0:
|
||||||
|
retval = newdig(CNAME, "A")
|
||||||
|
return retval[0]
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
tmpVal = isCNAME("127.0.0.1")
|
||||||
|
|
||||||
|
|
||||||
|
print tmpVal[1]
|
||||||
Loading…
x
Reference in New Issue
Block a user