August 11, 2010

pyScout - threaded port scanner with heuristic protocol identification

In 2007, while attending a training event in Chicago, NYC, or Washington D.C., (my memory is fuzzy as to which), I began to learn Python.  I needed a project, and since I'd always wanted to tinker with the inner-workings of a port-scanner, I decided to write one in Python.  While this may not be the most novel utility to code, it afforded me the chance to learn Python and scratch a curious itch I'd always had.  As I began work on this simple port scanner, the thought occurred to me to incorporate something most other port scanners don't do: application/protocol/service identification.  Seemed like a good idea at the time.  There were a couple of others out there, but none that really incorporated both a high-speed port scanner and protocol identification.  SO, I decided to write such a beast.  Thus, pyScout was born.

As I began working on a pen-test for a client today, I was dusting off the old pyScout 0.0.3 code, and I realized that the C&C components were largely broken, but not badly.  I made a couple of minor changes and decided to put it up on Google Code so that others might benefit from the project.  If you'd like to browse the repository, you can, or you could check it out from SVN and use it.

If anyone would like to contribute to pyScout, feel free to drop me an e-mail or reply to this post.

No comments: