Nmap Service Resolution
Nmap
Service Resolution
Port Mapping
nmap-services
nmap-service-probes
Line Handling
Comment Removal
This article discusses how Nmap, a popular network scanner, improves service resolution by using `nmap-services` and `nmap-service-probes`. The process involves parsing lines, removing comments, and separating data into three components per line. This allows for more accurate port mappings and enhances the overall capabilities of Nmap in network discovery.
There are two files we are interested in.
nmap-services
: a list of well known services by portnmap-service-probes
: matching rules for detecting service by response
The default service to port mapping in Python socket
module is incomplete.
# find that with mlocate
# file_path = '/usr/share/nmap/nmap-services'
= "./nmap-services"
file_path with open(file_path, 'r') as f:
= f.read().split('\n')
line_list for line in line_list:
if line.startswith("#"):
# it is a comment
continue
else:
# process this line
= line.split('#')[0].strip() # strip away comments
content = content.split(" ")
components # must be three.
assert len(components) == 3, f"abnormal component count for content: '{content}'"