Gonzalez Posted September 25, 2009 Report Posted September 25, 2009 #!usr/bin/pythonimport httplib, socket, time, re, os, sys, datetime# Hello world!os.system('clear')print "==================================================="print "== Webserverwatcher.py | www.ethicalhack3r.co.uk =="print "==================================================="printurl = raw_input("Enter the URL you want to keep an eye on: ")# Check URLhttp = "http://"if http in url: print print "ERROR! Remove http:// from the URL." url = raw_input("Enter the URL you want to keep an eye on: ")count = 0while 1: # Count how many times the script has run count = count + 1 # Get todays date/time getdate = datetime.datetime.today() today = getdate.strftime("%d/%m/%Y %H:%M:%S") # Get webserver IP socket.setdefaulttimeout(15) try: socket.gethostbyname(url) except socket.error: os.system('clear') print "===================================================" print "== Webserverwatcher.py | www.ethicalhack3r.co.uk ==" print "===================================================" print print "SOCKET ERROR! 1)Check the URL 2)Check your internet connection 3)Try again." print sys.exit() # HTTP HEAD request conn = httplib.HTTPConnection(url, 80) try: conn.request("HEAD", "/") except socket.timeout: print "Webserver has timed out. Check URL and internet connection." # Read HTTP response res = conn.getresponse() # Close HTTP connection conn.close() # Turn headers into variables ip = socket.gethostbyname(url) server = res.getheader('Server') xpoweredby = res.getheader('x-powered-by') date = res.getheader('date') # Print some output os.system('clear') print "===================================================" print "== Webserverwatcher.py | www.ethicalhack3r.co.uk ==" print "===================================================" print print res.status, res.reason print if xpoweredby == None: print ip + " " + server + " " + date else: print ip + " " + server + " " + xpoweredby + " " + date print print "The script has run", count, "time/s." if (count < 2): # Save header data to log file outfile = file('log.txt', 'w') outfile.write("Started on " + today + "\n") outfile.write(ip + " ") outfile.write(server + " ") # Check if xpoweredby header exists, if it does save to log if xpoweredby != None: outfile.write(xpoweredby + " ") outfile.write(date + "\n") outfile.close() else: outfile.write(date + "\n") outfile.close() # Print some output print print "Logged!" print else: # Read file to compare old/new headers readfile = open('log.txt', "r") text = readfile.read() # Check if log file IP is same as new IP if ip not in text: outfile = file('log.txt', 'a') outfile.write('IP address has been changed! New IP is ' + ip + ' ' + date + '\n') outfile.close() # Check if log file server is same as new server if server not in text: outfile = file('log.txt', 'a') outfile.write('Web Server software has been changed! New server is ' + server + ' ' + date + '\n') outfile.close() # Check if log file x-powered-by header is same as new one if xpoweredby != None and xpoweredby not in text: outfile = file('log.txt', 'a') outfile.write('X-powered-by header has been changed! New header is ' + xpoweredby + ' ' + date + '\n') outfile.close() # Time to wait between HTTP requests (3600 seconds = 1hr) try: time.sleep(3600) except KeyboardInterrupt: outfile = file('log.txt', 'a') outfile.write("Finished on " + today) outfile.close() print print "Check log.txt." print sys.exit() Quote