Reverse IP Lookup with Python
Question: How can I lookup all hosts hosted on an IP Address? I have checked Bing's API,
but I don't think they provide free API key anymore to make a query with an IP
Address. Google probably would block after searching first 2-3 pages. I was
also looking at the [shodanhq
api](http://docs.shodanhq.com/python/reference.html), but I think shodan
doesnt support a reverse lookup!

I am using python 2.7 on Windows.


Answer: May be this script is for you:

    
    
    import urllib2
    import socket
    import sys
    import re
    
    class reverseip(object):
    
                def __init__(self, server='http://www.ip-adress.com/reverse_ip/'):
                    t= """ Tool made by: LeXeL lexelEZ[at]gmail[dot]com """
                    print t
    
                    try:
                        self.site = raw_input("Enter site to start scan: ")
                        self.fileout = raw_input("Enter logfile name: ")
                    except KeyboardInterrupt:
                        print "\n\nError: Aborted"
                        sys.exit(1)
    
                    self.server = server
                    self.ua = "Mozilla/5.0 (compatible; Konqueror/3.5.8; Linux)"
                    self.h = {"User-Agent": self.ua}
    
                    self.write = True
                    try:
                        outp = open(self.fileout, "w+")
                        outp.write(t)
                        outp.close()
                    except IOError:
                        print '\n Failed to write to %s' % (self.fileout)
                        print '\n Continuing without writing'
                        self.write = False
    
    
                def url(self):
                    r = urllib2.Request('%s%s' % (self.server, self.site), headers=self.h)
                    f = urllib2.urlopen(r)
                    self.source = f.read()
                def getip(self):
                    try:
                        ip = socket.gethostbyname(self.site)
                    except IOError, e:
                        print "Error: %s " %(e)
                    else:      
                        print "\t\nScanning ip %s \n\n" %(ip)
                def whoami(self):
                    found = re.findall("href=\"/whois/\S+\">Whois</a>]",self.source)
                    for i in found:
                        i = i.replace("href=\"/whois/","")
                        i = i.replace("\">Whois</a>]","")
                        print "\t%s " % (i)
                        if self.write:
                            try:
                                outp = open(self.fileout, "a")
                                outp.write('%s\n' % (i))
                                outp.close()
                            except IOError:
                                    print '\n Failed to write'
                                    sys.exit(1)
    
    if __name__ == '__main__':
        p = reverseip()
        p.url()
        p.getip()
        p.whoami()
    

With tiny modifciations you can get what you want....tell me what do you
think, and let me know if I can help more...Thanks!

