1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-09 06:01:28 +00:00
Commit Graph

105 Commits

Author SHA1 Message Date
fyodor
684f42c4ad One more adjustment to the license text. Notes that Zenmap, Ncat, and Nping use this license. Note that contributions made directly in the src repository are treated the same as those in the mailing list. 2012-03-01 06:53:35 +00:00
fyodor
e96a7b7b24 Update the headers for each code file. This updates code copyright dates to 2012, notes the awesome NSE in the list of technology, and slightly rewords the derivative works clarification 2012-03-01 06:32:23 +00:00
david
b6c5004c3b Remove accidental duplicate struct_ip definitions. 2011-09-21 07:48:11 +00:00
david
fee764a5d8 Use a special struct_ip.h to include <netinet/ip.h> and accoutrements.
The comment in struct_ip.h explains the reasoning for this. The AIX C library
uses #defines that change the names of members of struct ip, and conflict with
some existing code. (Notably struct ip_hdr in libdnet and IPv4Header::h in
libnetutil.) We can still use the AIX files if we include <netinet/ip.h> after
this other code has been preprocessed. That's hard to enforce when
<netinet/ip.h> is included from another header file; this new file allows
including it always late, and only where needed.
2011-09-21 07:31:38 +00:00
david
f41753c4e9 Add a sockaddr dst argument to send_ip function that use raw sockets.
Heretofore we have always extracted teh destination address directly
from the packet contents. But the raw packet bytes do not contain enough
information in one case: IPv6 link-local addresses. For those we really
need the scope ID, and for that we must pass this information all the
way down.

Before this, I got "no route to host" on OS link-local addresses. I
think that it was working on Linux only on accident, by the OS picking a
default interface or something.
2011-09-19 16:13:35 +00:00
david
f56c0d0f77 Make dummy struct operator() const.
Solves a compile error with Visual C++ 2008.
2011-07-25 23:31:17 +00:00
shinnok
3240e10bb0 Fix MSVC compiler noreturn related warnings and add extra
safety asserts to the functions that do not return on all
control paths.
2011-06-23 23:59:52 +00:00
david
381bb03d70 Rename readip_pcap -> readipv4_pcap and readip46_pcap to readip_pcap.
We should have the multiprotocol version be the main version, with
IPv4-only code being a noted exception. Also these functions are almost
the same so one can call the other.
2011-06-08 23:46:21 +00:00
david
41e3e105be Comment typo. 2011-06-08 20:19:13 +00:00
david
4aa4a154f9 Merge from /nmap-exp/david/nmap-ipv6.
This is raw IPv6 packet support for most port and ping scans, Neighbor
Discovery, and traceroute.
2011-06-08 01:24:48 +00:00
david
a2e58b4875 Use sockaddr_storage_equal in place of sockaddr_storage_cmp where
appropriate.
2011-05-07 00:50:54 +00:00
fyodor
86e59a8c4e Update copyright statements from 2010 to 2011 2011-01-21 00:04:16 +00:00
david
7653cf7d4a Move COPYING.OpenSSL to OpenSSL.txt, update copyright notices to match. 2010-10-30 03:01:50 +00:00
batrick
0f8dcc1766 typo 2010-09-10 21:45:44 +00:00
david
7cf99e1e4e Use a std::vector<bool> instead of std::bitset in traceroute.cc. bitset isn't
available on Android.
2010-08-15 03:40:54 +00:00
luis
da126c8b78 Merged nmap-dedup branch from nmap-exp/luis/nmap-dedup. This completes the Nmap/Nping code de-duplication phase. 2010-06-22 17:24:34 +00:00
fyodor
1aecac420f Update copyright year from 2009 to 2010 2010-05-03 21:20:25 +00:00
david
2684b78ce5 In traceroute, separate the directly connected targets from the rest
before starting. There is a special function that does a trace of
directly connected targets without sending any packets, just by filling
in one hop directly to the target. The traceroute code was only checking
whether the first target in the group was directly connected, and if it
was, it assumed all of them were. Now it filters the list into two and
calls traceroute_direct on one and traceroute_remote on the other.
Fyodor discovered this problem today.
2010-03-23 23:30:36 +00:00
david
f21a07cfde Revert r16464. 2010-01-15 03:55:23 +00:00
david
c73b250615 Factor out a function that reports the failure to open an Ethernet
device and exits. On Windows, print a hint about "net start npf" to
start the NPF service.
2010-01-15 00:37:39 +00:00
david
9b468484c2 o Fixed a bug in traceroute that could lead to a crash:
terminate called after throwing an instance of 'std::out_of_range'
      what():  bitset::test
  It happened when the preliminary distance guess for a target was
  greater than 30, the size of an internal data structure. David and
  Brandon tracked down the problem.
