Nmap Manual
Nmap Manual
Nmap Manual
NAME
nmap - Network exploration tool and security / port scanner
SYNOPSIS
nmap [Scan Type...] [Options] {target specification}
DESCRIPTION
Nmap ( Network Mapper ) is an open source tool for network exploration and secur
ty auditing. It was
designed to rapidly scan large networks, although it works fine against s
ingle hosts. Nmap uses raw IP
packets in novel ways to determine what hosts are available on the networ
k, what services (application
name and version) those hosts are offering, what operating systems (and O
S versions) they are running,
what type of packet filters/firewalls are in use, and dozens of other cha
racteristics. While Nmap is
commonly used for security audits, many systems and network administrator
s find it useful for routine
tasks such as network inventory, managing service upgrade schedules, and
monitoring host or service
uptime.
The output from Nmap is a list of scanned targets, with supplemental info
rmation on each depending on
the options used. Key among that information is the interesting ports table
That table lists the
port number and protocol, service name, and state. The state is either op
en, filtered, closed, or
unfiltered. Open. means that an application on the target machine is li
stening for
connections/packets on that port. Filtered. means that a firewall, filt
er, or other network obstacle
is blocking the port so that Nmap cannot tell whether it is open or close
d. Closed. ports have no
application listening on them, though they could open up at any time. Por
ts are classified as
unfiltered. when they are responsive to Nmap's probes, but Nmap cannot d
etermine whether they are
open or closed. Nmap reports the state combinations open|filtered. and c
losed|filtered. when it
cannot determine which of the two states describe a port. The port table
may also include software
version details when version detection has been requested. When an IP pro
tocol scan is requested
(-sO), Nmap provides information on supported IP protocols rather than li
stening ports.
In addition to the interesting ports table, Nmap can provide further info
rmation on targets, including
reverse DNS names, operating system guesses, device types, and MAC addres
ses.
A typical Nmap scan is shown in Example 1. The only Nmap arguments used i
n this example are -A, to
enable OS and version detection, script scanning, and traceroute; -T4 for
faster execution; and then
..
the hostname.
Example 1. A representative Nmap scan
# nmap -A -T4 scanme.nmap.org
Nmap scan report for scanme.nmap.org (74.207.244.221)
Host is up (0.029s latency).
rDNS record for 74.207.244.221: li86-221.members.linode.com
Not shown: 995 closed ports
PORT
STATE
SERVICE
VERSION
22/tcp open
ssh
OpenSSH 5.3p1 Debian 3ubuntu7 (protocol
2.0)
| ssh-hostkey: 1024 8d:60:f1:7c:ca:b7:3d:0a:d6:67:54:9d:69:d9:b9:dd (
DSA)
|_2048 79:f8:09:ac:d4:e2:32:42:10:49:d3:bd:20:82:85:ec (RSA)
80/tcp open
http
Apache httpd 2.2.14 ((Ubuntu))
|_http-title: Go ahead and ScanMe!
646/tcp filtered ldp
1720/tcp filtered H.323/Q.931
9929/tcp open
nping-echo Nping echo
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.39
OS details: Linux 2.6.39
Network Distance: 11 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:kernel
TRACEROUTE (using port 53/tcp)
HOP RTT
ADDRESS
[Cut first 10 hops for brevity]
11 17.65 ms li86-221.members.linode.com (74.207.244.221)
Nmap done: 1 IP address (1 host up) scanned in 14.40 seconds
The newest version of Nmap can be obtained from https://nmap.org. The new
est version of this man page
is available at https://nmap.org/book/man.html. It is also included as a
chapter of Nmap Network
Scanning: The Official Nmap Project Guide to Network Discovery and Securi
ty Scanning (see
https://nmap.org/book/).
OPTIONS SUMMARY
This options summary is printed when Nmap is run with no arguments, and t
he latest version is always
available at https://svn.nmap.org/nmap/docs/nmap.usage.txt. It helps peop
le remember the most common
options, but is no substitute for the in-depth documentation in the rest
of this manual. Some obscure
options aren't even included here.
Nmap 7.01 ( https://nmap.org )
Usage: nmap [Scan Type(s)] [Options] {target specification}
TARGET SPECIFICATION:
Can pass hostnames, IP addresses, networks, etc.
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-25
4
-iL <inputfilename>: Input from list of hosts/networks
-iR <num hosts>: Choose random targets
).
-T<0-5>: Set timing template (higher is faster)
--min-hostgroup/max-hostgroup <size>: Parallel host scan group size
s
--min-parallelism/max-parallelism <numprobes>: Probe parallelizatio
n
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Speci
fies
probe round trip time.
--max-retries <tries>: Caps number of port scan probe retransmissio
ns.
--host-timeout <time>: Give up on target after this long
--scan-delay/--max-scan-delay <time>: Adjust delay between probes
--min-rate <number>: Send packets no slower than <number> per secon
d
--max-rate <number>: Send packets no faster than <number> per secon
d
FIREWALL/IDS EVASION AND SPOOFING:
-f; --mtu <val>: fragment packets (optionally w/given MTU)
-D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
-S <IP_Address>: Spoof source address
-e <iface>: Use specified interface
-g/--source-port <portnum>: Use given port number
--proxies <url1,[url2],...>: Relay connections through HTTP/SOCKS4
proxies
--data <hex string>: Append a custom payload to sent packets
--data-string <string>: Append a custom ASCII string to sent packet
s
--data-length <num>: Append random data to sent packets
--ip-options <options>: Send packets with specified ip options
--ttl <val>: Set IP time-to-live field
--spoof-mac <mac address/prefix/vendor name>: Spoof your MAC addres
s
--badsum: Send packets with a bogus TCP/UDP/SCTP checksum
OUTPUT:
-oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
and Grepable format, respectively, to the given filename.
-oA <basename>: Output in the three major formats at once
-v: Increase verbosity level (use -vv or more for greater effect)
-d: Increase debugging level (use -dd or more for greater effect)
--reason: Display the reason a port is in a particular state
--open: Only show open (or possibly open) ports
--packet-trace: Show all packets sent and received
--iflist: Print host interfaces and routes (for debugging)
--append-output: Append to rather than clobber specified output fil
es
--resume <filename>: Resume an aborted scan
--stylesheet <path/URL>: XSL stylesheet to transform XML output to
HTML
--webxml: Reference stylesheet from Nmap.Org for more portable XML
--no-stylesheet: Prevent associating of XSL stylesheet w/XML output
MISC:
-6: Enable IPv6 scanning
-A: Enable OS detection, version detection, script scanning, and tr
aceroute
--datadir <dirname>: Specify custom Nmap data file location
--send-eth/--send-ip: Send using raw ethernet frames or IP packets
--privileged: Assume that the user is fully privileged
--unprivileged: Assume the user lacks raw socket privileges
-V: Print version number
This option sends an empty TCP packet with the SYN flag set. The defa
ult destination port is 80
(configurable at compile time by changing DEFAULT_TCP_PROBE_PORT_SPEC
. in nmap.h).. Alternate
ports can be specified as a parameter. The syntax is the same as for
the -p except that port type
specifiers like T: are not allowed. Examples are -PS22 and -PS22-25,8
0,113,1050,35000. Note that
there can be no space between -PS and the port list. If multiple prob
es are specified they will be
sent in parallel.
The SYN flag suggests to the remote system that you are attempting to
establish a connection.
Normally the destination port will be closed, and a RST (reset) packe
t sent back. If the port
happens to be open, the target will take the second step of a TCP thr
ee-way-handshake. by
responding with a SYN/ACK TCP packet. The machine running Nmap then t
ears down the nascent
connection by responding with a RST rather than sending an ACK packet
which would complete the
three-way-handshake and establish a full connection. The RST packet i
s sent by the kernel of the
machine running Nmap in response to the unexpected SYN/ACK, not by Nm
ap itself.
Nmap does not care whether the port is open or closed. Either the RST
or SYN/ACK response
discussed previously tell Nmap that the host is available and respons
ive.
On Unix boxes, only the privileged user root. is generally able to s
end and receive raw TCP
packets.. For unprivileged users, a workaround is automatically empl
oyed. whereby the connect
system call is initiated against each target port. This has the effec
t of sending a SYN packet to
the target host, in an attempt to establish a connection. If connect
returns with a quick success
or an ECONNREFUSED failure, the underlying TCP stack must have receiv
ed a SYN/ACK or RST and the
host is marked available. If the connection attempt is left hanging u
ntil a timeout is reached,
the host is marked as down.
-PA port list (TCP ACK Ping) .
The TCP ACK ping is quite similar to the just-discussed SYN ping. The
difference, as you could
likely guess, is that the TCP ACK flag is set instead of the SYN flag
. Such an ACK packet purports
to be acknowledging data over an established TCP connection, but no s
uch connection exists. So
remote hosts should always respond with a RST packet, disclosing thei
r existence in the process.
The -PA option uses the same default port as the SYN probe (80) and c
an also take a list of
destination ports in the same format. If an unprivileged user tries t
his, the connect workaround
Time Exceeded messages from intermediate hops between the scanner and
the target host. Standard
traceroute implementations start with a TTL of 1 and increment the TT
L until the destination host
is reached. Nmap's traceroute starts with a high TTL and then decreme
nts the TTL until it reaches
zero. Doing it backwards lets Nmap employ clever caching algorithms t
o speed up traces over
multiple hosts. On average Nmap sends 5 10 fewer packets per host, depend
ing on network
conditions. If a single subnet is being scanned (i.e. 192.168.0.0/24)
Nmap may only have to send
two packets to most hosts.
-n (No DNS resolution) .
Tells Nmap to never do reverse DNS resolution on the active IP addres
ses it finds. Since DNS can
be slow even with Nmap's built-in parallel stub resolver, this option
can slash scanning times.
-R (DNS resolution for all targets) .
Tells Nmap to always do reverse DNS resolution on the target IP addre
sses. Normally reverse DNS is
only performed against responsive (online) hosts.
--system-dns (Use system DNS resolver) .
By default, Nmap resolves IP addresses by sending queries directly to
the name servers configured
on your host and then listening for responses. Many requests (often d
ozens) are performed in
parallel to improve performance. Specify this option to use your syst
em resolver instead (one IP
at a time via the getnameinfo call). This is slower and rarely useful
unless you find a bug in the
Nmap parallel resolver (please let us know if you do). The system res
olver is always used for IPv6
scans.
--dns-servers server1[,server2[,...]] (Servers to use for reverse DNS qu
eries) .
By default, Nmap determines your DNS servers (for rDNS resolution) fr
om your resolv.conf file
(Unix) or the Registry (Win32). Alternatively, you may use this optio
n to specify alternate
servers. This option is not honored if you are using --system-dns or
an IPv6 scan. Using multiple
DNS servers is often faster, especially if you choose authoritative s
ervers for your target IP
space. This option can also improve stealth, as your requests can be
bounced off just about any
recursive DNS server on the Internet.
This option also comes in handy when scanning private networks. Somet
imes only a few name servers
provide proper rDNS information, and you may not even know where they
are. You can scan the
network for port 53 (perhaps with version detection), then try Nmap l
ist scans (-sL) specifying
each name server one at a time with --dns-servers until you find one
which works.
The unfiltered state means that a port is accessible, but Nmap is una
ble to determine whether it
is open or closed. Only the ACK scan, which is used to map firewall r
ulesets, classifies ports
into this state. Scanning unfiltered ports with other scan types such
as Window scan, SYN scan, or
FIN scan, may help resolve whether the port is open.
Nmap places ports in this state when it is unable to determine whethe
r a port is open or filtered.
This occurs for scan types in which open ports give no response. The
lack of response could also
mean that a packet filter dropped the probe or any response it elicit
ed. So Nmap does not know for
sure whether the port is open or being filtered. The UDP, IP protocol
, FIN, NULL, and Xmas scans
classify ports this way.
This state is used when Nmap is unable to determine whether a port is
closed or filtered. It is
only used for the IP ID idle scan.
PORT SCANNING TECHNIQUES
As a novice performing automotive repair, I can struggle for hours trying
to fit my rudimentary tools
(hammer, duct tape, wrench, etc.) to the task at hand. When I fail misera
bly and tow my jalopy to a
real mechanic, he invariably fishes around in a huge tool chest until pul
ling out the perfect gizmo
which makes the job seem effortless. The art of port scanning is similar.
Experts understand the
dozens of scan techniques and choose the appropriate one (or combination)
for a given task.
Inexperienced users and script kiddies,. on the other hand, try to solve
every problem with the
default SYN scan. Since Nmap is free, the only barrier to port scanning m
astery is knowledge. That
certainly beats the automotive world, where it may take great skill to de
termine that you need a strut
spring compressor, then you still have to pay thousands of dollars for it
.
Most of the scan types are only available to privileged users.. This is
because they send and receive
raw packets,. which requires root access on Unix systems. Using an admin
istrator account on Windows
is recommended, though Nmap sometimes works for unprivileged users on tha
t platform when WinPcap has
already been loaded into the OS. Requiring root privileges was a serious
limitation when Nmap was
released in 1997, as many users only had access to shared shell accounts.
Now, the world is different.
Computers are cheaper, far more people have always-on direct Internet acc
ess, and desktop Unix systems
(including Linux and Mac OS X) are prevalent. A Windows version of Nmap i
s now available, allowing it
to run on even more desktops. For all these reasons, users have less need
to run Nmap from limited
shared shell accounts. This is fortunate, as the privileged options make
andshake.pdf).
-sT (TCP connect scan) .
TCP connect scan is the default TCP scan type when SYN scan is not an
option. This is the case
when a user does not have raw packet privileges. Instead of writing r
aw packets as most other scan
types do, Nmap asks the underlying operating system to establish a co
nnection with the target
machine and port by issuing the connect system call. This is the same
high-level system call that
web browsers, P2P clients, and most other network-enabled application
s use to establish a
connection. It is part of a programming interface known as the Berkel
ey Sockets API. Rather than
read raw packet responses off the wire, Nmap uses this API to obtain
status information on each
connection attempt.
When SYN scan is available, it is usually a better choice. Nmap has l
ess control over the high
level connect call than with raw packets, making it less efficient. T
he system call completes
connections to open target ports rather than performing the half-open
reset that SYN scan does.
Not only does this take longer and require more packets to obtain the
same information, but target
machines are more likely to log the connection. A decent IDS will cat
ch either, but most machines
have no such alarm system. Many services on your average Unix system
will add a note to syslog,
and sometimes a cryptic error message, when Nmap connects and then cl
oses the connection without
sending data. Truly pathetic services crash when this happens, though
that is uncommon. An
administrator who sees a bunch of connection attempts in her logs fro
m a single system should know
that she has been connect scanned.
-sU (UDP scans) .
While most popular services on the Internet run over the TCP protocol
, UDP[6] services are widely
deployed. DNS, SNMP, and DHCP (registered ports 53, 161/162, and 67/6
8) are three of the most
common. Because UDP scanning is generally slower and more difficult t
han TCP, some security
auditors ignore these ports. This is a mistake, as exploitable UDP se
rvices are quite common and
attackers certainly don't ignore the whole protocol. Fortunately, Nma
p can help inventory UDP
ports.
UDP scan is activated with the -sU option. It can be combined with a
TCP scan type such as SYN
scan (-sS) to check both protocols during the same run.
UDP scan works by sending a UDP packet to every targeted port. For so
me common ports such as 53
and 161, a protocol-specific payload is sent to increase response rat
e, but for most ports the
you specify (which must be up and meet certain criteria). This fasci
nating scan type is too
complex to fully describe in this reference guide, so I wrote and pos
ted an informal paper with
full details at https://nmap.org/book/idlescan.html.
Besides being extraordinarily stealthy (due to its blind nature), thi
s scan type permits mapping
out IP-based trust relationships between machines. The port listing s
hows open ports from the
perspective of the zombie host. So you can try scanning a target usi
ng various zombies that you
think might be trusted. (via router/packet filter rules).
You can add a colon followed by a port number to the zombie host if y
ou wish to probe a particular
port on the zombie for IP ID changes. Otherwise Nmap will use the por
t it uses by default for TCP
pings (80).
-sO (IP protocol scan) .
IP protocol scan allows you to determine which IP protocols (TCP, ICM
P, IGMP, etc.) are supported
by target machines. This isn't technically a port scan, since it cycl
es through IP protocol
numbers rather than TCP or UDP port numbers. Yet it still uses the -p
option to select scanned
protocol numbers, reports its results within the normal port table fo
rmat, and even uses the same
underlying scan engine as the true port scanning methods. So it is cl
ose enough to a port scan
that it belongs here.
Besides being useful in its own right, protocol scan demonstrates the
power of open-source
software. While the fundamental idea is pretty simple, I had not thou
ght to add it nor received
any requests for such functionality. Then in the summer of 2000, Gerh
ard Rieger. conceived the
idea, wrote an excellent patch implementing it, and sent it to the an
nounce mailing list. (then
called nmap-hackers).. I incorporated that patch into the Nmap tree
and released a new version
the next day. Few pieces of commercial software have users enthusiast
ic enough to design and
contribute their own improvements!
Protocol scan works in a similar fashion to UDP scan. Instead of iter
ating through the port number
field of a UDP packet, it sends IP packet headers and iterates throug
h the eight-bit IP protocol
field. The headers are usually empty, containing no data and not even
the proper header for the
claimed protocol. The exceptions are TCP, UDP, ICMP, SCTP, and IGMP.
A proper protocol header for
those is included since some systems won't send them otherwise and be
cause Nmap already has
functions to create them. Instead of watching for ICMP port unreachab
le messages, protocol scan is
on the lookout for ICMP protocol unreachable messages. If Nmap receiv
When scanning a combination of protocols (e.g. TCP and UDP), you can
specify a particular protocol
by preceding the port numbers by T: for TCP, U: for UDP, S: for SCTP,
or P: for IP Protocol. The
qualifier lasts until you specify another qualifier. For example, the
argument -p
U:53,111,137,T:21-25,80,139,8080 would scan UDP ports 53, 111,and 137
, as well as the listed TCP
ports. Note that to scan both UDP and TCP, you have to specify -sU an
d at least one TCP scan type
(such as -sS, -sF, or -sT). If no protocol qualifier is given, the po
rt numbers are added to all
protocol lists. Ports can also be specified by name according to wha
t the port is referred to in
the nmap-services. You can even use the wildcards * and ? with the n
ames. For example, to scan
FTP and all ports whose names begin with http , use -p ftp,http*. Be carefu
about shell
expansions and quote the argument to -p if unsure.
Ranges of ports can be surrounded by square brackets to indicate port
s inside that range that
appear in nmap-services. For example, the following will scan all por
ts in nmap-services equal to
or below 1024: -p [-1024]. Be careful with shell expansions and quote
the argument to -p if
unsure.
--exclude-ports port ranges (Exclude the specified ports from scanning) .
This option specifies which ports you do want Nmap to exclude from sc
anning. The port ranges are
specified similar to -p. For IP protocol scanning (-sO), this option
specifies the protocol
numbers you wish to exclude (0 255).
When ports are asked to be excluded, they are excluded from all types
of scans (i.e. they will not
be scanned under any circumstances). This also includes the discovery
phase.
-F (Fast (limited port) scan) .
Specifies that you wish to scan fewer ports than the default. Normall
y Nmap scans the most common
1,000 ports for each scanned protocol. With -F, this is reduced to 10
0.
printer, router), the OS family (e.g. Windows, Linux). When possible, Nma
p also gets the Common
Platform Enumeration (CPE). representation of this information. Sometime
s miscellaneous details like
whether an X server is open to connections, the SSH protocol version, or
the KaZaA user name, are
available. Of course, most services don't provide all of this information
. If Nmap was compiled with
OpenSSL support, it will connect to SSL servers to deduce the service lis
tening behind that encryption
layer.. Some UDP ports are left in the open|filtered state after a UDP p
ort scan is unable to
determine whether the port is open or filtered. Version detection will tr
y to elicit a response from
these ports (just as it does with open ports), and change the state to op
en if it succeeds.
open|filtered TCP ports are treated the same way. Note that the Nmap -A o
ption enables version
detection among other things. A paper documenting the workings, usage, a
nd customization of version
detection is available at https://nmap.org/book/vscan.html.
When RPC services are discovered, the Nmap RPC grinder. is automatically
used to determine the RPC
program and version numbers. It takes all the TCP/UDP ports detected as R
PC and floods them with
SunRPC program NULL commands in an attempt to determine whether they are
RPC ports, and if so, what
program and version number they serve up. Thus you can effectively obtain
the same info as rpcinfo -p
even if the target's portmapper is behind a firewall (or protected by TCP
wrappers). Decoys do not
currently work with RPC scan..
When Nmap receives responses from a service but cannot match them
database, it prints out a
special fingerprint and a URL for you to submit if to if you know
e what is running on the
port. Please take a couple minutes to make the submission so that
nd can benefit everyone.
Thanks to these submissions, Nmap has about 6,500 pattern matches
e than 650 protocols such as
SMTP, FTP, HTTP, etc..
to its
for sur
your fi
for mor
OS detection enables some other tests which make use of information that
is gathered during the
process anyway. One of these is TCP Sequence Predictability Classificatio
n. This measures
approximately how hard it is to establish a forged TCP connection against
the remote host. It is
useful for exploiting source-IP based trust relationships (rlogin, firewa
ll filters, etc) or for
hiding the source of an attack. This sort of spoofing is rarely performed
any more, but many machines
are still vulnerable to it. The actual difficulty number is based on stat
istical sampling and may
fluctuate. It is generally better to use the English classification such
as worthy challenge
or
trivial joke . This is only reported in normal output in verbose (-v) mode. Whe
verbose mode is
enabled along with -O, IP ID sequence generation is also reported. Most m
achines are in the
incremental
class, which means that they increment the ID field in the IP head
r for each packet
they send. This makes them vulnerable to several advanced information gat
hering and spoofing attacks.
Another bit of extra information enabled by OS detection is a guess at a
target's uptime. This uses
the TCP timestamp option (RFC 1323[10]) to guess when a machine was last
rebooted. The guess can be
inaccurate due to the timestamp counter not being initialized to zero or
the counter overflowing and
wrapping around, so it is printed only in verbose mode.
A paper documenting the workings, usage, and customization of OS detectio
n is available at
https://nmap.org/book/osdetect.html.
OS detection is enabled and controlled with the following options:
-O (Enable OS detection) .
Enables OS detection, as discussed above. Alternatively, you can use
-A to enable OS detection
along with other things.
--osscan-limit (Limit OS detection to promising targets) .
OS detection is far more effective if at least one open and one close
d TCP port are found. Set
this option and Nmap will not even try OS detection against hosts tha
t do not meet this criteria.
This can save substantial time, particularly on -Pn scans against man
y hosts. It only matters when
OS detection is requested with -O or -A.
--osscan-guess; --fuzzy (Guess OS detection results) .
-sC .
Performs a script scan using the default set of scripts. It is equiva
lent to --script=default.
Some of the scripts in this category are considered intrusive and sho
uld not be run against a
target network without permission.
--script filename|category|directory|expression[,...]
Runs a script scan using the comma-separated list
t categories, and
directories. Each element in the list may also be
n describing a more complex
set of scripts. Each element is interpreted first
hen as a category, and
finally as a file or directory name.
.
of filenames, scrip
a Boolean expressio
as an expression, t
There are two special features for advanced users only. One is to pre
fix script names and
expressions with + to force them to run even if they normally wouldn'
t (e.g. the relevant service
wasn't detected on the target port). The other is that the argument a
ll may be used to specify
every script in Nmap's database. Be cautious with this because NSE co
ntains dangerous scripts such
as exploits, brute force authentication crackers, and denial of servi
ce attacks.
File and directory names may be relative or absolute. Absolute names
are used directly. Relative
paths are looked for in the scripts of each of the following places u
ntil found: --datadir
$NMAPDIR.
~/.nmap (not searched on Windows).
HOME\AppData\Roaming\nmap (only on Windows).
the directory containing the nmap executable
the directory containing the nmap executable, followed by ../share/nm
ap
NMAPDATADIR.
the current directory.
When a directory name is given, Nmap loads every file in the directory wh
ose name ends with .nse. All
other files are ignored and directories are not searched recursively. Whe
n a filename is given, it
does not have to have the .nse extension; it will be added automatically
if necessary. Nmap scripts
are stored in a scripts subdirectory of the Nmap data directory by defaul
t (see
https://nmap.org/book/data-files.html). For efficiency, scripts are inde
xed in a database stored in
scripts/script.db,. which lists the category or categories in which each
script belongs. When
referring to scripts from script.db by name, you can use a shell-style *
rd.
nmap --script "http-*"
Loads all scripts whose name starts with http-, such as http-auth and
http-open-proxy. The
argument to --script had to be in quotes to protect the wildcard from
the shell.
wildc
More complicated script selection can be done using the and, or, and not
operators to build Boolean
expressions. The operators have the same precedence[12] as in Lua: not is
the highest, followed by and
and then or. You can alter precedence by using parentheses. Because expre
ssions contain space
characters it is necessary to quote them.
nmap --script "not intrusive"
Loads every script except for those in the intrusive category.
nmap --script "default or safe"
This is functionally equivalent to nmap --script "default,safe". It l
oads all scripts that are in
the default category or the safe category or both.
nmap --script "default and safe"
Loads those scripts that are in both the default and safe categories.
nmap --script "(default or safe or intrusive) and not http-*"
Loads scripts in the default, safe, or intrusive categories, except f
or those whose names start
with http-.
--script-args n1=v1,n2={n3=v3},n4={v4,v5} .
Lets you provide arguments to NSE scripts. Arguments are a comma-sepa
rated list of name=value
pairs. Names and values may be strings not containing whitespace or t
he characters { , } , = ,
or , . To include one of these characters in a string, enclose the string i
single or double
quotes. Within a quoted string, \
escapes a quote. A backslash is only use
to escape quotation
marks in this special case; in all other cases a backslash is interpr
eted literally. Values may
also be tables enclosed in {}, just as in Lua. A table may contain si
mple string values or more
name-value pairs, including nested tables. Many scripts qualify their
arguments with the script
name, as in xmpp-info.server_name. You may use that full qualified ve
rsion to affect just the
specified script, or you may pass the unqualified version (server_nam
e in this case) to affect all
scripts using that argument name. A script will first check for its f
ully qualified argument name
(the name specified in its documentation) before it accepts an unqual
ified argument name. A
complex example of script arguments is --script-args
'user=foo,pass=",{}=bar",whois={whodb=nofollow+ripe},xmpp-info.server
_name=localhost'. The online
NSE Documentation Portal at https://nmap.org/nsedoc/ lists the argume
nts that each script accepts.
--script-args-file filename .
Lets you load arguments to NSE scripts from a file. Any arguments on
the command line supersede
ones in the file. The file can be an absolute path, or a path relativ
e to Nmap's usual search path
(NMAPDIR, etc.) Arguments can be comma-separated or newline-separated
This option causes Nmap to wait at least the given amount of time bet
ween each probe it sends to a
given host. This is particularly useful in the case of rate limiting.
. Solaris machines (among
many others) will usually respond to UDP scan probe packets with only
one ICMP message per second.
Any more than that sent by Nmap will be wasteful. A --scan-delay of 1
s will keep Nmap at that slow
rate. Nmap tries to detect rate limiting and adjust the scan delay ac
cordingly, but it doesn't
hurt to specify it explicitly if you already know what rate works bes
t.
When Nmap adjusts the scan delay upward to cope with rate limiting, t
he scan slows down
dramatically. The --max-scan-delay option specifies the largest delay
that Nmap will allow. A low
--max-scan-delay can speed up Nmap, but it is risky. Setting this val
ue too low can lead to
wasteful packet retransmissions and possible missed ports when the ta
rget implements strict rate
limiting.
Another use of --scan-delay is to evade threshold based intrusion det
ection and prevention systems
(IDS/IPS)..
--min-rate number; --max-rate number (Directly control the scanning rate)
.
Nmap's dynamic timing does a good job of finding an appropriate speed
at which to scan. Sometimes,
however, you may happen to know an appropriate scanning rate for a ne
twork, or you may have to
guarantee that a scan will be finished by a certain time. Or perhaps
you must keep Nmap from
scanning too quickly. The --min-rate and --max-rate options are desig
ned for these situations.
When the --min-rate option is given Nmap will do its best to send pac
kets as fast as or faster
than the given rate. The argument is a positive real number represent
ing a packet rate in packets
per second. For example, specifying --min-rate 300 means that Nmap wi
ll try to keep the sending
rate at or above 300 packets per second. Specifying a minimum rate do
es not keep Nmap from going
faster if conditions warrant.
Likewise, --max-rate limits a scan's sending rate to a given maximum.
Use --max-rate 100, for
example, to limit sending to 100 packets per second on a fast network
. Use --max-rate 0.1 for a
slow scan of one packet every ten seconds. Use --min-rate and --max-r
ate together to keep the rate
inside a certain range.
These two options are global, affecting an entire scan, not individua
l hosts. They only affect
port scans and host discovery scans. Other features like OS detection
implement their own timing.
There are two conditions when the actual scanning rate may fall below
the requested minimum. The
first is if the minimum is faster than the fastest rate at which Nmap
can send, which is dependent
on hardware. In this case Nmap will simply send packets as fast as po
ssible, but be aware that
such high rates are likely to cause a loss of accuracy. The second ca
se is when Nmap has nothing
to send, for example at the end of a scan when the last probes have b
een sent and Nmap is waiting
for them to time out or be responded to. It's normal to see the scann
ing rate drop at the end of a
scan or in between hostgroups. The sending rate may temporarily excee
d the maximum to make up for
unpredictable delays, but on average the rate will stay at or below t
he maximum.
Specifying a minimum rate should be done with care. Scanning faster t
han a network can support may
lead to a loss of accuracy. In some cases, using a faster rate can ma
ke a scan take longer than it
would with a slower rate. This is because Nmap's adaptive retransmiss
ion algorithms will detect
the network congestion caused by an excessive scanning rate and incre
ase the number of
retransmissions in order to improve accuracy. So even though packets
are sent at a higher rate,
more packets are sent overall. Cap the number of retransmissions with
the --max-retries option if
you need to set an upper limit on total scan time.
--defeat-rst-ratelimit .
Many hosts have long used rate limiting. to reduce the number of ICM
P error messages (such as
port-unreachable errors) they send. Some systems now apply similar ra
te limits to the RST (reset)
packets they generate. This can slow Nmap down dramatically as it adj
usts its timing to reflect
those rate limits. You can tell Nmap to ignore those rate limits (for
port scans such as SYN scan
which don't treat non-responsive ports as open) by specifying --defea
t-rst-ratelimit.
Using this option can reduce accuracy, as some ports will appear nonresponsive because Nmap
didn't wait long enough for a rate-limited RST response. With a SYN s
can, the non-response results
in the port being labeled filtered rather than the closed state we se
e when RST packets are
received. This option is useful when you only care about open ports,
and distinguishing between
closed and filtered ports isn't worth the extra time.
--nsock-engine epoll|kqueue|poll|select .
Enforce use of a given nsock IO multiplexing engine. Only the select(
2)-based fallback engine is
guaranteed to be available on your system. Engines are named after th
e name of the IO management
facility they leverage. Engines currently implemented are epoll, kque
long time to scan thousands of machines or ports. For such a long sca
n, you may prefer to set the
exact timing values you need rather than rely on the canned -T0 and T1 values.
The main effects of T0 are serializing the scan so only one port is s
canned at a time, and waiting
five minutes between sending each probe. T1 and T2 are similar but t
hey only wait 15 seconds and
0.4 seconds, respectively, between probes. T3. is Nmap's default be
havior, which includes
parallelization. -T4 does the equivalent of --max-rtt-timeout 1250ms
--min-rtt-timeout 100ms
--initial-rtt-timeout 500ms --max-retries 6 and sets the maximum TCP
scan delay to 10
milliseconds. T5 does the equivalent of --max-rtt-timeout 300ms --mi
n-rtt-timeout 50ms
--initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m as wel
l as setting the maximum TCP
scan delay to 5 ms.
FIREWALL/IDS EVASION AND SPOOFING
Many Internet pioneers envisioned a global open network with a universal
IP address space allowing
virtual connections between any two nodes. This allows hosts to act as tr
ue peers, serving and
retrieving information from each other. People could access all of their
home systems from work,
changing the climate control settings or unlocking the doors for early gu
ests. This vision of
universal connectivity has been stifled by address space shortages and se
curity concerns. In the early
1990s, organizations began deploying firewalls for the express purpose of
reducing connectivity. Huge
networks were cordoned off from the unfiltered Internet by application pr
oxies, network address
translation, and packet filters. The unrestricted flow of information gav
e way to tight regulation of
approved communication channels and the content that passes over them.
Network obstructions such as firewalls can make mapping a network exceedi
ngly difficult. It will not
get any easier, as stifling casual reconnaissance is often a key goal of
implementing the devices.
Nevertheless, Nmap offers many features to help understand these complex
networks, and to verify that
filters are working as intended. It even supports mechanisms for bypassin
g poorly implemented
defenses. One of the best methods of understanding your network security
posture is to try to defeat
it. Place yourself in the mind-set of an attacker, and deploy techniques
from this section against
your networks. Launch an FTP bounce scan, idle scan, fragmentation attack
, or try to tunnel through
one of your own proxies.
In addition to restricting network activity, companies are increasingly m
onitoring traffic with
intrusion detection systems (IDS). All of the major IDSs ship with rules
designed to detect Nmap scans
It is worth noting that using too many decoys may slow your scan and
potentially even make it less
accurate. Also, some ISPs will filter out your spoofed packets, but m
any do not restrict spoofed
IP packets at all.
-S IP_Address (Spoof source address) .
In some circumstances, Nmap may not be able to determine your source
address (Nmap will tell you
if this is the case). In this situation, use -S with the IP address o
f the interface you wish to
send packets through.
Another possible use of this flag is to spoof the scan to make the ta
rgets think that someone else
is scanning them. Imagine a company being repeatedly port scanned by
a competitor! The -e option
and -Pn are generally required for this sort of usage. Note that you
usually won't receive reply
packets back (they will be addressed to the IP you are spoofing), so
Nmap won't produce useful
reports.
-e interface (Use specified interface) .
Tells Nmap what interface to send and receive packets on. Nmap should
be able to detect this
automatically, but it will tell you if it cannot.
--source-port portnumber; -g portnumber (Spoof source port number) .
One surprisingly common misconfiguration is to trust traffic based on
ly on the source port number.
It is easy to understand how this comes about. An administrator will
set up a shiny new firewall,
only to be flooded with complaints from ungrateful users whose applic
ations stopped working. In
particular, DNS may be broken because the UDP DNS replies from extern
al servers can no longer
enter the network. FTP is another common example. In active FTP trans
fers, the remote server tries
to establish a connection back to the client to transfer the requeste
d file.
Secure solutions to these problems exist, often in the form of applic
ation-level proxies or
protocol-parsing firewall modules. Unfortunately there are also easie
r, insecure solutions. Noting
that DNS replies come from port 53 and active FTP from port 20, many
administrators have fallen
into the trap of simply allowing incoming traffic from those ports. T
hey often assume that no
attacker would notice and exploit such firewall holes. In other cases
, administrators consider
this a short-term stop-gap measure until they can implement a more se
cure solution. Then they
forget the security upgrade.
Overworked network administrators are not the only ones to fall into
this trap. Numerous products
have shipped with these insecure rules. Even Microsoft has been guilt
y. The IPsec filters that
shipped with Windows 2000 and Windows XP contain an implicit rule tha
t allows all TCP or UDP
traffic from port 88 (Kerberos). In another well-known case, versions
of the Zone Alarm personal
firewall up to 2.1.25 allowed any incoming UDP packets with the sourc
e port 53 (DNS) or 67 (DHCP).
Nmap offers the -g and --source-port options (they are equivalent) to
exploit these weaknesses.
Simply provide a port number and Nmap will send packets from that por
t where possible. Most
scanning operations that use raw sockets, including SYN and UDP scans
, support the option
completely. The option notably doesn't have an effect for any operati
ons that use normal operating
system sockets, including DNS requests, TCP connect scan,. version d
etection, and script
scanning. Setting the source port also doesn't work for OS detection,
because Nmap must use
different port numbers for certain OS detection tests to work properl
y.
--data hex string (Append custom binary data to sent packets) .
This option lets you include binary data as payload in sent packets.
hex string may be specified
in any of the following formats: 0xAABBCCDDEEFF..., AABBCCDDEEFF...
or
\xAA\xBB\xCC\xDD\xEE\xFF.... Examples of use are --data 0xdeadbeef an
d --data \xCA\xFE\x09. Note
that if you specify a number like 0x00ff no byte-order conversion is
performed. Make sure you
specify the information in the byte order expected by the receiver.
--data-string string (Append custom string to sent packets) .
This option lets you include a regular string as payload in sent pack
ets. string can contain any
string. However, note that some characters may depend on your system'
s locale and the receiver may
not see the same information. Also, make sure you enclose the string
in double quotes and escape
any special characters from the shell. Examples: --data-string "Scan
conducted by Security Ops,
extension 7192" or --data-string "Ph34r my l33t skills". Keep in mind
that nobody is likely to
actually see any comments left by this option unless they are careful
ly monitoring the network
with a sniffer or custom IDS rules.
--data-length number (Append random data to sent packets) .
Normally Nmap sends minimalist packets containing only a header. So i
ts TCP packets are generally
40 bytes and ICMP echo requests are just 28. Some UDP ports. and IP
protocols. get a custom
payload by default. This option tells Nmap to append the given number
of random bytes to most of
the packets it sends, and not to use any protocol-specific payloads.
(Use --data-length 0 for no
random or protocol-specific payloads.. OS detection (-O) packets are
not affected. because
accuracy there requires probe consistency, but most pinging and ports
programmatic analysis. You might do this with the options -oX myscan.xml
-oN myscan.nmap. While this
chapter uses the simple names like myscan.xml for brevity, more descripti
ve names are generally
recommended. The names chosen are a matter of personal preference, though
I use long ones that
incorporate the scan date and a word or two describing the scan, placed i
n a directory named after the
company I'm scanning.
While these options save results to files, Nmap still prints interactive
output to stdout as usual.
For example, the command nmap -oX myscan.xml target prints XML to myscan.
xml and fills standard output
with the same interactive results it would have printed if -oX wasn't spe
cified at all. You can change
this by passing a hyphen character as the argument to one of the format t
ypes. This causes Nmap to
deactivate interactive output, and instead print results in the format yo
u specified to the standard
output stream. So the command nmap -oX - target will send only XML output
to stdout.. Serious errors
may still be printed to the normal error stream, stderr..
Unlike some Nmap arguments, the space between the logfile option flag (su
ch as -oX) and the filename
or hyphen is mandatory. If you omit the flags and give arguments such as
-oG- or -oXscan.xml, a
backwards compatibility feature of Nmap will cause the creation of normal
format output files named Gand Xscan.xml respectively.
All of these arguments support strftime-like. conversions in the filenam
e. %H, %M, %S, %m, %d, %y,
and %Y are all exactly the same as in strftime. %T is the same as %H%M%S
, %R is the same as %H%M, and
%D is the same as %m%d%y. A % followed by any other character just yields
that character (%% gives you
a percent symbol). So -oX 'scan-%T-%D.xml' will use an XML file with a na
me in the form of
scan-144840-121307.xml.
Nmap also offers options to control scan verbosity and to append to outpu
t files rather than
clobbering them. All of these options are described below.
Nmap Output Formats
-oN filespec (normal output) .
Requests that normal output be directed to the given filename. As dis
cussed above, this differs
slightly from interactive output.
-oX filespec (XML output) .
Requests that XML output be directed to the given filename. Nmap incl
udes a document type
definition (DTD) which allows XML parsers to validate Nmap XML output
. While it is primarily
intended for programmatic use, it can also help humans interpret Nmap
XML output. The DTD defines
the legal elements of the format, and often enumerates the attributes
and values they can take on.
The latest version is always available from https://svn.nmap.org/nmap
/docs/nmap.dtd.
XML offers a stable format that is easily parsed by software. Free XM
L parsers are available for
all major computer languages, including C/C++, Perl, Python, and Java
. People have even written
bindings for most of these languages to handle Nmap output and execut
ion specifically. Examples
are Nmap::Scanner[15]. and Nmap::Parser[16]. in Perl CPAN. In almos
t all cases that a
non-trivial application interfaces with Nmap, XML is the preferred fo
rmat.
The XML output references an XSL stylesheet which can be used to form
at the results as HTML. The
easiest way to use this is simply to load the XML output in a web bro
wser such as Firefox or IE.
By default, this will only work on the machine you ran Nmap on (or a
similarly configured one) due
to the hard-coded nmap.xsl filesystem path. Use the --webxml or --sty
lesheet options to create
portable XML files that render as HTML on any web-connected machine.
-oS filespec (ScRipT KIdd|3 oUTpuT) .
Script kiddie output is like interactive output, except that it is po
st-processed to better suit
the l33t HaXXorZ who previously looked down on Nmap due to its consis
tent capitalization and
spelling. Humor impaired people should note that this option is makin
g fun of the script kiddies
before flaming me for supposedly helping them .
-oG filespec (grepable output) .
This output format is covered last because it is deprecated. The XML
output format is far more
powerful, and is nearly as convenient for experienced users. XML is a
standard for which dozens of
excellent parsers are available, while grepable output is my own simp
le hack. XML is extensible to
support new Nmap features as they are released, while I often must om
it those features from
grepable output for lack of a place to put them.
Nevertheless, grepable output is still quite popular. It is a simple
format that lists each host
on one line and can be trivially searched and parsed with standard Un
ix tools such as grep, awk,
cut, sed, diff, and Perl. Even I usually use it for one-off tests don
e at the command line.
Finding all the hosts with the SSH port open or that are running Sola
ris takes only a simple grep
to identify the hosts, piped to an awk or cut command to print the de
sired fields.
Grepable output consists of comments (lines starting with a pound (#)
). and target lines. A
target line includes a combination of six labeled fields, separated b
targets.
Debugging output is useful when a bug is suspected in Nmap, or if you
are simply confused as to
what Nmap is doing and why. As this feature is mostly intended for de
velopers, debug lines aren't
always self-explanatory. You may get something like: Timeout vals: sr
tt: -1 rttvar: -1 to: 1000000
delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000. If you don't un
derstand a line, your only
recourses are to ignore it, look it up in the source code, or request
help from the development
list (nmap-dev).. Some lines are self explanatory, but the messages
become more obscure as the
debug level is increased.
--reason (Host and port state reasons) .
Shows the reason each port is set to a specific state and the reason
each host is up or down. This
option displays the type of the packet that determined a port or host
s state. For example, A RST
packet from a closed port or an echo reply from an alive host. The in
formation Nmap can provide is
determined by the type of scan or ping. The SYN scan and SYN ping (-s
S and -PS) are very detailed,
but the TCP connect scan (-sT) is limited by the implementation of th
e connect system call. This
feature is automatically enabled by the debug option (-d). and the r
esults are stored in XML log
files even if this option is not specified.
--stats-every time (Print periodic timing stats) .
Periodically prints a timing status message after each interval of ti
me. The time is a
specification of the kind described in the section called TIMING AND PER
FORMANCE ; so for
example, use --stats-every 10s to get a status update every 10 second
s. Updates are printed to
interactive output (the screen) and XML output.
--packet-trace (Trace packets and data sent and received) .
Causes Nmap to print a summary of every packet sent or received. This
is often used for debugging,
but is also a valuable way for new users to understand exactly what N
map is doing under the
covers. To avoid printing thousands of lines, you may want to specify
a limited number of ports to
scan, such as -p20-30. If you only care about the goings on of the ve
rsion detection subsystem,
use --version-trace instead. If you only care about script tracing, s
pecify --script-trace. With
--packet-trace, you get all of the above.
--open (Show only open (or possibly open) ports) .
Sometimes you only care about ports you can actually connect to (open
ones), and don't want
results cluttered with closed, filtered, and closed|filtered ports. O
utput customization is
normally done after the scan using tools such as grep, awk, and Perl,
but this feature was added
or such as xsltproc[17]. to
produce an HTML file. Directly opening the XML file in a browser no l
onger works well because
modern browsers limit the locations a stylesheet may be loaded from.
If you wish to use a
different stylesheet, specify it as the argument to --stylesheet. You
must pass the full pathname
or URL. One common invocation is --stylesheet https://nmap.org/svn/do
cs/nmap.xsl. This tells an
XSLT processor to load the latest version of the stylesheet from Nmap
.Org. The --webxml option
does the same thing with less typing and memorization. Loading the XS
L from Nmap.Org makes it
easier to view results on a machine that doesn't have Nmap (and thus
nmap.xsl) installed. So the
URL is often more useful, but the local filesystem location of nmap.x
sl is used by default for
privacy reasons.
--webxml (Load stylesheet from Nmap.Org) .
This is a convenience option, nothing more than an alias for --styles
heet
https://nmap.org/svn/docs/nmap.xsl.
--no-stylesheet (Omit XSL stylesheet declaration from XML) .
Specify this option to prevent Nmap from associating any XSL styleshe
et with its XML output. The
xml-stylesheet directive is omitted.
MISCELLANEOUS OPTIONS
This section describes some important (and not-so-important) options that
don't really fit anywhere
else.
-6 (Enable IPv6 scanning) .
Nmap has IPv6 support for its most popular features. Ping scanning, p
ort scanning, version
detection, and the Nmap Scripting Engine all support IPv6. The comman
d syntax is the same as usual
except that you also add the -6 option. Of course, you must use IPv6
syntax if you specify an
address rather than a hostname. An address might look like 3ffe:7501:
4819:2000:210:f3ff:fe03:14d0,
so hostnames are recommended. The output looks the same as usual, wit
h the IPv6 address on the
line being the only IPv6 giveaway.
interesting ports
While IPv6 hasn't exactly taken the world by storm, it gets significa
nt use in some (usually
Asian) countries and most modern operating systems support it. To use
Nmap with IPv6, both the
source and target of your scan must be configured for IPv6. If your I
SP (like most of them) does
not allocate IPv6 addresses to you, free tunnel brokers are widely av
ailable and work fine with
Nmap. I use the free IPv6 tunnel broker. service at http://www.tunne
lbroker.net. Other tunnel
brokers are listed at Wikipedia[18]. 6to4 tunnels are another popular
, free approach.
keys will print out a status message telling you about the scan. The conv
ention is that lowercase
letters increase the amount of printing, and uppercase letters decrease t
he printing. You may also
press ?
for help.
v / V
Increase / decrease the verbosity level
d / D
Increase / decrease the debugging Level
p / P
Turn on / off packet tracing
?
Print a runtime interaction help screen
Anything else
Print out a status message like this:
Stats: 0:00:07 elapsed; 20 hosts completed (1 up), 1 undergoing S
ervice Scan
Service scan Timing: About 33.33% done; ETC: 20:57 (0:00:12 remai
ning)
EXAMPLES
Here are some Nmap usage examples, from the simple and routine to a littl
e more complex and esoteric.
Some actual IP addresses and domain names are used to make things more co
ncrete. In their place you
should substitute addresses/names from your own network. While I don't th
ink port scanning other
networks is or should be illegal, some network administrators don't appre
ciate unsolicited scanning of
their networks and may complain. Getting permission first is the best app
roach.
For testing purposes, you have permission to scan the host scanme.nmap.or
g.. This permission only
includes scanning via Nmap and not testing exploits or denial of service
attacks. To conserve
bandwidth, please do not initiate more than a dozen scans against that ho
st per day. If this free
scanning target service is abused, it will be taken down and Nmap will re
port Failed to resolve given
hostname/IP: scanme.nmap.org. These permissions also apply to the hosts s
canme2.nmap.org,
scanme3.nmap.org, and so on, though those hosts do not currently exist.
nmap -v scanme.nmap.org.
This option scans all reserved TCP ports on the machine scanme.nmap.org .
The -v option enables
verbose mode.
nmap -sS -O scanme.nmap.org/24.
Launches a stealth SYN scan against each machine that is up out of the 25
6 IPs on the class C sized
Fyodor
Hundreds of people have made valuable contributions to Nmap over the year
s. These are detailed in the
CHANGELOG. file which is distributed with Nmap and also available from
https://nmap.org/changelog.html.
LEGAL NOTICES
Nmap Copyright and Licensing
The Nmap Security Scanner is (C) 1996 2015 Insecure.Com LLC. Nmap is also a r
egistered trademark of
Insecure.Com LLC. This program is free software; you may redistribute and
/or modify it under the terms
of the GNU General Public License as published by the Free Software Found
ation; Version 2 ( GPL ), BUT
ONLY WITH ALL OF THE CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This
guarantees your right to
use, modify, and redistribute this software under certain conditions. If
you wish to embed Nmap
technology into proprietary software, we sell alternative licenses (conta
ct <sales@nmap.com>). Dozens
of software vendors already license Nmap technology such as host discover
y, port scanning, OS
detection, version detection, and the Nmap Scripting Engine.
Note that the GPL places important restrictions on derivative
s not provide a
detailed definition of that term. To avoid misunderstandings, we
t that term as broadly as
copyright law allows. For example, we consider an application to
te a derivative work for the
purpose of this license if it does any of the following with any
or content covered by this
license ( Covered Software ):
works , yet it do
interpre
constitu
software
ve.
http://www.rfc-editor.org/rfc/rfc791.txt
14. RFC 2960
http://www.rfc-editor.org/rfc/rfc2960.txt
15. Nmap::Scanner
http://sourceforge.net/projects/nmap-scanner/
16. Nmap::Parser
http://nmapparser.wordpress.com/
17. xsltproc
http://xmlsoft.org/XSLT/
18. listed at Wikipedia
http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers
19. Creative Commons Attribution License
http://creativecommons.org/licenses/by/3.0/
20. Apache Software Foundation
http://www.apache.org
21. Libpcap portable packet capture library
http://www.tcpdump.org
22. WinPcap library
http://www.winpcap.org
23. PCRE library
http://www.pcre.org
24. Libdnet
http://libdnet.sourceforge.net
25. OpenSSL cryptography toolkit
http://www.openssl.org
26. Lua programming language
http://www.lua.org
27. Liblinear linear classification library
http://www.csie.ntu.edu.tw/~cjlin/liblinear/
28. IPv6 OS detection machine learning techniques
https://nmap.org/book/osdetect-guess.html#osdetect-guess-ipv6
29. Google Summer of Code
https://nmap.org/soc/
30. DARPA CINDER program
https://www.fbo.gov/index?s=opportunity&mode=form&id=585e02a51f77af5c
b3c9e06b9cc82c48&tab=core&_cview=1
31. Export Administration Regulations (EAR)
http://www.access.gpo.gov/bis/ear/ear_data.html
32. 5D002
http://www.access.gpo.gov/bis/ear/pdf/ccl5-pt2.pdf
12/09/2015
NMAP(1)