Fixed broken PassiveDNS engine

This commit is contained in:
Ahmed Aboul-Ela 2017-05-25 23:12:06 +04:00
parent 6149309176
commit fd575d4b9c
1 changed files with 17 additions and 16 deletions

View File

@ -146,10 +146,10 @@ class enumratorBase(object):
self.silent = silent self.silent = silent
self.verbose = verbose self.verbose = verbose
self.headers = { self.headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', '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,*/*;q=0.8', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'en-GB,en;q=0.5', 'Accept-Language': 'en-US,en;q=0.8',
'Accept-Encoding': 'gzip, deflate', 'Accept-Encoding': 'gzip',
} }
self.print_banner() self.print_banner()
@ -805,7 +805,7 @@ class PassiveDNS(enumratorBaseThreaded):
def get_agent(self,ua=None): def get_agent(self,ua=None):
agents_url = 'http://www.webuseragents.com/recent' agents_url = 'http://www.webuseragents.com/recent'
try: try:
resp = session.get(agents_url, headers=self.headers, timeout=self.timeout) resp = self.session.get(agents_url, headers=self.headers, timeout=self.timeout)
agents_list = self.get_response(resp) agents_list = self.get_response(resp)
agents_regex = re.compile('<a href="/ua/.*?>(.*)</a>') agents_regex = re.compile('<a href="/ua/.*?>(.*)</a>')
agents = agents_regex.findall(agents_list) agents = agents_regex.findall(agents_list)
@ -817,13 +817,14 @@ class PassiveDNS(enumratorBaseThreaded):
def req(self, url): def req(self, url):
try: try:
if self.get_agent(): headers = dict(self.headers)
self.headers['User-Agent'] = self.get_agent() user_agent = self.get_agent()
if user_agent:
headers['User-Agent'] = user_agent
resp = self.session.get(url, headers=self.headers, timeout=self.timeout) resp = self.session.get(url, headers=headers, timeout=self.timeout)
except Exception as e: except Exception as e:
self.print_(e)
resp = None resp = None
return self.get_response(resp) return self.get_response(resp)
@ -831,17 +832,17 @@ class PassiveDNS(enumratorBaseThreaded):
def enumerate(self): def enumerate(self):
url = self.base_url.format(domain=self.domain) url = self.base_url.format(domain=self.domain)
resp = self.req(url) resp = self.req(url)
if not resp:
return self.subdomains
self.extract_domains(resp) self.extract_domains(resp)
return self.subdomains return self.subdomains
def extract_domains(self, resp): def extract_domains(self, resp):
link_regx = re.compile('<td>(.*?)</td>',re.IGNORECASE) link_regx = re.compile('[a-zA-Z0-9.-]*\.'+ self.domain,re.IGNORECASE)
try: try:
links = link_regx.findall(resp) links = link_regx.findall(resp)
for link in links: for subdomain in links:
if self.domain not in link:
continue
subdomain = link[:link.find('[')].strip()
if subdomain not in self.subdomains and subdomain != self.domain and subdomain.endswith(self.domain): if subdomain not in self.subdomains and subdomain != self.domain and subdomain.endswith(self.domain):
if self.verbose: if self.verbose:
self.print_("%s%s: %s%s" % (R, self.engine_name, W, subdomain)) self.print_("%s%s: %s%s" % (R, self.engine_name, W, subdomain))