def testDefaultValueWhenFuzzableBeforeMutation(self): fields = [String('a'), Container([Static('A'), String('B')])] default_container = Container(fields=fields, fuzzable=False) default_rendered = default_container.render() uut = self.get_uut(fields, fuzzable=True) uut_rendered = uut.render() self.assertEqual(default_rendered, uut_rendered)
def testContainsAllDefaultMutations(self): fields = [String('a'), Container([Static('A'), String('B')])] default_container = Container(fields=fields) default_mutations = self.get_all_mutations(default_container) uut = self.get_uut(fields) uut_mutations = self.get_all_mutations(uut) for mutation in default_mutations: self.assertIn(mutation, uut_mutations)
def testDefaultValueWhenFuzzableAfterReset(self): fields = [String('a'), Container([Static('A'), String('B')])] default_container = Container(fields=fields, fuzzable=False) default_rendered = default_container.render() uut = self.get_uut(fields, fuzzable=True) while uut.mutate(): pass uut.reset() uut_rendered = uut.render() self.assertEqual(default_rendered, uut_rendered)
def generate_fuzz_templates(parsed_url, upnp): for upnp_srv in upnp: service = upnp_srv['serviceType'].split(':')[-2] for function in upnp_srv['actions']: arguments = upnp_srv['actions'][function] upnp_payload = createPayload(service, function, arguments) headers = createHeaders(upnp_srv['controlURL'], parsed_url.netloc, upnp_srv['serviceType']) test_string = '{} {} {} {} {} {}'.format(service, function, arguments, upnp_srv['controlURL'], parsed_url.netloc, upnp_srv['serviceType']) template = Container(name='upnp_request', fields=[headers, upnp_payload]) yield (test_string, template)
def createHeaders(url, host, action): data = Container(name='http_header', fields=[ HttpRequestLine(['POST'], url), TextField('Host', host), TextField('User-Agent', 'python-requests/2.21.0'), TextField('Content-Type', 'text/xml'), TextField('SOAPAction', action), IntField('Content-Length', 5000, end=True) ]) return data