Ejemplo n.º 1
0
    def test_fuzz_rangelist(self):
        inputlen = 10000
        iterations = 100
        r = [(0, 100), (600, 1000), (3000, 10000)]
        _input, chars_inserted = _insert_crlf(bytearray('A' * inputlen))

        for i in xrange(iterations):
            fuzzed = fuzz(
                fuzz_input=copy.copy(_input),
                seed_val=0,
                jump_idx=i,
                ratio_min=0.1,
                ratio_max=0.3,
                range_list=r,
                fuzzable_chars=[0x0D],
            )
            self.assertEqual(inputlen, len(fuzzed))
            self.assertNotEqual(_input, fuzzed)

            for (a, b) in r:
                # make sure we didn't change the exclude ranges
                self.assertEqual(_input[a:b + 1], fuzzed[a:b + 1])

            hd = bytewise_hd(_input, fuzzed)

            self.assertGreater(hd, 0)
            self.assertLess(hd, chars_inserted)

            # we excluded all but 2500 bytes in r above
            actual_ratio = hd / 2500.0
            self.assertGreaterEqual(actual_ratio, 0.01)
            self.assertLessEqual(actual_ratio, 0.03)
Ejemplo n.º 2
0
    def test_fuzz_rangelist(self):
        inputlen = 10000
        iterations = 100
        r = [(0, 100), (600, 1000), (3000, 10000)]
        _input, chars_inserted = _insert_crlf(bytearray('A' * inputlen))

        for i in xrange(iterations):
            fuzzed = fuzz(fuzz_input=copy.copy(_input),
                                seed_val=0,
                                jump_idx=i,
                                ratio_min=0.1,
                                ratio_max=0.3,
                                range_list=r,
                                fuzzable_chars=[0x0D],
                              )
            self.assertEqual(inputlen, len(fuzzed))
            self.assertNotEqual(_input, fuzzed)

            for (a, b) in r:
                # make sure we didn't change the exclude ranges
                self.assertEqual(_input[a:b + 1], fuzzed[a:b + 1])

            hd = bytewise_hd(_input, fuzzed)

            self.assertGreater(hd, 0)
            self.assertLess(hd, chars_inserted)

            # we excluded all but 2500 bytes in r above
            actual_ratio = hd / 2500.0
            self.assertGreaterEqual(actual_ratio, 0.01)
            self.assertLessEqual(actual_ratio, 0.03)
    def _test_fuzz(self, inputlen=1000, iterations=100, rangelist=None):
        _input = bytearray('A' * inputlen)
        # sub in null chars
        chars_inserted = 0
        for i in xrange(0, inputlen, 10):
            _input[i] = 0x0D
            chars_inserted += 1

        for i in xrange(iterations):
            fuzzed = fuzz(fuzz_input=copy.copy(_input),
                                seed_val=0,
                                jump_idx=i,
                                ratio_min=0.1,
                                ratio_max=0.3,
                                range_list=rangelist,
                                fuzzable_chars=[0x0D]
                              )
            self.assertEqual(inputlen, len(fuzzed))
            self.assertNotEqual(_input, fuzzed)
            hd = bytewise_hd(_input, fuzzed)

            self.assertGreater(hd, 0)
            self.assertLessEqual(hd, chars_inserted)

            actual_ratio = hd / float(chars_inserted)
            self.assertGreaterEqual(actual_ratio, 0.1)
            self.assertLessEqual(actual_ratio, 0.3)
