Я пытаюсь построить фаззер с Салли. Протокол, который я использую, имеет однобайтовое поле control
. биты, установленные в этом поле, определяют, какие поля могут следовать. Теперь мне интересно, как реализовать это поведение, используя параметры dep
в Sulley. Единственными доступными операторами dep_compare
являются "==, !=, >, >=, <, <="
, но я не думаю, что смогу проверить, установлен ли бит в другом поле с этими операторами. Так как же я мог это сделать?
s_byte(0b1000000, "control_field")
# The following block shall be present if bit 7 is set in control_field
# I'd like to use something like
# > control_field & 0b1000000 != 0
# but I don't know how
if s_block_start("something_optional", dep="control_field", dep_compare="?"):
s_short(0x1234, "optional")
s_block_end()