From af7016b7a611ff332cb3f55765811dd3ceed2461 Mon Sep 17 00:00:00 2001 From: lanjelot Date: Thu, 25 Jul 2013 16:34:35 +1000 Subject: [PATCH] fixed bug in http_fuzz --- patator.py | 37 ++++++++----------------------------- 1 file changed, 8 insertions(+), 29 deletions(-) diff --git a/patator.py b/patator.py index 908ac19..4afd650 100755 --- a/patator.py +++ b/patator.py @@ -2826,26 +2826,6 @@ try: except ImportError: warnings.append('pycurl') -class Controller_HTTP(Controller): - def expand_key(self, arg): - key, val = arg.split('=', 1) - if key == 'url': - m = re.match(r'(?:(?P.+)://)?(?P.+?)(?::(?P[^/]+))?/'\ - + '(?P[^;?#]*)'\ - + '(?:\;(?P[^?#]*))?'\ - + '(?:\?(?P[^#]*))?'\ - + '(?:\#(?P.*))?' , val) - - if not m: - yield (key, val) - - else: - for k, v in m.groupdict().items(): - if v is not None: - yield (k, v) - else: - yield (key, val) - class Response_HTTP(Response_Base): logformat = '%-4s %-13s %6s | %-32s | %5s | %s' @@ -2859,13 +2839,11 @@ class Response_HTTP(Response_Base): return self.code, '%d:%d' % (self.size, self.content_length), '%.3f' % self.time def __str__(self): - i = self.mesg.rfind('HTTP/', 0, 5000) - if i == -1: - return self.mesg + lines = re.findall('^(HTTP/.+)$', self.mesg, re.M) + if not lines: + return 'Unexpected HTTP response' else: - j = self.mesg.find('\n', i) - line = self.mesg[i:j] - return line.strip() + return lines[-1] def match_clen(self, val): return match_range(self.content_length, val) @@ -2896,7 +2874,7 @@ class HTTP_fuzz(TCP_Cache): ] available_options = ( - ('url', 'main url to target (scheme://host[:port]/path?query)'), + ('url', 'target url (scheme://host[:port]/path?query)'), #('host', 'target host'), #('port', 'target port'), #('scheme', 'scheme [http | https]'), @@ -3214,12 +3192,13 @@ def dns_query(server, timeout, protocol, qname, qtype, qclass): def generate_tld(): from itertools import product + from string import ascii_lowercase gtld = [ 'aero', 'arpa', 'asia', 'biz', 'cat', 'com', 'coop', 'edu', 'gov', 'info', 'int', 'jobs', 'mil', 'mobi', 'museum', 'name', 'net', 'org', 'pro', 'tel', 'travel'] - cctld = [''.join(i) for i in product(*[string.ascii_lowercase]*2)] + cctld = [''.join(i) for i in product(*[ascii_lowercase]*2)] tld = gtld + cctld return tld, len(tld) @@ -3725,7 +3704,7 @@ modules = [ ('smtp_vrfy', (Controller, SMTP_vrfy)), ('smtp_rcpt', (Controller, SMTP_rcpt)), ('finger_lookup', (Controller_Finger, Finger_lookup)), - ('http_fuzz', (Controller_HTTP, HTTP_fuzz)), + ('http_fuzz', (Controller, HTTP_fuzz)), ('pop_login', (Controller, POP_login)), ('pop_passd', (Controller, POP_passd)), ('imap_login', (Controller, IMAP_login)),