Today, I worked on the TCP server a bit more. Some progress was made, but it took roughly one hour to complete:

  • Banners work now. Clients connecting can now be sent a static string to mimic your favorite server.
  • send and recv methods for dealing with socket I/O.
  • General code cleanup. Corrected a few pylint warnings.
  • Added IP address validation for bindaddr.

Some goals for the future are:

  • Ability to make “scripts” for fuzzing similar to the CLI fuzzer.
  • Ability to save position in case a client gets disconnected. No need to start over from the beginning.
  • Expect support: client sends specific string, server reacts accordingly.
  • Binary protocol support.
  • TCPFuzzServer object that can be imported into a Python script and used to make a fuzzer very quickly for any protocol that uses TCP.

Sorry for the brief post today. Real life was pretty demanding.