コード例 #1
0
    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))
コード例 #2
0
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)
コード例 #3
0
ファイル: clientfuzzermaster.py プロジェクト: xqrt/ffw
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")
コード例 #4
0
ファイル: fuzzingmaster.py プロジェクト: KurSh/ffw
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)