Ncat/Nping Google SOC project

These were the ORIGINAL SPECIFICATIONS for developing these two programs. The applications themselves can now be found at and

The goal for this project is to create an updated, portable, and maintainable version of Netcat which supports all of the Netcat 1.10 features except for port scanning (there is another tool I prefer for that particular task ;). In addition, Ncat will support IPv6, SSL, connection tunneling, and other nifty features described in the feature list and infrastructure requirements below.

And while we're updating and re-implementing well-loved tools, we might as well create Nping, which is similar to hping2 with the sort of extra features that Nmap users will love.

This is a challenging project, so we are fortunate enough to have received applications from many highly talented individuals! Do read this over and be certain you are up to the task before taking it on, as we are excited to see the results, but can only assigning one student to the task. The features and infrastructure requirements for the Ncat/Nping project are listed below.

If you guys think of other important features/requirements for this document, of feel it should be changed in other ways, let me know. Labels such as "should" or "would be nice" denote optional features, while "musts" have to be met. Here are the proposed features and infrastructure requirements for the new Nmap GUI and results viewer:

Note that even the "required" features are negotiable. For example, just let me know if you have no access to an OS X box to test on.

To avoid confusion, and allow people to have both on their systems, and out of respect for the original authors, these tools will not use the names 'nc' or 'hping2'. An admin can always create symlinks if she wants them.





  • Must be written in C or C++ (no exceptions).
  • Must support and be tested under Linux, Windows, and one of the following: Mac OS X, Free-, Net-, or Open-BSD, and Solaris. There should be no barrier towards supporting most of the other systems, though no need to test on all of those initially. That is what users are for :).
  • Must be able to compile Ncat as a single, statically-linked executable on all platforms.
  • Must use the Nmap infrastructure libraries, such as nsock and nbase. Nping should use libdnet.
  • Must limit the number of external libraries/programs it depends on. Anything that ships with Nmap is OK. Check with Fyodor before adding other dependencies.
  • Development must be done in the open, hosted on a project server such as Sourceforge. Test versions and such should be sent to the nmap-dev list (just send links, not the binaries themselves). That is a good list for bouncing ideas around too.
  • Should initially be designed to be integrated into Nmap tarball, though with an eye toward making separation easy in the future.