def get_fuzzer(options=None): ''' Get fuzzer (non-remote) :param options: options :return: fuzzer ''' local_options = { '--kitty-options': None, '--stage-file': None, '--count': '2', '--disconnect-delays': '0.0,0.0' } local_options.update(options) fuzzer = ClientFuzzer(name='numap', option_line=local_options['--kitty-options']) fuzzer.set_interface(WebInterface()) target = ClientTarget(name='USBTarget') target.set_controller(get_controller(local_options)) target.set_mutation_server_timeout(10) model = get_model(local_options) fuzzer.set_model(model) fuzzer.set_target(target) return fuzzer
def prepare(self): self.start_index = 10 self.end_index = 20 self.delay_duration = 0 self.fuzzer = ClientFuzzer(name="TestServerFuzzer", logger=self.logger) self.interface = EmptyInterface() self.fuzzer.set_interface(self.interface) self.model = GraphModel() self.model.logger = self.logger self.model.connect(self.t_str) self.fuzzer.set_model(self.model) self.default_config = { 'always': { 'trigger': { 'fuzzer': self.fuzzer, 'stages': [(self._default_stage, {})] } } } self.target = ClientTargetMock(self.default_config, self.default_callback, logger=self.logger) self.fuzzer.set_target(self.target) self.fuzzer.set_range(self.start_index, self.end_index) self.fuzzer.set_delay_between_tests(self.delay_duration)
def main(): test_name = 'GET fuzzed' get_template = Template( name=test_name, fields=[ XmlElement( name='html', element_name='html', content=[ XmlElement( name='head', element_name='head', content='<meta http-equiv="refresh" content="5; url=/">' ), XmlElement(name='body', element_name='body', content='123', fuzz_content=True), ]) ]) fuzzer = ClientFuzzer(name='Example 3 - Browser Fuzzer') fuzzer.set_interface(WebInterface(host='0.0.0.0', port=26000)) target = ClientTarget(name='BrowserTarget') # # Note: to avoid opening the process on our X server, we use another display for it # display ':2' that is specified below was started this way: # >> sudo apt-get install xvfb # >> Xvfb :2 -screen 2 1280x1024x8 # env = os.environ.copy() env['DISPLAY'] = ':2' controller = ClientProcessController('BrowserController', '/usr/bin/opera', ['http://localhost:8082/fuzzed'], process_env=env) target.set_controller(controller) target.set_mutation_server_timeout(20) model = GraphModel() model.connect(get_template) fuzzer.set_model(model) fuzzer.set_target(target) fuzzer.set_delay_between_tests(0.1) server = MyHttpServer(('localhost', 8082), MyHttpHandler, fuzzer) fuzzer.start() while True: server.handle_request()
target = ClientTarget(name='104Target') controller = ClientProcessController( "simple_client_single", "./simple_client_fast", ["10.84.134.10"] ) target.set_controller(controller) target.set_mutation_server_timeout(20) model = GraphModel() model.connect(get_startdt) #model.connect(get_startdt, get_stopdt) model.connect(get_startdt, get_ASDU) #model.connect(get_startdt, get_testfr) #model.connect(get_testfr, get_stopdt) fuzzer = ClientFuzzer(name='104 Fuzzer') fuzzer.set_model(model) fuzzer.set_target(target) fuzzer.set_interface(WebInterface(host='0.0.0.0', port=26000)) fuzzer.set_delay_between_tests(0.1) my_stack = My104Stack("10.84.69.44") my_stack.set_fuzzer(fuzzer) fuzzer.start() my_stack.start()