Fuzzing

Schema Attribute Commands

Schema Attribute Commands are usually used to control the way Fuzzware serialises XML. Their most typical use is to control whether or not to output the XML mark-up of a schema element or type and also to control the output formatting of the schema element or type's value. To add these commands to your XML Schema you need to declare the Fuzzware.Schemas.SchemaAttributeCommands namespace in your XSD file. The SchemaAttributeCommands.xsd file that defines these attributes can be found in the Schemas directory.

Attribute
Value
Description
markup

remove
removeIncludingChildNodes
dontRemove
dontRemoveIncludingChildNodes

Indicates whether or not a schema element (and potentially all its child elements) will have its XML mark-up removed when the element is serialised to the output.
outputAs
Unchanged
Decoded
Base64
Hex
MSBase64
BinaryLittleEndian
BinaryBigEndian
ASCIIString
UTF7String
UTF8String
UTF8StringWithBOM
UTF16LEString
UTF16BEString
UTF32LEString
UTF32BEString
By default the output format of a schema element's value is as if it was output to an XML file, so the element's value is output as a string. This attribute changes how an element is written to output.

Example: A node is of type int, and has 'outputAs="BinaryLittleEndian"'. When the node is being written to the final output it will be encoded into a Little Endian binary number.

Example: A node has 'outputAs="Base64"' and has child nodes beneath it that should be encoded before output (the child nodes could contain both binary and XML data), each child node will be formatted according to each of their 'outputAs' commands, then encoded and output in Base64.

The value 'Decoded' means that if the type is hexBinary or base64 the type will be decoded and written as binary data.

The string encodings support outputting strings in different encodings, LE and BE refer to little and big endianess respectively and BOM is byte-order-mark.

The value of the attribute should be appropriate for the type e.g. 'BinaryLittleEndian' will only be effective on number types.

DontOutput
true
false
Setting to true will suppress the element and child element from being serialised to the output, however this element and its elements will still be serialised for the purpose of being passed to Schemer processing instructions. This is useful for passing custom data to custom Extensible.IUserNodeProcessor functions.
TypeId a string
This attribute only needs to be specified in a particular scenario to help automatic conversion to XML. If a data format has an element with a choice of child elements, and the particular child is specified by another element, then assign each child element a unique TypeId value. In the XML a TypeId processing instruction needs to be used to indicate which child element is being used.

For instance, if a file format that can contain several different types of records, but the specific record used in a particular file is identified by a field that is part of the header of the file.

This attribute needs to be both a schema attribute command (as this is where the identifier is specified) and an XML processing instruction command (so the identifier in the file format header (for instance) can be set to the right value).

See the TLS example to see a practical application of this attribute.
 
 
  Design by guenstige.shop-stadt.de & windows forum