def test(self): targetPort = self.config["baseport"] serverManager = simpleservermanager.SimpleServerManager( self.config, 0, targetPort) networkManager = networkmanager.NetworkManager(self.config, targetPort) serverManager.start() inputs = utils.loadInputs(self.config) for inp in inputs: print "Testing new input..." self.stats = {} n = 0 while n < len(inp): self.stats[n] = 0 n += 1 it = 0 while it < 3: print("==== Iteration =====") networkManager.openConnection() self.sendMessages(networkManager, inp) networkManager.closeConnection() it += 1 print("Itercount: " + str(it)) print("Fails:") if len(self.stats) == 0: print("None :-)") else: for key, value in self.stats.items(): print("Fails at msg #" + str(key) + ": " + str(value))
def doFuzz(config, useCurses): """ Fuzzing main parent. this is the main entry point for project fuzzers receives data from fuzzing-children via queues """ q = Queue() # have to remove sigint handler before forking children # so ctlr-c works orig = signal.signal(signal.SIGINT, signal.SIG_IGN) printConfig(config) if fuzzers[config["fuzzer"]]["type"] == "mut": logging.debug("Loading recorded data...") inputs = utils.loadInputs(config) else: logging.debug("Not loading any data, as generative fuzzer") # create fake data. # an list with: a list of network messages inputs = [[ { "data": "", "from": "cli", }, { "data": "", "from": "srv", }, ]] procs = [] n = 0 if "nofork" in config and config["nofork"]: r = random.randint(0, 2**32 - 1) fuzzingSlave = fuzzingslave.FuzzingSlave(config, n, q, r) fuzzingSlave.doActualFuzz() else: while n < config["processes"]: print("Start child: " + str(n)) r = random.randint(0, 2**32 - 1) fuzzingSlave = fuzzingslave.FuzzingSlave(config, n, q, r, inputs) p = Process(target=fuzzingSlave.doActualFuzz, args=()) procs.append(p) p.start() n += 1 # restore signal handler signal.signal(signal.SIGINT, orig) if useCurses: fuzzCurses(config, q, procs) else: fuzzConsole(config, q, procs)
def doFuzz(config, useCurses): """ Client Fuzzing main parent. this is the main entry point for project fuzzers receives data from fuzzing-children via queues """ q = Queue() # have to remove sigint handler before forking children # so ctlr-c works orig = signal.signal(signal.SIGINT, signal.SIG_IGN) inputs = utils.loadInputs(config) procs = [] n = 0 if "fuzzer_nofork" in config and config["fuzzer_nofork"]: r = random.randint(0, 2**32 - 1) fuzzingSlave = clientfuzzerslave.FuzzingSlave(config, n, q, r) fuzzingSlave.doActualFuzz() else: while n < config["processes"]: print("Start child: " + str(n)) r = random.randint(0, 2**32 - 1) fuzzingSlave = clientfuzzerslave.FuzzingSlave( config, n, q, r, inputs) p = Process(target=fuzzingSlave.doActualFuzz, args=()) procs.append(p) p.start() n += 1 # restore signal handler signal.signal(signal.SIGINT, orig) print("Thread# Fuzz/s Count Crashes") while True: try: r = q.get() print("%d: %4.2f %8d %5d" % r) except KeyboardInterrupt: # handle ctrl-c for p in procs: p.terminate() p.join() break print("Finished")
def doFuzz(config, useCurses): """ Fuzzing main parent. this is the main entry point for project fuzzers receives data from fuzzing-children via queues """ q = Queue() # have to remove sigint handler before forking children # so ctlr-c works orig = signal.signal(signal.SIGINT, signal.SIG_IGN) printConfig(config) inputs = utils.loadInputs(config) procs = [] n = 0 if "nofork" in config and config["nofork"]: r = random.randint(0, 2**32 - 1) fuzzingSlave = fuzzingslave.FuzzingSlave(config, n, q, r) fuzzingSlave.doActualFuzz() else: while n < config["processes"]: print("Start child: " + str(n)) r = random.randint(0, 2**32 - 1) fuzzingSlave = fuzzingslave.FuzzingSlave(config, n, q, r, inputs) p = Process(target=fuzzingSlave.doActualFuzz, args=()) procs.append(p) p.start() n += 1 # restore signal handler signal.signal(signal.SIGINT, orig) if useCurses: fuzzCurses(config, q, procs) else: fuzzConsole(config, q, procs)