Fuzzing is a black box software testing technique, which basically consists in finding implementations bugs using malformed/semi-malformed data injection in an automated fashion . The aim here is to generate these malformed data in the most efficient way and also to monitor the program more accurately. Depending upon the type of strategy adopted to generate data we have largely two types of fuzzers. First is the mutation based data generation technique in which mutation starts out on a known good ‘template’ which is then modified. However, nothing that that is not present in the ‘template’ or ‘seed’ will be produced . Then comes the Generation based data generation technique. In this setup, Fuzzers are capable of building the data being send based on a data model provided. Now the these generation based systems can either be dumb, thus producing random stream of data or can be smart as they can modify themselves and the data generation process based on observations .
Mutation based data generation does depend upon availability of file with all specs desired to be fuzzed, this limits the possibility of having complete through and through analysis of program. As it has been talked about in ‘’Analysis of mutation and generation based fuzzing”. Commonly Mutation based strategy is adopted because of its ease to start with and monitor. For Generation based strategy one has to have complete understanding of all the protocols/binary relations associated with a network/file format and when analyzing complex file or network formats it become a unreasonably complex task. In this paper I will focus on one such file format i.e. PDF file format. This file format is a hugely complex one and it one of the most updated and feature intensive. At this point I will briefly explain the PDF file format  and a few 3rd party libraries that we can trust to produce i.e. iText, ReportLab, PyPdf and more. Another important library for PDF is written by Felipe which gives us flexibility to create PDF files with complete control on the content.