Ejemplo n.º 4
0
    def test_fuzz_rangelist(self):
        inputlen = 10000
        iterations = 100
        r = [(0, 100), (600, 1000), (3000, 10000)]
        for i in xrange(iterations):
            fuzzed = fuzz(
                fuzz_input=_input(inputlen),
                seed_val=0,
                jump_idx=i,
                ratio_min=0.1,
                ratio_max=0.3,
                range_list=r,
            )
            self.assertEqual(inputlen, len(fuzzed))
            self._fail_if_not_fuzzed(fuzzed)

            for (a, b) in r:
                # make sure we didn't change the exclude ranges
                self.assertEqual(_input(inputlen)[a:b + 1], fuzzed[a:b + 1])

            hd = bytewise_hd(_input(inputlen), fuzzed)

            self.assertGreater(hd, 0)
            self.assertLess(hd, inputlen)

            # we excluded all but 2500 bytes in r above
            actual_ratio = hd / 2500.0
            self.assertGreaterEqual(actual_ratio, 0.1)
            self.assertLessEqual(actual_ratio, 0.3)
    def _test_fuzz(self, inputlen=1000, iterations=100, rangelist=None):
        _input = bytearray('A' * inputlen)
        # sub in null chars
        chars_inserted = 0
        for i in xrange(0, inputlen, 10):
            _input[i] = 0x0D
            chars_inserted += 1

        for i in xrange(iterations):
            fuzzed = fuzz(fuzz_input=copy.copy(_input),
                          seed_val=0,
                          jump_idx=i,
                          ratio_min=0.1,
                          ratio_max=0.3,
                          range_list=rangelist,
                          fuzzable_chars=[0x0D])
            self.assertEqual(inputlen, len(fuzzed))
            self.assertNotEqual(_input, fuzzed)
            hd = bytewise_hd(_input, fuzzed)

            self.assertGreater(hd, 0)
            self.assertLessEqual(hd, chars_inserted)

            actual_ratio = hd / float(chars_inserted)
            self.assertGreaterEqual(actual_ratio, 0.1)
            self.assertLessEqual(actual_ratio, 0.3)
    def test_fuzz_rangelist(self):
        inputlen = 10000
        iterations = 100
        r = [(0, 100), (600, 1000), (3000, 10000)]
        for i in xrange(iterations):
            fuzzed = fuzz(fuzz_input=_input(inputlen),
                                seed_val=0,
                                jump_idx=i,
                                ratio_min=0.1,
                                ratio_max=0.3,
                                range_list=r,
                              )
            self.assertEqual(inputlen, len(fuzzed))
            self._fail_if_not_fuzzed(fuzzed)

            for (a, b) in r:
                # make sure we didn't change the exclude ranges
                self.assertEqual(_input(inputlen)[a:b + 1], fuzzed[a:b + 1])

            hd = bytewise_hd(_input(inputlen), fuzzed)

            self.assertGreater(hd, 0)
            self.assertLess(hd, inputlen)

            # we excluded all but 2500 bytes in r above
            actual_ratio = hd / 2500.0
            self.assertGreaterEqual(actual_ratio, 0.1)
            self.assertLessEqual(actual_ratio, 0.3)
Ejemplo n.º 7
0
    def calculate_hamming_distances_a(self):
        with open(self.fuzzedfile.path, 'rb') as fd:
            fuzzed = fd.read()

        a_string = 'x' * len(fuzzed)

        self.hd_bits = hamming.bitwise_hd(a_string, fuzzed)
        self.hd_bytes = hamming.bytewise_hd(a_string, fuzzed)
Ejemplo n.º 8
0
    def calculate_hamming_distances_a(self):
        with open(self.fuzzedfile.path, 'rb') as fd:
            fuzzed = fd.read()

        a_string = 'x' * len(fuzzed)

        self.hd_bits = hamming.bitwise_hd(a_string, fuzzed)
        self.hd_bytes = hamming.bytewise_hd(a_string, fuzzed)
Ejemplo n.º 9
0
    def test_set_discard_chance(self):
        self.m.seed = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        self.m.fuzzed = "abcdefghijklmnopqrstuvwxyz"
        self.m.min_distance = hamming.bytewise_hd(self.m.seed, self.m.fuzzed)
        self.assertEqual(self.m.min_distance, 26)

        for tsg in xrange(1, 20):
            self.m.target_size_guess = tsg
            self.m.set_discard_chance()
            self.assertAlmostEqual(self.m.discard_chance, 1.0 / (1.0 + tsg))
