I'm trying to fuzz a BACNet device using the Sulley Fuzzing Framework.
In order to get to know the framework I wrote this fairly simple example, but it won't work.
from sulley import *
s_initialize("Test")
s_static(0x10, "Something")
s_byte(0x00, "SomeByte")
sess = sessions.session(proto="UDP")
sess.connect(sulley.s_get("Test"))
target = sessions.target("192.168.1.3", 0xBAC0)
target.netmon = None
target.procmon = None
target.vmcontrol = None
sess.add_target(target)
sess.fuzz()
But executing it results in the following output
pydev debugger: starting (pid: 3356)
[2015-11-09 09:40:54,351] [INFO] -> current fuzz path: -> Test
[2015-11-09 09:40:54,352] [INFO] -> fuzzed 0 of 112 total cases
[2015-11-09 09:40:54,354] [INFO] -> fuzzing 1 of 112
[2015-11-09 09:40:54,354] [INFO] -> xmitting: [1.1]
[2015-11-09 09:40:54,355] [CRITICAL] -> failed transmitting fuzz node
Exception caught: TypeError("cannot concatenate 'str' and 'int' objects",)
Restarting target and trying again
[2015-11-09 09:40:54,355] [ERROR] -> no vmcontrol or procmon channel available ... sleeping for 300 seconds
I think the problem might be, that I set netmon, procmon, vmcontrol
to None
, but just omitting them results in the same output. I am not creating those monitors because I can't use them for the device I want to fuzz later on anyway. I just want to send out packets and see what happens. So, is it impossible to use Sulley without those monitors or is there something else wrong with my code?