p0f, and various reimplementation such as libp0f and dsniff, are passive operating system (OS) fingerprinting tools that attempt to determine the OS of a system based on the TCP traffic it generates – specifically SYN, SYN+ACK, and RST/RST+ACK packets. The technique relies on configuration differences of various network stack implementations.
The efficacy of p0f is dependent on an up-to-date signatures set.
The CERT p0f fingerprint database is an update to the original set of fingerprints included with p0f version 2.0.8. At this time, only the SYN fingerprint database (p0f.fp) has been updated.
As of version p0f.fp.2012032901, the following OSes and tools were added to the 2006 distribution:
Additionally, Linux distribution information was added to the original and new fingerprints. Annotation for the following distributions was added:
p0f can accept an alternate fingerprint database by using the “-f” command line option. The following example starts p0f, uses the “p0f.fp.newsig” SYN fingerprint database, on the PCAP file “test.pcap”
$ p0f -f p0f.fp.newsig -s test.pcap
By default, p0f will also search for p0f.fp in the current directory (on Windows and Unix) and in “/etc/p0f” (on Unix). The provided signature files can be renamed and put into these directories to be used by default.
The CERT p0f signature database is only compatible with p0f version 2.0.x implementations.