1
0
mirror of https://github.com/nmap/nmap.git synced 2026-01-23 14:49:02 +00:00

Expanded documentation.

This commit is contained in:
henri
2012-01-09 16:06:12 +00:00
parent d0a17f430f
commit c55253db44

View File

@@ -170,10 +170,13 @@ end
--=
-- Protocol specific functions are broken down per protocol, in separate tables.
-- This design eases the addition of new protocols
-- This design eases the addition of new protocols.
--
-- Layer 4 (TCP, UDP) tables are duplicated to distinguish IPv4 and IPv6
-- versions.
--=
--- TCP related functions
--- TCP related functions (IPv4 versions)
local tcp_funcs_v4 = {
--- update the global scan status with a reply
@@ -237,7 +240,7 @@ local tcp_funcs_v4 = {
}
-- UDP related functions
-- UDP related functions (IPv4 versions)
local udp_funcs_v4 = {
--- update the global scan status with a reply
@@ -300,7 +303,7 @@ local udp_funcs_v4 = {
end,
}
--- TCP related functions
--- TCP related functions (IPv6 versions)
local tcp_funcs_v6 = {
--- update the global scan status with a reply
@@ -353,6 +356,7 @@ local tcp_funcs_v6 = {
tcp:tcp_count_checksum()
tcp:ip_count_checksum()
-- Extract layer 4 part and add it as payload to the IP packet
local tcp_buf = tcp.buf:sub(tcp.tcp_offset + 1, tcp.buf:len())
ip:build_ipv6_packet(host.bin_ip_src, host.bin_ip, packet.IPPROTO_TCP, tcp_buf, ttl)
@@ -361,7 +365,7 @@ local tcp_funcs_v6 = {
}
-- UDP related functions
-- UDP related functions (IPv6 versions)
local udp_funcs_v6 = {
--- update the global scan status with a reply
@@ -414,6 +418,7 @@ local udp_funcs_v6 = {
udp:udp_count_checksum()
udp:ip_count_checksum()
-- Extract layer 4 part and add it as payload to the IP packet
local udp_buf = udp.buf:sub(udp.udp_offset + 1, udp.buf:len())
ip:build_ipv6_packet(host.bin_ip_src, host.bin_ip, packet.IPPROTO_UDP, udp_buf, ttl)
@@ -421,7 +426,19 @@ local udp_funcs_v6 = {
end,
}
--=
-- IP-specific functions. The following tables provides scanner functions that
-- depend on the IP version.
--=
-- IPv4 functions
local Firewalk_v4 = {
--- IPv4 initialization function. Open injection and reception sockets.
-- @param scanner the scanner handle
init = function(scanner)
local saddr = toip(scanner.target.bin_ip_src)
@@ -435,6 +452,8 @@ local Firewalk_v4 = {
try(scanner.sock:ip_open())
end,
--- IPv4 cleanup function. Close injection and reception sockets.
-- @param scanner the scanner handle
shutdown = function(scanner)
scanner.sock:ip_close()
scanner.pcap:pcap_close()
@@ -480,7 +499,12 @@ local Firewalk_v4 = {
end,
}
-- IPv6 functions
local Firewalk_v6 = {
--- IPv6 initialization function. Open injection and reception sockets.
-- @param scanner the scanner handle
init = function(scanner)
local saddr = toip(scanner.target.bin_ip_src)
@@ -494,11 +518,17 @@ local Firewalk_v6 = {
try(scanner.sock:ip_open())
end,
--- IPv6 cleanup function. Close injection and reception sockets.
-- @param scanner the scanner handle
shutdown = function(scanner)
scanner.sock:ip_close()
scanner.pcap:pcap_close()
end,
--- check whether an incoming IP packet is an ICMP TIME_EXCEEDED packet or not
-- @param src the source IP address
-- @param layer3 the IP incoming datagram
-- @return whether the packet seems to be a valid reply or not
check = function(src, layer3)
local ip = packet.Packet:new(layer3)
return ip.ip6_dst == src
@@ -506,6 +536,9 @@ local Firewalk_v6 = {
and ip.icmpv6_type == ICMP_TIME_EXCEEDEDv6
end,
--- update global state with an incoming reply
-- @param scanner the scanner handle
-- @param pkt an incoming valid IP packet
parse_reply = function(scanner, pkt)
local ip = packet.Packet:new(pkt)
@@ -532,6 +565,7 @@ local Firewalk_v6 = {
end,
}
--- Initialize global function tables according to the current address family
local function firewalk_init()
if nmap.address_family() == "inet" then
proto_vtable.tcp = tcp_funcs_v4