mirror of
https://github.com/nmap/nmap.git
synced 2026-02-09 15:06:35 +00:00
o Added initial SCTP port scanning support to Nmap. SCTP is
a layer 4 protocol used mostly for telephony related applications.
This brings the following new features:
o SCTP INIT chunk port scan (-sY): open ports return an INIT-ACK
chunk, closed ones an ABORT chunk. This is the SCTP equivalent
of a TCP SYN stealth scan.
o SCTP COOKIE-ECHO chunk port scan (-sZ): open ports are silent,
closed ports return an ABORT chunk.
o SCTP INIT chunk ping probes (-PY): host discovery using SCTP
INIT chunk packets.
o SCTP-specific IP protocol scan (-sO -p sctp).
o SCTP-specific traceroute support (--traceroute).
o The ability to use the deprecated Adler32 algorithm as specified
in RFC 2960 instead of CRC32C from RFC 4960 (--adler32).
o 42 well-known SCTP ports were added to the nmap-services file.
Part of the work on SCTP support was kindly sponsored by
Compass Security AG, Switzerland. [Daniel Roethlisberger]
This commit is contained in:
@@ -98,6 +98,7 @@
|
||||
#include "nsock.h"
|
||||
#include "Target.h"
|
||||
#include "utils.h"
|
||||
#include "protocols.h"
|
||||
|
||||
#include "nmap_tty.h"
|
||||
|
||||
@@ -1244,6 +1245,9 @@ int AllProbes::isExcluded(unsigned short port, int proto) {
|
||||
} else if (proto == IPPROTO_UDP) {
|
||||
p = excludedports.udp_ports;
|
||||
count = excludedports.udp_count;
|
||||
} else if (proto == IPPROTO_SCTP) {
|
||||
p = excludedports.sctp_ports;
|
||||
count = excludedports.sctp_count;
|
||||
} else {
|
||||
fatal("Bad proto number (%d) specified in %s", proto, __func__);
|
||||
}
|
||||
@@ -1630,7 +1634,7 @@ ServiceGroup::ServiceGroup(vector<Target *> &Targets, AllProbes *AP) {
|
||||
num_hosts_timedout++;
|
||||
continue;
|
||||
}
|
||||
while((nxtport = Targets[targetno]->ports.nextPort(nxtport, TCPANDUDP, PORT_OPEN))) {
|
||||
while((nxtport = Targets[targetno]->ports.nextPort(nxtport, TCPANDUDPANDSCTP, PORT_OPEN))) {
|
||||
svc = new ServiceNFO(AP);
|
||||
svc->target = Targets[targetno];
|
||||
svc->portno = nxtport->portno;
|
||||
@@ -1648,7 +1652,7 @@ ServiceGroup::ServiceGroup(vector<Target *> &Targets, AllProbes *AP) {
|
||||
if (Targets[targetno]->timedOut(&now)) {
|
||||
continue;
|
||||
}
|
||||
while((nxtport = Targets[targetno]->ports.nextPort(nxtport, TCPANDUDP, PORT_OPENFILTERED))) {
|
||||
while((nxtport = Targets[targetno]->ports.nextPort(nxtport, TCPANDUDPANDSCTP, PORT_OPENFILTERED))) {
|
||||
svc = new ServiceNFO(AP);
|
||||
svc->target = Targets[targetno];
|
||||
svc->portno = nxtport->portno;
|
||||
@@ -2350,7 +2354,8 @@ static void remove_excluded_ports(AllProbes *AP, ServiceGroup *SG) {
|
||||
svc = *i;
|
||||
if (AP->isExcluded(svc->portno, svc->proto)) {
|
||||
|
||||
if (o.debugging) log_write(LOG_PLAIN, "EXCLUDING %d/%s\n", svc->portno, svc->proto==IPPROTO_TCP ? "tcp" : "udp");
|
||||
if (o.debugging) log_write(LOG_PLAIN, "EXCLUDING %d/%s\n", svc->portno,
|
||||
IPPROTO2STR(svc->proto));
|
||||
|
||||
svc->port->setServiceProbeResults(PROBESTATE_EXCLUDED, NULL,
|
||||
SERVICE_TUNNEL_NONE,
|
||||
|
||||
Reference in New Issue
Block a user