fixed bug in http_fuzz

pull/4/merge
lanjelot 11 years ago
parent e40fdebe4a
commit af7016b7a6

@ -2826,26 +2826,6 @@ try:
except ImportError: except ImportError:
warnings.append('pycurl') 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<scheme>.+)://)?(?P<host>.+?)(?::(?P<port>[^/]+))?/'\
+ '(?P<path>[^;?#]*)'\
+ '(?:\;(?P<params>[^?#]*))?'\
+ '(?:\?(?P<query>[^#]*))?'\
+ '(?:\#(?P<fragment>.*))?' , 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): class Response_HTTP(Response_Base):
logformat = '%-4s %-13s %6s | %-32s | %5s | %s' 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 return self.code, '%d:%d' % (self.size, self.content_length), '%.3f' % self.time
def __str__(self): def __str__(self):
i = self.mesg.rfind('HTTP/', 0, 5000) lines = re.findall('^(HTTP/.+)$', self.mesg, re.M)
if i == -1: if not lines:
return self.mesg return 'Unexpected HTTP response'
else: else:
j = self.mesg.find('\n', i) return lines[-1]
line = self.mesg[i:j]
return line.strip()
def match_clen(self, val): def match_clen(self, val):
return match_range(self.content_length, val) return match_range(self.content_length, val)
@ -2896,7 +2874,7 @@ class HTTP_fuzz(TCP_Cache):
] ]
available_options = ( available_options = (
('url', 'main url to target (scheme://host[:port]/path?query)'), ('url', 'target url (scheme://host[:port]/path?query)'),
#('host', 'target host'), #('host', 'target host'),
#('port', 'target port'), #('port', 'target port'),
#('scheme', 'scheme [http | https]'), #('scheme', 'scheme [http | https]'),
@ -3214,12 +3192,13 @@ def dns_query(server, timeout, protocol, qname, qtype, qclass):
def generate_tld(): def generate_tld():
from itertools import product from itertools import product
from string import ascii_lowercase
gtld = [ gtld = [
'aero', 'arpa', 'asia', 'biz', 'cat', 'com', 'coop', 'edu', 'aero', 'arpa', 'asia', 'biz', 'cat', 'com', 'coop', 'edu',
'gov', 'info', 'int', 'jobs', 'mil', 'mobi', 'museum', 'name', 'gov', 'info', 'int', 'jobs', 'mil', 'mobi', 'museum', 'name',
'net', 'org', 'pro', 'tel', 'travel'] '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 tld = gtld + cctld
return tld, len(tld) return tld, len(tld)
@ -3725,7 +3704,7 @@ modules = [
('smtp_vrfy', (Controller, SMTP_vrfy)), ('smtp_vrfy', (Controller, SMTP_vrfy)),
('smtp_rcpt', (Controller, SMTP_rcpt)), ('smtp_rcpt', (Controller, SMTP_rcpt)),
('finger_lookup', (Controller_Finger, Finger_lookup)), ('finger_lookup', (Controller_Finger, Finger_lookup)),
('http_fuzz', (Controller_HTTP, HTTP_fuzz)), ('http_fuzz', (Controller, HTTP_fuzz)),
('pop_login', (Controller, POP_login)), ('pop_login', (Controller, POP_login)),
('pop_passd', (Controller, POP_passd)), ('pop_passd', (Controller, POP_passd)),
('imap_login', (Controller, IMAP_login)), ('imap_login', (Controller, IMAP_login)),

Loading…
Cancel
Save