コード例 #1
0
    def verifier(outdata, label=None):
        nonlocal calls
        nonlocal use_eff_map
        eff_map_creator = mutate_seq_walking_byte

        # each mutator has characteristic max number of bits it can flip
        # only special case is first call by eff_map_creator
        calls += 1
        if calls == 1 and use_eff_map == True and func == eff_map_creator:
            assert (ham_distance(payload, outdata) == 0)
        else:
            assert (ham_distance(payload, outdata) == flipped_bits
                    ), "Bitflips mismatch on call %d:\n%s\n%s" % (
                        calls, hexlify(payload), hexlify(outdata))
            #assert(bindiff(payload,outdata) in [b'\x80', b'\x40', b'\x20', b'\x10', b'\x08', b'\x04', b'\x02', b'\x01']), "Unexpected bitflip pattern"
        return False, False
コード例 #2
0
def test_havoc_interesting_value_32():

    for _ in range(ITERATIONS):

        assert (b'' == havoc_perform_insert_interesting_value_32(b'')
                ), "Failed on short input!"
        assert (b'\x23' == havoc_perform_insert_interesting_value_32(b'\x23')
                ), "Failed on short input!"
        assert (b'\x23ab' == havoc_perform_insert_interesting_value_32(
            b'\x23ab')), "Failed on short input!"

        db = [b'42ab', b'123134acd', b'adf23akh\0adfkn\x23', b'!#@$%^&*']
        for data_in in db:
            data_out = havoc_perform_insert_interesting_value_32(data_in)

            #print('Test Interesting 32-Bit:', hexlify(data_in), "=>", hexlify(data_out))
            assert (len(data_in) == len(data_out)), "Returned bad length!"
            assert (32 >= ham_distance(data_in,
                                       data_out)), "Flipped too many bits!"

            success = False
            for i in interesting_32_Bit:
                if struct.pack("<i", i) in bytearray(data_out) or struct.pack(
                        ">i", i) in bytearray(data_out):
                    success = True
            assert (success), "Bitflip flipped wrong bits!"
コード例 #3
0
def test_havoc_bit_flip():

    for _ in range(ITERATIONS):

        assert (b'' == havoc_perform_bit_flip(b'')), "Failed on short input!"

        db = [b'1', b'123134', b'adfakh\0adfkn\x23']
        for data_in in db:
            data_out = havoc_perform_bit_flip(data_in)
            #print("Test Bitflip:", data_in, "=>", data_out)
            assert (len(data_in) == len(data_out)), "Returned length mismatch!"
            assert (1 == ham_distance(data_in,
                                      data_out)), "Bitflip flipped wrong bits!"
コード例 #4
0
def test_havoc_interesting_value_8():

    for _ in range(ITERATIONS):

        assert (b'' == havoc_perform_insert_interesting_value_8(b'')
                ), "Failed on short input!"

        db = [b'1', b'123134', b'adfakh\0adfkn\x23']
        for data_in in db:
            data_out = havoc_perform_insert_interesting_value_8(data_in)

            #print('Test Interesting 8-Bit:', hexlify(data_in), "=>", hexlify(data_out))
            assert (len(data_in) == len(data_out)), "Returned length mismatch!"
            assert (8 >= ham_distance(data_in,
                                      data_out)), "Flipped too many bits!"

            success = False
            for i in interesting_8_Bit:
                if struct.pack("!b", i) in bytearray(data_out):
                    success = True
            assert (success), "Bitflip flipped wrong bits!"
コード例 #5
0
 def verifier(outdata, label=None):
     # each mutator has characteristic max number of bits it can flip
     assert (ham_distance(payload, outdata) <= max_flipped_bits
             ), "Flipped too many bits?\n%s\n%s" % (hexlify(payload),
                                                    hexlify(outdata))