Publishers
Publishers are the I/O interfaces used by Peach to send and receive data. Publishers support both stream and call based operations.
When the fuzzer is running, all Actions with the exception of slurp use a publisher to perform the action. Different publishers support a different set of Action types. For example, the File publisher supports input for reading from a file, output for writing to a file, but does not support accept or call. This differs from the COM publisher which supports call, but not input, output, or accept.
All fuzzing definitions must use at least one Publisher and can optionally use multiple
Publishers if needed. When using multiple Publishers, each Action must specify which Publisher it is referencing by refering to the Publisher’s name
attribute in the Action’s publisher
attribute. If the publisher
attribute is missing, the Action will be performed on the first Publisher defined in the Test.
Network Publishers
When fuzzing network protocols, the publisher used is typically the protocol that encompasses the target protocol. For example, when fuzzing the HTTP protocol the TCP publisher is used. When fuzzing TCP, the IPv4 or IPv6 publisher is used. When fuzzing IPv4 the Ethernet publisher is used.
Custom Publishers
Peach supports the creation of custom Publishers. It is recommended that the code for some of the existing Publishers be reviewed first to understand how Publishers are typically implemented.
Creating a custom Publisher does not require changing the Peach source code. Instead the code is placed in a new .NET assembly (dll) that is added to the Peach bin folder. Peach will automatically use reflection to identify the new Publisher and make it available for use.