2010-01-14 01:07:49 +00:00
david
5c2eb72454 Allow traceroute to affect host timing stats. 2009-11-16 08:46:11 +00:00
david
31d2c497fa Give Probe a virtual destructor because it is deleted through pointers
that point to instances of subclasses (TCPProbe etc.).
2009-09-27 18:29:20 +00:00
david
67ab4c0208 Fix the initialization of sockaddr_in structures in traceroute name
resolution. The initialization
    struct sockaddr_in sin = { AF_INET };
didn't set sin.sin_family correctly, leading to a later assertion
failure:
Failed to convert target address to presentation format!?! Error: Address family not supported by protocol family
2009-09-27 18:08:42 +00:00
david
8fd7a0a46b Always begin with a TTL of at least 1 in traceroute, even if OS
detection calculated 0 (erroneous if not localhost). This caused an
assertion failure reported by Chris Clements in
http://seclists.org/nmap-dev/2009/q3/1054.html.
2009-09-27 18:05:16 +00:00
david
275a346804 Add a BPF filter to traceroute so we only get packets sent to our own
source address; i.e., not the packets we send.
2009-09-17 22:50:09 +00:00
david
06cc9ad4d1 Add a special-case no-probe traceroute for directly connected targets. 2009-09-17 15:03:13 +00:00
david
875dcddd2c Merge r15496:15502 from /nmap-exp/david/nmap-traceroute. These are some
minor traceroute performance optimizations.
2009-09-17 02:22:15 +00:00
david
577a1be0e7 Merge from svn://svn.insecure.org/nmap-exp/david/nmap-traceroute. This
brings in a new, faster, parallel version of traceroute.
2009-09-17 00:03:46 +00:00
david
45533e5972 Don't dereference a null pointer when printing out a traceroute error
message. The dereferencing could not actually happen because it would
only happen with a trace of zero hops with no probes sent, and in that
case we skip the traceroute entirely. Patch by Ankur Nandwani.
2009-09-07 22:04:10 +00:00
david
d254c85b42 Fix XML traceroute output. I accidentally left in one part of the old
stateful TraceProbes design, which was otherwise removed in r15197.
2009-08-26 23:49:20 +00:00
david
4c6bafb3fa o There is a new OS detection pseudo-test, SCAN.DC, which records how
the network distance in SCAN.DS was calculated. Its value can be "L"
  for localhost, "D" for a direct connection, "I" for an ICMP TTL
  calculation, and "T" for a traceroute hop count. This is mainly for
  the benefit of OS integration, when it is sometimes important to
  distinguish between DS=1%DC=I (probably the result of forged TTLs)
  and DS=1%DC=D (a true one-hop connection.) [David]
2009-08-23 23:58:28 +00:00
david
b64134be14 Make the TraceGroup::consolidateHops method const. 2009-08-21 01:06:49 +00:00
david
a4ea6d2f7c The previous method of calculating the true hop distance from traceroute
was incorrect; the hopDistance member can be much higher than the actual
number of hops recorded. It was 33 when the real distance was 17.
Instead, enumerate and count all the probes that got a response.
2009-08-21 01:05:41 +00:00
david
5d29abaf05 Change a confusing design in traceroute. The TraceProbes map is a
mapping from source port number to probes. Upon output, the map was
transformed in place to a map of TTL values to probes. Operations that
worked before output wouldn't work after output and vice versa. Now the
TTL-to-probe map is kept separate in a local variable.
2009-08-21 01:01:34 +00:00
david
5c1168c024 After a successful traceroute, set the distance to the host in question
so it appears in OS fingerprints.
2009-08-20 20:57:35 +00:00
david
0ffa072a6b Fix an off-by-one error in traceroute consolidation. In debugging mode,
the list of consolidated hops (the ones that match the reference trace)
was printed out one hop further than it should have been. So if a trace
diverged from the reference trace at the sixth hop, it would print out
the first six hops of the reference trace when it should have done only
five. This extra row, as well as being incorrect, could cause an
assertion failure by making the output table one row bigger than its
preallocated capacity.
2009-08-20 19:52:17 +00:00
david
c3b5c08941 Temporarily increase the size of the traceroute output table by 1 until
I can find the bug that causes too many rows to be printed in debugging
mode in some cases. I get an assertion failure when running
	nmap scanme.nmap.org/26 --top-ports 10 --traceroute -n -d
