Инструмент фаззинга: изменить целое число в заданном диапазоне?

Я новичок в инструментах фаззинга, и в основном я хотел бы использовать инструмент фаззинга для тестирования определенной функции.

По сути, эта функция имеет три входных параметра, и каждый параметр представляет собой число в диапазоне от 0 до 0xffff.

Я хотел бы использовать инструмент фаззинга для генерации случайных комбинаций ввода и проверки целевой функции. Тем не менее, я попробовал zzuf, но обнаружил, что у него нет конкретной настройки для изменения целочисленного значения.

Итак, я ищу фаззер, который поддерживает только изменение целочисленного значения в пределах предопределенного диапазона? Может ли кто-нибудь помочь мне в этом вопросе? Я достаточно ясен? Спасибо.


person lllllllllllll    schedule 15.05.2016    source источник


Ответы (1)


Это можно сделать с помощью многих инструментов, среди которых Kitty (разработан моей командой).

Предполагая, что вы хотите сгенерировать число в десятичном представлении, следующий шаблон сгенерирует их для вас (значения будут разделены запятыми):

from kitty.model import *
t = Template(name='function inputs', fields=[
    S32(name='p1', value=1, min_value=-500, max_value=1000, encoder=ENC_INT_DEC),
    Static(','),
    ForEach(name='p2', mutated_field='p1',
            fields=S32(value=2, min_value=-3200, max_value=5098, encoder=ENC_INT_DEC)),
    Static(','),
    ForEach(name='p3', mutated_field='p2',
            fields=S32(value=3, min_value=0, max_value=999, encoder=ENC_INT_DEC))
])

while t.mutate():
    print t.render().tobytes()

Некоторые примеры результатов:

-1,2,3
129,1026,3
129,130,3
129,18,3
129,-3200,3
129,5098,3
129,-3199,3
129,5097,3
129,-3198,3
129,5096,3
129,3,3
129,1,3
129,4,3
129,0,3
17,1026,3
17,130,3
17,18,3
17,-3200,3
17,5098,3
17,-3199,3
person MByD    schedule 13.06.2016