Sulley と Fuzzer を構築しようとしています。私が使用しているプロトコルには、1 バイト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()