With this change, the bug manifests itself as some peculiar output:

4   --        66.54.149.185
5   --        63.211.250.17
5   39.17 ms  63.211.250.17
6   47.12 ms  4.68.107.190
7   39.72 ms  4.69.132.37

(Note the doubled 5 with the same IP address.)

10  --        207.88.13.122
11  --        207.88.12.46
12  --        207.88.12.61
13  --        65.106.1.57
13  100.77 ms 65.106.1.65
14  91.75 ms  65.106.5.162

(Note the doubled 13 with a different IP address.)

4   --       66.54.149.185
5   --       63.211.250.17
5   ...
6   39.32 ms 4.68.107.190

(Note the doubled 5 with a timeout.)
2009-08-20 18:22:31 +00:00
david
9cff9beb20 Remove the G_ALIVE_TTL traceroute probe state. It was mostly synonymous
with G_DEAD_TTL. I couldn't figure out that the difference was supposed
to be.
2009-08-19 23:07:43 +00:00
david
86b0100dc3 Fix a bug I just introduced in tracerotue.cc: I moved a loop
initialization into the loop header but messed it up so the loop
variable wasn't initialized.
2009-08-19 21:57:58 +00:00
david
c6be484bdf Some more whitespace fixes in traceroute.cc. 2009-08-19 21:37:43 +00:00
david
295b4142e9 Use the dnet.h defiens for ICMP types and codes instead of having ad-hoc
defines in traceroute.h.
2009-08-19 21:26:53 +00:00
david
5371550a75 Move some functions from traceroute.h into traceroute.cc so they can be
easily referenced while looking at the code that uses them.
2009-08-19 21:04:40 +00:00
david
43acb0eab8 Normalize whitespace in traceroute.cc. 2009-08-19 20:14:54 +00:00
david
1a3b7c1360 Bail out of traceroute if the initial TTL guess probe is not responded
to. Currently continuing from there leads to pathological behavior where
every hop up to 50 is tried, taking a very long time.
2009-08-06 18:47:10 +00:00
david
960e60c89a Use sizeof to get buffer sizes for Snprintf in traceroute.cc instead of
using magic constants.
2009-08-06 18:02:25 +00:00
david
fc061a79ba Add " ms" to the times in the RTT column in traceroute output. 2009-08-06 17:58:55 +00:00
david
8c9b905682 Fix o.current_scantype management for traceroute. If you were scanning
only one host it used to be unset, so the ScanProgressMeter would say
"Host Discovery" or something rather than "Traceroute".
2009-07-29 16:20:07 +00:00
david
47bbcc165f Use ICMP echo for traceroute if no other responsive probe is known. This
can happen with -PN against a filtered host or with -PN -sP against any
host.

This works as expected when the remote host actually responds to the
ping probes, but takes a long time when the remote host ignores it. Take
this for example:

nmap -PN -sP --traceroute www.microsoft.com -n
TRACEROUTE (using proto 1/icmp)
HOP RTT   ADDRESS
1   0.77  192.168.0.1
2   38.76 206.81.73.81
3   38.65 206.81.73.82
4   39.28 66.54.149.185
5   39.73 63.211.250.17
6   39.15 4.68.107.190
7   40.05 4.69.132.37
8   59.33 4.69.132.106
9   54.55 4.69.145.208
10  ...
11  ...
    [Lots more lines]
49  ...
50  ...
! maximum TTL reached (50)
Nmap done: 1 IP address (1 host up) scanned in 2201.79 seconds

The traceroute can't stop, as it normally does, when it gets a response
from the target because no such response is forthcoming. So it keeps
going until it hits its own limit. The same trace against www.google.com
takes only about 30 seconds.
2009-07-29 16:06:03 +00:00
david
f39df29350 Update an obsolete traceroute comment and fix some indentation. 2009-07-29 01:29:55 +00:00