Ejemplo n.º 10
0
    def test_set_discard_chance(self):
        self.m.seed = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        self.m.fuzzed = "abcdefghijklmnopqrstuvwxyz"
        self.m.min_distance = hamming.bytewise_hd(self.m.seed, self.m.fuzzed)
        self.assertEqual(self.m.min_distance, 26)

        for tsg in xrange(1, 20):
            self.m.target_size_guess = tsg
            self.m.set_discard_chance()
            self.assertAlmostEqual(self.m.discard_chance, 1.0 / (1.0 + tsg))
Ejemplo n.º 11
0
    def calculate_hamming_distances_a(self):
        with open(self.fuzzedfile.path, 'rb') as fd:
            fuzzed = fd.read()

        a_string = 'x' * len(fuzzed)

        self.hd_bits = hamming.bitwise_hd(a_string, fuzzed)
        logger.info("crasher=%s bitwise_hd=%d", self.signature, self.hd_bits)

        self.hd_bytes = hamming.bytewise_hd(a_string, fuzzed)
        logger.info("crasher=%s bytewise_hd=%d", self.signature, self.hd_bytes)
    def calculate_hamming_distances_a(self):
        with open(self.fuzzedfile.path, 'rb') as fd:
            fuzzed = fd.read()

        a_string = 'x' * len(fuzzed)

        self.hd_bits = hamming.bitwise_hd(a_string, fuzzed)
        logger.info("crasher=%s bitwise_hd=%d", self.signature, self.hd_bits)

        self.hd_bytes = hamming.bytewise_hd(a_string, fuzzed)
        logger.info(
            "crasher=%s bytewise_hd=%d", self.signature, self.hd_bytes)
Ejemplo n.º 13
0
    def test_bytewise_hd(self):
        s1 = "xxxxxxxxxxxxxx"
        s2 = "12xx345xxxx678"
        s3 = "000x00000xx00x"

        self.assertEqual(bytewise_hd(s1, s2), 8)
        self.assertEqual(bytewise_hd(s2, s3), 11)
        self.assertEqual(bytewise_hd(s1, s3), 10)
        self.assertEqual(bytewise_hd(s1, s1), 0)
        self.assertEqual(bytewise_hd(s2, s2), 0)
        self.assertEqual(bytewise_hd(s3, s3), 0)

        # reject strings of different length
        self.assertRaises(AssertionError, bytewise_hd, s1, s2 + "foo")
Ejemplo n.º 14
0
    def test_bytewise_hd(self):
        s1 = "xxxxxxxxxxxxxx"
        s2 = "12xx345xxxx678"
        s3 = "000x00000xx00x"

        self.assertEqual(bytewise_hd(s1, s2), 8)
        self.assertEqual(bytewise_hd(s2, s3), 11)
        self.assertEqual(bytewise_hd(s1, s3), 10)
        self.assertEqual(bytewise_hd(s1, s1), 0)
        self.assertEqual(bytewise_hd(s2, s2), 0)
        self.assertEqual(bytewise_hd(s3, s3), 0)

        # reject strings of different length
        self.assertRaises(AssertionError, bytewise_hd, s1, s2 + "foo")
Ejemplo n.º 15
0
    def _test_fuzz(self, inputlen=1000, iterations=100, rangelist=None):
        for i in xrange(iterations):
            fuzzed = fuzz(fuzz_input=_input(inputlen),
                                seed_val=0,
                                jump_idx=i,
                                ratio_min=0.1,
                                ratio_max=0.3,
                                range_list=rangelist,
                              )
            self.assertEqual(inputlen, len(fuzzed))
            self._fail_if_not_fuzzed(fuzzed)

            hd = bytewise_hd(_input(inputlen), fuzzed)

            self.assertGreater(hd, 0)
            self.assertLess(hd, inputlen)

            actual_ratio = hd / float(inputlen)
            self.assertGreaterEqual(actual_ratio, 0.1)
            self.assertLessEqual(actual_ratio, 0.3)