Common Platform Enumeration (CPE)
Common Platform Enumeration (CPE) is a standardized way to name software applications, operating systems, and hardware platforms. Nmap includes CPE output for service and OS detection.
Structure of a CPE Name
A CPE name is a URL that encodes seven ordered fields:
cpe:/
<part>:<vendor>:<product>:<version>:<update>:<edition>:<language>
Some of the fields may be left blank, and empty fields may be left off
the end of the URL. The main division of CPE names is in the
field; this can take
on only three values:
<part>
a for applications, |
h for hardware platforms, or |
o for operating systems. |
By looking at the beginning of the URL you can easily see that
cpe:/a:microsoft:sql_server:6.5 names an application,
cpe:/h:asus:rt-n16 names a kind of hardware, and
cpe:/o:freebsd:freebsd:3.5.1 names an operating
system.
Nmap can output all three kinds of CPE names: OS detection can print
h and o; and service detection can
potentially output all three. The CPE names are mixed in with normal OS
and service output, for example:
Running: Linux 2.6.X OS CPE: cpe:/o:linux:linux_kernel:2.6.39 OS details: Linux 2.6.39 Network Distance: 10 hops Service Info: OS: Linux; CPE: cpe:/o:linux:kernel
CPE names for applications (with part a) are not
shown in normal output, but they are present in XML. CPE is represented
as a cpe element that can be a child of
service or osclass.
