P0F(1)
π P0F(1) β like, the manual page, bestie π
okay so real quick: this is p0f, from the General Commands Manual section (section 1, for the nerds keeping score). It's a whole vibe. Let's get into it β¨
πΈ NAME πΈ
p0f β identify remote systems passively π΅οΈβοΈπ
π SYNOPSIS π
p0f p0f [ -f file ] [ -i device ] [ -r file ] [ -o file ] [ -s socket ]
[ -u user ] [ -S limit ] [ -t c,h ] [ -m c,h ] [ -pdL ] [ 'filter rule'
]
(no bestie, the doubled p0f p0f is not me being silly, that's literally what the page says, I'm not touching it π)
β¨ DESCRIPTION β¨
so p0f uses a fingerprinting technique based on analyzing the structure of a TCP/IP packet to figure out the operating system and other configuration properties of a remote host. and the whole process is completely passive β it does not generate any suspicious network traffic. not a single suspicious packet. iconic behavior, honestly. π
the other host has to either:
- connect to your network β either spontaneously or in an induced manner, for example when trying to establish a
ftpdata stream, returning a bounced mail, performing auth lookup, using IRC DCC, external html mail image reference and so on, or - be contacted by some entity on your network using some standard means (such as a web browsing); it can either accept or refuse the connection.
the method can see thru packet firewalls and does not have the restrictions of an active fingerprinting. the main uses of passive OS fingerprinting are attacker profiling (IDS and honeypots), visitor profiling (content optimization), customer/user profiling (policy enforcement), pen-testing, etc. main character energy fr fr π
π¦ OPTIONS π¦
-ffile β read fingerprints from file; by default,p0freads signatures from./p0f.fpor/etc/p0f/p0f.fp(the latter on Unix systems only). you can use this to load custom fingerprint data. β οΈ Specifying multiple-fvalues will NOT combine several signature files together. not even a little. don't try it.-idevice β listen on this device;p0fdefaults to whatever devicelibpcapconsiders to be the best (and which often isn't π). on some newer systems you might be able to specify'any'to listen on all devices, but don't rely on this. β οΈ Specifying multiple-ivalues will NOT causep0fto listen on several interfaces at once.-rfile β read packets from a tcpdump snapshot; this is an alternate mode of operation, wherep0freads packets from a pcap data capture file instead of a live network. useful for forensics (this will parsetcpdump -woutput, for example). π you can use Ethereal'stext2pcapto convert human-readable packet traces to pcap files, if needed.-ofile β write to this logfile. this option is required for-dand implies-t. π-ssocket β listen on a specified local stream socket (a filesystem object, for example/var/run/p0f-sock) for queries. one can later send a packet to this socket withp0f_querystructure fromp0f-query.h, and wait forp0f_response. this is a method of integratingp0fwith active services (web server or web scripts, etc).P0fwill still continue to report signatures the usual way β but you can use-qKUcombination to suppress this. also see-cnotes. π«Ά a sample query tool (p0f-client) is provided in thetools/subdirectory.
NOTE: The socket will be created with permissions corresponding to your current umask. If you want to restrict access to this interface, use caution. π
-uuser β this option forcesp0ftochrootto this user's home directory after reading configuration data and binding to sockets, then to switch to hisUID,GIDand supplementary groups. this is a security feature for the paranoid β when runningp0fin daemon mode, you might want to create a new unprivileged user with an empty home directory, and limit the exposure whenp0fis compromised. that said, should such a compromise occur, the attacker will still have a socket he can use for sniffing some network traffic (better thanrm -rf /). ππ-pβ switch card to promiscuous mode; by default,p0flistens only to packets addressed or routed thru the machine it runs on. this setting might decrease performance, depending on your network design and load. on switched networks, this usually has little or no effect.
Note that promiscuous mode on IP-enabled interfaces can be detected remotely, and is sometimes not welcome by network administrators. be so careful bestie π
-dβ go into daemon mode (detach from current terminal and fork into background). Requires-oor-s. π§-Lβ lists all available interfaces, then quits. particularly useful on Windows, where the system-generated interface names are impossible to memorize. (ngl that's so real of them π)-Slimit β Limit number of parallel API connections (default:20)-tc,h β Set connection / host cache age limits (default:30s,120m)-mc,h β Limit the number of active connections / hosts (default:1000,10000)
π FILTERS π
the last part, 'filter rule', is a bpf-style filter expression for incoming packets. it is very useful for excluding or including certain networks, hosts, or specific packets, in the logfile. see man tcpdump for more information, few examples:
Β΄src port ftp-dataΒ΄
Β΄not dst net 10.0.0.0 mask 255.0.0.0Β΄
Β΄dst port 80 and ( src host 195.117.3.59 or src host 217.8.32.51 )Β΄
π BUGS π
you need to consult the documentation for an up-to-date list of issues. (iykyk, they're not gonna list them here bestie π)
π FILES π
/etc/p0f/p0f.fpβ default fingerprint database file π
π AUTHOR π
p0f was written by Michal Zalewski <lcamtuf@coredump.cx>. This man page was originally written by William Stearns <wstearns@pobox.com>, then adopted for p0f v2 by Michal Zalewski, and p0f v3 by Pierre Chifflier. π absolute legends, all of them.
and that's the whole thing, bestie!! π the footer just says P0F(1) β that's the source, version and date vibe for this one, so that's the sign-off. slay, go passively fingerprint some systems, and remember: no suspicious network traffic, no problem. periodt. π
β¨
π¦ where this page comes from
- debian bookworm: p0f 3.09b-3 Β· LGPL-2.1-only
- debian trixie: p0f 3.09b-4 Β· LGPL-2.1-only
- ubuntu jammy: p0f 3.09b-3 Β· LGPL-2.1-only
- ubuntu noble: p0f 3.09b-3build2 Β· LGPL-2.1-only
- ubuntu questing: p0f 3.09b-4
- ubuntu resolute: p0f 3.09b-4build1 Β· LGPL-2.1-only
- ubuntu stonking: p0f 3.09b-4build1 Β· LGPL-2.1-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms