Peach Fuzzer - DataModeling - DataModel

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值