### Generating new fuzzing SPA packets: - Apply a patch or set of patches to libfko to ignore error conditions and recompile. - Run the test suite as follows to generate new fuzzing SPA packets: # ./test-fwknop.pl --enable-perl-module-pkt-gen [+] Starting the fwknop test suite... args: --enable-perl-module-pkt-gen Saved results from previous run to: output.last/ [perl FKO module] [compile/install] to: ./FKO.......................pass (1) [perl FKO module] [FUZZING] generate invalid SPA pkts...............pass (2) [+] Wrote 169 fuzzing SPA packets to fuzzing/fuzzing_spa_packets.tmp... - Review the packet data in the fuzzing_spa_packets.tmp file, and move to fuzzing/fuzzing_spa_packets if acceptable. - Reverse the fuzzing patch mentioned above and recompile. - Now send the packets through libfko as follows: # ./test-fwknop.pl --enable-perl-module-checks --include "perl FKO" - If there is another patch to apply, then add a fuzzing tag so that the packets can easily be differentiated and appended to the official "fuzzing_spa_packets" file. Note that adding the --fuzzing-class argument assumes that a patch has been applied to lib/fko_encode.c to manipulate SPA packet data after the various user-supplied data has been provided (and this data itself is valid - it is the encoding itself that the patch is supposed to mess with). If the --fuzzing-class arg is left off, then the user fields are built using invalid data. # ./test-fwknop.pl --enable-perl-module-pkt-gen --fuzzing-test-tag "encoded_non_digit_rand_val" --fuzzing-class encoding [+] Starting the fwknop test suite... args: --enable-perl-module-pkt-gen --fuzzing-test-tag encoded_non_digit_rand_val --fuzzing-class encoding Saved results from previous run to: output.last/ [perl FKO module] [compile/install] to: ./FKO.......................pass (1) [perl FKO module] [FUZZING] generate invalid encoded pkts...........pass (2) [+] Wrote 30 fuzzing SPA packets to fuzzing/fuzzing_spa_packets.tmp...