Made misc. change to dnsdumpster and fixed netcraft.

This commit is contained in:
NotoriousRebel 2019-03-16 23:47:55 -04:00
parent b2e20b445f
commit ea71c71b39
2 changed files with 48 additions and 49 deletions

View file

@ -27,7 +27,7 @@ def do_search(self):
break
csrftoken += ch
data = {
'Cookie': f'csfrtoken={csrftoken}', 'csrfmiddlewaretoken': {csrftoken}, 'targetip': self.word}
'Cookie': f'csfrtoken={csrftoken}', 'csrfmiddlewaretoken': csrftoken, 'targetip': self.word}
headers['Referer'] = url
post_req = session.post(url, headers=headers, data=data)
self.results = post_req.text

View file

@ -1,73 +1,72 @@
#from lib.core import *
from lib.core import *
from parsers import myparser
import requests
import hashlib
import urllib
import urllib.parse as urllib
import re
class SearchNetcraft:
# this module was inspired by sublist3r's netcraft module
def __init__(self, word):
self.word = word.replace(' ', '%20')
self.results = ""
self.totalresults = ""
self.server = 'netcraft.com'
self.quantity = '100'
self.counter = 0
self.base_url = 'https://searchdns.netcraft.com/?restriction=site+ends+with&host={domain}'
self.session = requests.session()
self.headers = {
'User-Agent': Core.get_user_agent()
}
self.timeout = 25
self.domain = f"https://searchdns.netcraft.com/?restriction=site+ends+with&host={self.word}"
def do_search(self):
# Module inspired by sublist3r
session = requests.session()
def request(self, url, cookies=None):
cookies = cookies or {}
try:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.8',
'Accept-Encoding': 'gzip',
}
base_url = 'https://searchdns.netcraft.com/?restriction=site+ends+with&host=example.com'
cookies = {}
r = session.get(base_url, headers=headers, cookies=cookies)
cookie = str(r.cookies).split(" ")[1]
cookies_list = cookie[0:cookie.find(';')].split("=")
cookies[cookies_list[0]] = cookies_list[1]
cookies['netcraft_js_verification_response'] = hashlib.sha1(urllib.unquote(cookies_list[1]).encode('utf-8')).hexdigest()
#{'netcraft_js_verification_challenge': 'djF8TW9tb3crWWkyaWZWb1hySDU4VVJvWnByZ0NXbHcrQzhVTXVKc2UyeGpmeTlXdXpxWlA1TEdW%0AZjJHMndxVnE2SE5VeExoY1JubmdFOQpmQ2VwZG5EKzBnPT0KfDE1NTI3MDYwNjA%3D%0A%7C5a13284199e4dc7c260a16ae81ae2a717f4a274c', 'netcraft_js_verification_response': '9b87eaabe14a56f873e2212a9ab1cd846a5d1592'}
print(cookies)
#print(cookies); import sys;sys.exit(-2)
search_url = 'https://searchdns.netcraft.com/?restriction=site+ends+with&host=yale.edu'
#r = session.get(search_url, cookies=cookies, headers=headers, timeout=25)
while True:
r = session.get(search_url, cookies=cookies, headers=headers, timeout=25)
self.totalresults += r.text
if 'Next page' not in r.text:
break
search_url = self.get_next(r)
print(r.text)
resp = self.session.get(url, headers=self.headers, timeout=self.timeout, cookies=cookies)
except Exception as e:
print('An exception has occured in netcraft: ' +str(e))
print(e)
resp = None
return resp
def get_next(self, resp):
link_regx = re.compile('<A href="(.*?)"><b>Next page</b></a>')
link = link_regx.findall(resp)
link = re.sub('host=.*?%s' % self.word, 'host=%s' % self.word, link[0])
url = 'http://searchdns.netcraft.com' + link
url = url.replace(' ', '%20')
link = re.sub(f'host=.*?{self.word}', f'host={self.domain}', link[0])
url = f'http://searchdns.netcraft.com{link}'
return url
def create_cookies(self, cookie):
cookies = dict()
cookies_list = cookie[0:cookie.find(';')].split("=")
cookies[cookies_list[0]] = cookies_list[1]
# get js verification response
cookies['netcraft_js_verification_response'] = hashlib.sha1(
urllib.unquote(cookies_list[1]).encode('utf-8')).hexdigest()
return cookies
def get_cookies(self, headers):
if 'set-cookie' in headers:
cookies = self.create_cookies(headers['set-cookie'])
else:
cookies = {}
return cookies
def do_search(self):
start_url = self.base_url
resp = self.request(start_url)
cookies = self.get_cookies(resp.headers)
url = self.base_url.format(domain="yale.edu")
while True:
resp = self.request(url, cookies).text
self.totalresults += resp
if 'Next page' not in resp or resp is None:
break
url = self.get_next(resp)
def get_hostnames(self):
rawres = myparser.Parser(self.totalresults, self.word)
return rawres.hostnames()
def process(self):
self.do_search()
print('\tSearching results.')
def main():
n = SearchNetcraft(word="yale.edu")
n.do_search()
y = n.get_hostnames()
for x in y:
print(x)
main()
self.do_search()