当前位置: 首页 > 工具软件 > Peach Fuzzer > 使用案例 >

Peach Fuzzer - DataModeling - DataModel

鲁鹤轩
2023-12-01

DataModel

DataModel元素是Peach根元素的一个子元素。 数据模型通过指定其他子元素(如Number,Blob或String)来定义数据块的结构。

Attributes:

  • name - [必须] 友好的DataModel名称在引用模型或调试时很有用。
  • ref - 引用其他的DataModel作为模板(可选)
  • mutable - 数据元素是否可更改(是否应该进行变异)(可选,默认为true)
  • constraint - 指定一个表达式,帮助Peach识别数据元素是否已被正确使用(可选)

Valid Child Elements:

  • Blob
  • Block
  • Choice
  • Custom
  • Flag
  • Flags
  • Number
  • Padding
  • String
  • XmlAttribute
  • XmlElement
  • Relation
  • Fixup
  • Transformer
  • Placement

Examples:

Peach的pit文件中可以指定任意个数的DataModel(至少一个),但是每个DataModel都必须有一个唯一的名字。通过逻辑将复杂的格式分解为更小的模型,这使得DataModel变得更为阅读、调试和重用。

名为“HelloWorld”的DataModel包含一个String字符串并输出“Hello world!”

<DataModel name="HelloWorld">
  <String value="Hello world!" />
</DataModel>

DataModels可以引用其他DataModel并用ref属性继承它们的子元素。

<DataModel name="ParentModel">
  <String value="Hello " />
</DataModel>

<DataModel name="HelloWorldModel" ref="ParentModel" >
  <String value=" world!" />
</DataModel>

References (ref attribute)

当提供reference(ref属性)时,被引用的DataModel的内容将被复制以作为创建新DataModel的基础。 新DataModel中的任何子元素都将覆盖该基础中具有相同名称的元素。 在这个例子中,子DataModel的Customized包含一个名为Key的字符串。 它的值会覆盖父项中的没有值的字符串“Key”。

<DataModel name="Template">
  <String name="Key" />
  <String value=": " token="true" />
  <String name="Value" />
  <String value="\r\n" token="true" />
</DataModel>

<DataModel name="Customized" ref="Template">
  <String name="Key" value="Content-Length" />
  <String name="Value">
    <Relation type="size" of="HttpBody" />
  </String>
  <Blob name="HttpBody" />
</DataModel>

输出:

The output of “Template” is ” : \r\n”
The output of “Customized” is “Content-Length: 100\r\n”

在解析成DataModel时,Customized看起来就像两个DataModel的组合。

<DataModel name="Customized" ref="Template">
  <String name="Key" value="Content-Length" />
  <String value=": " token="true" />
  <String name="Value">
    <Relation type="size" of="HttpBody" />
  </String>
  <String value="\r\n" token="true" />
</DataModel>
 类似资料:

相关阅读

相关文章

相关问答