Subject: CVS commit: pkgsrc/net/nmap
To: None <>
From: Lubomir Sedlacik <>
List: pkgsrc-changes
Date: 09/20/2003 14:15:31
Module Name:	pkgsrc
Committed By:	salo
Date:		Sat Sep 20 14:15:30 UTC 2003

Modified Files:
	pkgsrc/net/nmap: Makefile PLIST distinfo
	pkgsrc/net/nmap/patches: patch-aa patch-ab patch-ad
Added Files:
	pkgsrc/net/nmap/patches: patch-ae

Log Message:
Update to version 3.45.

Also closes PR pkg/22845 by Adrian Portelli.


- Added new HTTPOptions and RTSPRequest probes suggested by MadHat

- Integrated more service signatures from MadHat
  (madhat(a), Brian Hatch (bri(a), Niels
  Heinen (zillion(a), Solar Designer
  (solar(a), Seth Master
  (smaster(a), and Curt Wilson

- Applied a patch from Solar Eclipse (solareclipse(a)
  which increases the allowed size of the 'extrainfo' version field from
  80 characters to 128.  The main benefit is to allow longer apache module
  version strings.

- Fixed Windows compilation.

- Applied some updates to README-WIN32 sent in by Kirby Kuehl
  (kkuehl(a)  He improved the list of suggested registry
  changes and also fixed a typo or two.  He also attached a .reg file
  automate the Nmap connect() scan performance enhancing registry
  changes.  I am now including that with the Nmap Windows binary .zip
  distribution (and in mswin32/ of the source distro).

- Applied a one-line patch from Dmitry V. Levin (
  which fixes a test Nmap does during compilation to see if an existing
  libpcap installation is recent enough.

- Wrote and posted a new paper on version scanning to .  Updated
  nmap-service-probes and the Nmap man page to simply refer to this

- Integrated more service signatures from my own scanning as well as
  contributions from Brian Hatch (bri(a), MadHat
  (madhat(a), Max Vision (vision(a), HD
  Moore (hdm(a), Seth Master
  (smaster(a), and Niels Heinen (zillion(a)
  MadHat also contributed a new probe for Windows Media Service.  Many
  people set a LOT of signatures, which has allowed
  nmap-service-probes to grow from 295 to 356 signatures representing
  85 service protocols!

- Applied a patch (with slight changes) from Brian Hatch
  (bri(a) which enables caching of SSL sessions so that
  negotiation doesn't have to be repeated when Nmap reconnects to the same
  between probes.

- Applied a patch from Brian Hatch ( which optimizes the
  requested SSL ciphers for speed rather than security.  The list was
  based on empirical evidence from substantial benchmarking he did with
  tests that resemble nmap-service-scanning.

- Updated the Nmap man page to discuss the new version scanning
  options (-sV, -A).

- I now include nmap-version/aclocal.m4 in the distribution as this is
  required to rebuild the configure script ( thanks to Dmitry V. Levin
  (ldv(a) for notifying me of the problem.

- Applied a patch from Dmitry V. Levin (ldv(a) which
  detects whether the PCRE include file is <pcre.h> or <pcre

- Applied a patch from Dmitry V. Levin (ldv(a) which
  fixes typos in some error messages.  The patch apparently came from
  the highly-secure and stable Owl and Alt Linux distributions.  Check
  them out at and

- Fixed compilation on Mac OS X - thanks to Brian Hatch
  (bri(a)> and Ryan Lowe (rlowe(a) for giving me
  access to Mac OS X boxes.

- Stripped down libpcre build system to remove libtool dependency and
  other cruft that Nmap doesn't need. (this was mostly a response to
  libtool-related issues on Mac OS X).

- Added a new --version_trace option which causes Nmap to print out extensive
  debugging info about what version scanning is doing (this is a subset
  of what you would get with --packet_trace).  You should usually use
  this in combination with at least one -d option.

- Fixed a port number printing bug that would cause Nmap service
  fingerprints to give a negative port number when the actual port was
  above 32K.  Thanks to Seth Master ( for finding

- Updated all the header text again to clarify our interpretation of
  "derived works" after some suggestions from Brian Hatch

- Updated the Nsock config.sub/config.guess to the same newer versions
  that Nmap uses (for Mac OS X compilation).

- Fixed a compilation problem on systems w/o OpenSSL that was
  discovered by Solar Designer.  I also fixed some compilation
  problems on non-IPv6 systems.  It now compiles and runs on my
  Solaris and ancient OpenBSD systems.

- Integrated more services thanks to submissions from Niels Heinen

- Canonicalized the headers at the top of each Nmap/Nsock header src
  file.  This included clarifying our interpretation of derived works,
  updating the copyright date to 2003, making the header a bit wider,
  and a few other light changes.  I've been putting this off for a
  while, because it required editing about a hundred !#$# files!

- Fixed a major bug in the Nsock time caching system.  This could
  cause service detection to inexplicably fail against certain ports in
  the second or later machines scanned.  Thanks to Solar Designer and HD
  Moore for helping me track this down.

- Fixed some *BSD compilation bugs found by
  Zillion (zillion(a)

- Integrated more services thanks to submissions from Fyodor Yarochkin
  (fygrave(a), and Niels Heinen
  (zillion(a), and some of my own exploring.  There are
  now 295 signatures.

- Fixed a compilation bug found by Solar Designer on machines that
  don't have struct sockaddr_storage.  Nsock now just uses "struct
  sockaddr *" like connect() does.

- Fixed a bug found by Solar Designer which would cause the Nmap
  portscan table to be truncated in -oN output files if the results are
  very long.

- Changed a bunch of large stack arrays (e.g. int portlookup[65536])
  into dynamically allocated heap pointers.  The large stack variables
  apparently caused problems on some architectures.  This issue was
  reported by osamah abuoun (osamah_abuoun(a)

- Added IPv6 support for service scan.

- Added an 'sslports' directive to nmap-service-probes.  This tells
  Nmap which service checks to try first for SSL-wrapped ports.  The
  syntax is the same as the normal 'ports' directive for non-ssl ports.
  For example, the HTTP probe has an 'sslports 443' line and
  SMTP-detecting probes have and 'sslports 465' line.

- Integrated more services thanks to submissions from MadHat
  (madhat(a), Solar Designer (solar(a), Dug
  Song (dugsong(a), pope(a), and Brian Hatch
  (bri(a)  There are now 288 signatures, matching these 65
  service protocols:
    chargen cvspserver daytime domain echo exec finger font-service
    ftp ftp-proxy http http-proxy hylafax ident ident imap imaps ipp
    ircbot ircd irc-proxy issrealsecure landesk-rc ldap meetingmaker
    microsoft-ds msrpc mud mysql ncacn_http ncp netbios-ns netbios-ssn
    netsaint netwareip nntp nsclient oracle-tns pcanywheredata pop3
    pop3s postgres printer qotd redcarpet rlogind rpc rsync rtsp shell
    smtp snpp spamd ssc-agent ssh ssl telnet time upnp uucp vnc
    vnc-http webster whois winshell X11

- Added a Lotus Notes probe from Fyodor Yarochkin

- Dug Song wins the "award" for most obscure service fingerprint
  submission.  Nmap now detects Dave Curry's Webster dictionary server
  from 1986 :).

- Service fingerprints now include a 'T=SSL' attribute when SSL
  tunneling was used.

- More portability enhancements thanks to Solar Designer and his Linux
  2.0 libc5 boxes.

- Applied a patch from Gisle Vanem (giva(a) which improves
  Windows emulation of the UNIX mmap() and munmap() memory mapping calls.

- Added SSL-scan-through support.  If service detection finds a port to be
  SSL, it will transparently connect to the port using OpenSSL and use
  version detection to determine what service lies beneath.  This
  feature is only enabled if OpenSSL is available at build time.  A
  new --with-openssl=DIR configure option is available if OpenSSL is
  not in your default compiler paths.  You can use --without-openssl
  to disable this functionality.  Thanks to Brian Hatch
  (bri(a) for sample code and other assistance.  Make sure
  you use a version without known exploitable overflows.  In
  particular, versions up to and including OpenSSL 0.9.6d and
  0.9.7-beta2 contained serious vulnerabilities described at .  Note that these
  vulnerabilities are well over a year old at the time of this

- Integrated many more services thanks to submissions from Brian
  Hatch, HellNBack ( hellnbak(a) ), MadHat, Solar Designer,
  Simple Nomad, and Shawn Wallis (swallis(a)  The number of
  signatures has grown from 242 to 271.  Thanks!

- Integrated Novell Netware NCP and MS Terminal Server probes from
  Simple Nomad (thegnome(a)

- Fixed a segfault found by Solar Designer that could occur when
  scanning certain "evil" services.

- Fixed a problem reported by Solar Designer and MadHat (
  madhat(a) ) where Nmap would bail when certain Apache
  version/info responses were particularly long.  It could happen in
  other cases as well.  Now Nmap just prints a warning.

- Fixed some portability issues reported by Solar Designer
  ( solar(a) )

- I added probes for SSL (session startup request) and microsoft-ds
  (SMB Negotiate Protocol request).

- I changed the default read timeout for a service probe from 7.5s to 5s.

- Fixed a one-character bug that broke many scans when -sV was NOT
  given.  Thanks to Blue Boar (BlueBoar(a) for the report.

- Integrated many more services thanks to submissions from Simple
  Nomad, Solar Designer, jerickson(a), Curt Wilson, and
  Marco Ivaldi.  Thanks!  The match line count has risen from 201 to 242.

- Implemented a service classification scheme to separate the
  vendor/product name from the version number and any extra info that
  is provided.  Instead of v/[big version string]/, the new match
  lines include v/[vendor/productname]/[version]/[extrainfo]/ .  See
  the docs at the top of nmap-service-probes for more info.  This
  doesn't change the normal output (which lumps them together anyway),
  but they are separate in the XML so that higher-level programs can
  easily match against just a product name.  Here are a few examples
  of the improved service element:
  <service name="ssh" product="OpenSSH" version="3.1p1"
     extrainfo="protocol 1.99" method="probed" conf="10" />
  <service name="domain" product="ISC Bind" version="9.2.1"
     method="probed" conf="10" />
  <state state="open" /><service name="rpcbind" version="2"
     extrainfo="rpc #100000" method="probed" conf="10" />
  <service name="rndc" method="table" conf="3" />

- I went through nmap-service-probes and added the vendor name to more
  entries.  I also added the service name where the product name
  itself didn't make that completely obvious.

- SCO Corporation of Lindon, Utah (formerly Caldera) has lately taken
  to an extortion campaign of demanding license fees from Linux users
  for code that they themselves knowingly distributed under the terms
  of the GNU GPL.  They have also refused to accept the GPL, claiming
  that some preposterous theory of theirs makes it invalid.  Meanwhile
  they have distributed GPL-licensed Nmap in (at least) their
  "Supplemental Open Source CD".  In response to these blatant
  violations, and in accordance with section 4 of the GPL, we hereby
  terminate SCO's rights to redistribute any versions of Nmap in any
  of their products, including (without limitation) OpenLinux,
  Skunkware, OpenServer, and UNIXWare.

- Added "soft matches".  These are similar to normal match lines in
  that they provide a regex for recognizing a service (but no version).
  But instead of stopping at softmatch service recognition, the scan
  continues looking for more info.  It only launches probes that are
  known-capable of matching the softmatched service.  If no version
  number is found, at least the determined service is printed.  A
  service print for submission is also provided in that case.  So this
  provides more informative results and improves efficiency.

- Cleaned up the Windows support a bit and did more testing and
  fixing.  Windows service detection seems to be working fine for me
  now, although my testing is still pretty limited.  This release
  includes a Windows binary distribution and the README-WIN32 has been
  updated to reflect new compilation instructions.

- More service fingerprints!  Thanks to Solar Designer, Max Vision,
  Frank Denis (Jedi/Sector One) for the submissions.  I also added a
  bunch from my own testing. The number of match lines went from 179
  to 201.

- Updated XML output to handle new version and service detection
  information.  Here are a few examples of the new output:
  <port protocol="tcp" portid="22"><state state="open" /><service
    name="ssh" version="OpenSSH 3.1p1 (protocol 1.99)" method="probed"
    conf="10" /></port>
  <port protocol="tcp" portid="111"><state state="open" /><service
    name="rpcbind" version="2 (rpc #100000)" method="probed" conf="10" /></port>
  <port protocol="tcp" portid="953"><state state="open" /><service
    name="rndc" method="table" conf="3" /></port>

- Fixed issue where Nmap would quit when ECONNREFUSED was returned
  when we try to read from an already-connected TCP socket.  FreeBSD
  does this for some reason instead of giving ECONNRESET.  Thanks to
  Will Saxon (WillS(a) for the report.

- Removed the SERVICEMATCH_STATIC match type from
  nmap-service-probes.  There wasn't much benefit of this over regular
  expressions, so it isn't worth maintaining the extra code.

- Added/fixed numerous service fingerprints thanks to submissions from
  Max Vision, MadHat, Seth Master.  Match lines went
  from 164 to 179.

- The Winpcap libraries used in the Windows build process have been
  upgraded to version 3.0.

- Most of the Windows port is complete.  It compiles and service scan
  works (I didn't test very deeply) on my WinXP box with VS.Net 2003.
  I try to work out remaining kinks and do some cleanup for the next
  version.  The Windows code was restructured and improved quite a bit,
  but much more work remains to be done in that area.  I'll probably
  do a Windows binary .zip release of the next version.

- Various minor fixes

- Service scan is now OFF by default.  You can activate it with -sV.
  Or use the snazzy new -A (for "All recommended features" or
  "Aggressive") option which turns on both OS detection and service

- Fixed compilation on my ancient OpenBSD 2.3 machine (a Pentium 60 :)

- Added/fixed numerous service fingerprints thanks to submissions from
  Brian Hatch, HD Moore, Anand R., and some of my own testing.  The
  number of match lines in this version grows from 137 to 164!  Please
  keep 'em coming!

- Various important and not-so-important fixes for bugs I encountered
  while test scanning.

- The RPC grinder no longer prints a startup message if it has no
  RPC-detected ports to scan.

- Some of the service fingerprint length limitations are relaxed a bit
  if you enable debugging (-d).

- Added a whole bunch of services submitted by Brian Hatch
  (bri(a)  I also added a few Windows-related probes.
  Nmap-service-probes has gone from 101 match strings to 137.  Please
  keep the submissions coming.

- The question mark now only appears for ports in the OPEN state and
  when service detection was requested.

- I now print a separator bar between service fingerprints when Nmap
  prints more than one for a given host so that users understand to
  submit them individually (suggested by Brian Hatch (bri(a)

- Fixed a bug that would cause Nmap to print "empty" service
  fingerprints consisting of just a semi-colon.  Thanks to Brian Hatch
  (bri(a) for reporting this.

- Banner-scanned hundreds of thousands of machines for ports
  21,23,25,110,3306 to collect default banners.  Where the banner made
  the service name/version obvious, I integrated them into
  nmap-service-probes.  This increased the number of 'match' lines from
  27 to more than 100.

- Created the service fingerprint submission page at

- Changed the service fingerprint format slightly for easier
  processing by scripts.

- Applied a large portability patch from Albert Chin-A-Young
  (china(a)  This cleans up a number of things,
  particularly for IRIX, Tru64, and Solaris.

- Applied NmapFE patch from Peter Marschall (peter(a) which
  "makes sure changes in the relay host and scanned port entry fields
  are displayed immediately, and also keeps the fields editable after
  de- and reactivating them."

- Limited the size of service fingerprints to roughly 1024 bytes.
  This was suggested by Niels Heinen (niels(a), because the previous
  limit was excessive.  The number of fingerprints printed is also now
  limited to 10.

- Fixed a segmentation fault that could occur when ping-scanning large

- Fixed service scan to gracefully handle host_timeout occurrences when
  they happen during a service scan.

- Fixed a service_scan bug that would cause an error when hosts send
  data and then close() during the NULL probe (when we haven't sent

- Applied a patch from Solar Designer (solar(a) which
  corrects some errors in the Russian man page translation and also a
  couple typos in the regular man page.  Then I spell-checked the man
  page to reduce future instances of foreigners sending in diffs to
  correct my English :).

- Nmap now prints a "service fingerprint" for services that it is
  unable to match despite returning data.  The web submission page it
  references is not yet available.

- Service detection now does RPC grinding on ports it detects to be
  running RPC.

- Fixed a bug that would cause Nmap to quit with an Nsock error when
  --host_timeout was used (or when -T5 was used, which sets it

- Fixed a bug that would cause Nmap to fail to print the OS
  fingerprint in certain cases.  Thanks to Ste Jones
  (root(a) for the problem report.

- Nmap now has a simple VERSION detection scheme.  The 'match' lines in
  nmap-service-probes can specify a template version string
  (referencing subexpression matches from the regex in a perl-like
  manner) so that the version is determined at the same time as the
  service.  This handles many common services in a highly efficient
  manner.  A more complex form of version detection (that initiates
  further communication w/the target service) may be necessary
  eventually to handle services that aren't as forthcoming with
  version details.

- The Nmap port state table now wastes less whitespace due to using a new
  and stingy NmapOutputTable class.  This makes it easier to read, and
  also leaves more room for version info and possibly other enhancements.

- Added 's' option to match lines in nmap-service-probes.  Just as
  with the perl 's' option, this one causes '.' in the regular
  expression to match any character INCLUDING newline.

- The WinPcap header timestamp is no longer used on Windows as it
  sometimes can be a couple seconds different than gettimeofday() (which
  is really _ftime() on Windows) for some reason.  Thanks to Scott
  Egbert (scott.egbert(a) for the report.

- Applied a patch by Matt Selsky (selsky(a) which fixes in such a way that the annoying header file "present but
  cannot be compiled" warning for Solaris.

- Applied another patch from Matt that (we hope) fixes the "present
  but cannot be compiled" warning -- this time for Mac OS X.

- Port table header names are now capitalized ("SERVICE", "PORT", etc)

- Initial implementation of service detection.  Nmap will now probe
  ports to determine what is listening, rather than guessing based on
  the nmap-services table lookup.  This can be very useful for
  services on unidentified ports and for UDP services where it is not
  always clear (without these probes) whether the port is really open
  or just firewalled.  It is also handy for when services are run on
  the well-known-port of another protocol -- this is happening more
  and more as users try to circumvent increasingly strict firewall

- Nmap now uses the excellent libpcre (Perl Compatible Regular
  Expressions) library from .  Many systems
  already have this, otherwise Nmap will use the copy it now includes.
  If your libpcre is hidden away in some nonstandard place, give
  ./configure the new --with-libpcre=DIR directive.

- Nmap now uses the C++ Standard Template Library (STL).  This makes
  programming easier, but if it causes major portability or bloat
  problems, I'll reluctantly remove it.

- Applied a patch from Javier Kohen (jkohen(a) which
  normalizes the names of many Microsoft entries in the
  nmap-os-fingerprints file.

- Applied a patch by Florin Andrei (florin(a) to the Nmap RPM
  spec file.  This uses the 'Epoch' flag to prevent the Redhat Network
  tool from marking my RPMs as "obsolete" and "upgrading" to earlier
  Redhat-built versions.  A compilation flag problem is also fixed.

To generate a diff of this commit:
cvs rdiff -r1.27 -r1.28 pkgsrc/net/nmap/Makefile
cvs rdiff -r1.2 -r1.3 pkgsrc/net/nmap/PLIST
cvs rdiff -r1.12 -r1.13 pkgsrc/net/nmap/distinfo
cvs rdiff -r1.9 -r1.10 pkgsrc/net/nmap/patches/patch-aa
cvs rdiff -r1.6 -r1.7 pkgsrc/net/nmap/patches/patch-ab
cvs rdiff -r1.5 -r1.6 pkgsrc/net/nmap/patches/patch-ad
cvs rdiff -r0 -r1.5 pkgsrc/net/nmap/patches/patch-ae

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.