A Logo

Feel free to include my content in your page via my
RSS feed

Help Irongeek.com pay for
bandwidth and research equipment:

Search Irongeek.com:

Irongeek Button
Social-engineer-training Button

Help Irongeek.com pay for bandwidth and research equipment:


Man page of XPROBE2


Section: Misc. Reference Manual Pages ($Id: xprobe2.1,v 1.19 2005/12/02 06:52:45 mederchik Exp $)
Index of this MAN page

Back To MAN Pages From BackTrack 5 R1 Master List  


xprobe2 - A Remote active operating system fingerprinting tool.  


xprobe2 [ -v ] [ -r ] [ -p proto:portnum:state ] [ -c configfile ] [ -o logfile ] [ -p port ] [ -t receive_timeout ] [ -m numberofmatches ] [ -D modnum ] [ -F ] [ -X ] [ -B ] [ -A ] [ -T port spec ] [ -U port spec ] host


xprobe2 is an active operating system fingerprinting tool with a different approach to operating system fingerprinting. xprobe2 relies on fuzzy signature matching, probabilistic guesses, multiple matches simultaneously, and a signature database.

The operation of xprobe2 is described in a paper titled "xprobe2 - A 'Fuzzy' Approach to Remote Active Operating System Fingerprinting", which is available from http://www.sys-security.com/html/projects/X.html.

Please refer to the PARALLELISM section for details on performing mass scanning.

As xprobe2 uses raw sockets to send probes, you must have root privileges in order for xprobe2 to be able to use them.  


be verbose.
display route to target (traceroute-like output).
use configfile to read the configuration file, xprobe2.conf, from a non-default location.
disable module number modnum.
set number of results to display to numofmatches.
use logfile to log everything (default output is stderr).
specify port number (portnum), protocol (proto) and it's state for xprobe2 to use during rechability/fingerprinting tests of remote host. Possible values for proto are tcp or udp, portnum can only take values from 1 to 65535, state can be either closed (for tcp that means that remote host replies with RST packet, for udp that means that remote host replies with ICMP Port Unreachable packet) or open (for tcp that means that remote host replies with SYN ACK packet and for udp that means that remote host doesn't send any packet back).
set receive timeout to receive_timeout in seconds (the default is set to 10 seconds).
generate signature for specified target (use -o to save fingerprint into file)
write XML output to logfile specified with -o
causes xprobe2 to be a bit more noisy, as -B makes TCP handshake module to try and blindly guess an open TCP port on the target, by sending sequential probes to the following well-known ports: 80, 443, 23, 21, 25, 22, 139, 445 and 6000 hoping to get SYN ACK reply. If xprobe2 receives RST|ACK or SYN|ACK packets for a port in the list above, it will be saved in the target port database to be later used by other modules (i.e. RST module).
-T, -U
enable built-in portscanning module, which will attempt to scan TCP and/or UDP ports respectively, which were specified in port spec
enable experimental support for detection of transparent proxies and firewalls/NIDSs spoofing RST packets in portscanning module. Option should be used in conjunction with -T. All responses from target gathered during portscanning process are divided in two classes (SYN|ACK and RST) and saved for analysis. During analysis module will search for different packets, based on some of the fields of TCP and IP headers, withing the same class and if such packets are found, message will be displayed showing different packets withing the same class.



In order to avoid portability issues, xprobe2 implements parallelism with the help of an external utility pxprobe. pxprobe is a simple utility that was written to quickly add parallelism to otherwise unparallel software. The principle behind the utility is simple, pxprobe takes the number of simultaneous tasks to run, command to run and target specification from the user and uses popen(3), which in turn uses fork(2), to execute specified command in specified number of simultaneious processes. pxprobe collects the output from each process and presents it to the user.

The following options are understood by pxprobe:

specifies number of concurrent processes to run (parallelism)
specified command to run (default is "xprobe2 -B")


pxprobe -p 20 -c "xprobe2 -ptcp:80:open -ptcp:25:open -M 11"

Will perform parallel scan of the C-class network,, with 20 targets being scanned in parallel. xprobe2 will be run with only one module enabled (number 11, TCP handshake module) and two TCP ports assumed as open: 80 and 25.

xprobe2 -v -D 1 -D 2

Will launch an OS fingerprinting attempt targeting Modules 1 and 2, which are reachability tests, will be disabled, so probes will be sent even if target is down. Output will be verbose.

xprobe2 -v -p udp:53:closed

Will launch an OS fingerprint attempt targeting The UDP destination port is set to 53, and the output will be verbose.

xprobe2 -M 11 -p tcp:80:open

Will only enable TCP handshake module (number 11) to probe the target, very usefull when all ICMP traffic is filtered.

xprobe2 -B

Will cause TCP handshake module to try blindly guess open port on the target by sequentially sending TCP packets to the most likely open ports (80, 443, 23, 21, 25, 22, 139, 445 and 6000).

xprobe2 -T 1-1024

Will enable portscanning module, which will scan TCP ports starting from 1 to 1024 on

xprobe2 -p tcp:139:open

If remote target has TCP port 139 open, the command line above will enable application level SMB module (if remote target has TCP port 445 open, substitue 139 in the command line with 445).

xprobe2 -p udp:161:open

Will enable SNMPv2c application level module, which will try to retrieve sysDescr.0 OID using community strings taken from xprobe2.conf file.



xprobe2 fingerprints remote operating system by analyzing the replies from the target, so to get the most out of xprobe2 you need to supply xprobe2 with as much information as possible, in particular it is important to supply at least one open TCP port and one closed UDP port. Open TCP port can either be provided in command line (-p), obtained through built-in portscanner (-T) or -B option can be used to cause xprobe2 to try to blindly guess open TCP port. UDP port can be supplied via command line (-p) or through built-in portscanner (-U).



xprobe has been developed in 2001 based on research performed by Ofir Arkin <ofir@sys-security.com>. The code has been officially released at the BlackHat Briefings in Las-Vegas in 2001. xprobe2 is a logical evolution of xprobe code. Signature based fuzzy fingerprinting logic was embedded.  


nmap(1) queso(1) pcap(3)  


Fyodor Yarochkin <fyodor@o0o.nu>, Ofir Arkin <ofir@sys-security.com>, Meder Kydyraliev <meder@o0o.nu>

(see also CREDITS in distro tarball).  


The current version and relevant documentation is available from following urls:


None known (please report).




This document was created by man2html, using the manual pages.
Time: 07:34:21 GMT, September 13, 2011

Printable version of this article

15 most recent posts on Irongeek.com:

If you would like to republish one of the articles from this site on your webpage or print journal please contact IronGeek.

Copyright 2016, IronGeek
Louisville / Kentuckiana Information Security Enthusiast