Я изучаю Boofuzz, и было бы удобно иметь возможность конвертировать boofuzz.Block в произвольный пользовательский объект Python. Особенно это касается кодирования. Надеюсь, этот пример объясняет, что я пытаюсь сделать:
class MyClass:
def __init__(self, header, data, footer):
self.header = header
self.data = data
self.footer = footer
bf_block = boofuzz.Block('Block-Instance', children=(
boofuzz.Group('Header', values=['foo', 'bar']),
boofuzz.RandomData('Data', min_length=1, max_length=20),
boofuzz.Group('Footer', values=['spam', 'spam', 'spam', 'egg', 'spam'])
))
#How do I tell boofuzz to use this method for encode instead?
def encode_to_override(bf_block):
#How do I access block members like this?
class_instance = MyClass(bf_block.header, bf_block.data, bf_block.footer)
encode(class_instance)
def encode(class_instance):
#I'll be doing something more complicated than this:
return bytes(class_instance.header) + bytes(class_instance.data) + bytes(class_instance.footer)
Мне удалось создать блок, используя второй блок кода в этом примере, и успешно запустить fuzz(). Однако я не знаю, как переопределить кодирование без использования специального блока, поэтому оно было закодировано только с использованием метода по умолчанию.
Я изучаю Boofuzz, и было бы удобно иметь возможность конвертировать boofuzz.Block в произвольный пользовательский объект Python. Особенно это касается кодирования. Надеюсь, этот пример объясняет, что я пытаюсь сделать: [code]class MyClass: def __init__(self, header, data, footer): self.header = header self.data = data self.footer = footer
#How do I tell boofuzz to use this method for encode instead? def encode_to_override(bf_block): #How do I access block members like this? class_instance = MyClass(bf_block.header, bf_block.data, bf_block.footer) encode(class_instance)
def encode(class_instance): #I'll be doing something more complicated than this: return bytes(class_instance.header) + bytes(class_instance.data) + bytes(class_instance.footer) [/code] Мне удалось создать блок, используя второй блок кода в этом примере, и успешно запустить fuzz(). Однако я не знаю, как переопределить кодирование без использования специального блока, поэтому оно было закодировано только с использованием метода по умолчанию.