Nmap使用指南:扫描与网络探测

需积分: 10 1 下载量 200 浏览量 更新于2024-09-12 收藏 4KB TXT 举报
"nmap_中文help" Nmap是一款强大的网络扫描工具,用于发现网络上的主机和服务。它由Fyodor开发,并在nmap.org上提供。Nmap的中文帮助文档可以在这里找到:http://nmap.org/man/zh/Nmap,也可以参考官方的使用手册nmap.usage.txt(http://nmap.org/data/nmap.usage.txt)。 Nmap的主要功能包括: 1. **主机发现**:通过发送不同类型的网络包(如ICMP、TCP、UDP等),Nmap可以确定网络上哪些主机是活跃的。例如,使用`-sn`选项进行ping扫描,或使用`-Pn`跳过主机发现阶段。 2. **端口扫描**:Nmap可以扫描目标主机开放的端口。使用`-p`选项指定扫描的端口范围,如`-p22`扫描SSH服务,`-p1-65535`扫描所有端口,或`-pU:53,111,137`扫描特定的UDP端口。 3. **服务和版本探测**:使用`-sV`选项,Nmap能够识别出运行在开放端口上的服务及其版本信息,这有助于识别潜在的安全漏洞。 4. **扫描技术**:Nmap支持多种扫描技术,如半开放扫描(`-sS`)、完全连接扫描(`-sT`)、ACK扫描(`-sA`)等。用户可以根据网络环境选择合适的扫描方式。 5. **规避检测**:Nmap提供了选项如`-PS/PA/PU`进行SYN/ACK/UDP Ping扫描,以避免被防火墙或入侵检测系统检测到。 6. **排除主机**:使用`--exclude`或`--excludefile`选项,可以排除不想扫描的主机列表。 7. **自定义扫描标志**:通过`--scanflags`,用户可以设置自定义的TCP旗标组合,以实现更精细的扫描控制。 8. **IP协议扫描**:`-sO`选项允许对IP层进行扫描,识别网络中的IP选项和协议,如IGMP。 9. ** traceroute**:使用`--traceroute`选项,Nmap可以执行路径探测,显示数据包到达目标主机所经过的路由器。 10. **代理扫描**:`-b<FTPrelayhost>`允许通过FTP代理进行扫描。 Nmap还提供了其他高级功能,如快速扫描模式(`-F`)、随机化扫描策略(`-r`)、仅扫描最常用端口(`--top-ports<number>`)和基于端口开放比例的扫描(`--port-ratio<ratio>`)等。此外,用户还可以通过`--reason`查看扫描失败的具体原因,以及通过`--version-intensity<level>`调整版本探测的强度。 Nmap是一个功能丰富的工具,适用于网络安全审计、网络管理员的日常维护以及一般性的网络探索。通过熟练掌握Nmap的使用,用户可以有效地了解网络状态,发现潜在的安全问题,并确保网络的安全性。

import re import os import json masscan_path = "D:/0.脚本小子/Tools/masscan/masscan.exe" masscan_parser_path = "../Tools/Masscan-to-CSV/masscan_xml_parser.py" nmap_parser_path = "../Tools/Nmap-Scan-to-CSV/nmap_xml_parser.py" port_list_path = "./dict/ports-http-iamthefrogy.txt" port_list_fp = open(port_list_path, "r") port_list = port_list_fp.readline().strip() port_list_fp.close() # 判断IP是否符合规范 def check_ip(data): ip_pattern = re.compile(r'((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0 - 5] | [0 - 4]\d)) | [0 - 1]?\d{1, 2})){3}') result = ip_pattern.match(data) if result is None: return None else: return result.group(0) def filter_ip(): ip_filepath = "./result/ip.txt" # IP数据保存路径 ip_fp = open(ip_filepath, 'r') ip_list = ip_fp.readlines() ip_fp.close() ip_fp = open(ip_filepath, 'w') for ip in ip_list: ip = check_ip(ip) if ip is not None: ip_fp.write(ip + '\n') ip_fp.close() # NMap: csv -> json,提取IP和端口的映射 def read_nmap(data_name): ip2port = {} for item in open("./result/nmap/" + data_name + '.csv'): if item.count(',') > 5: ip = item.strip().split(',')[0] port = item.strip().split(',')[4] if ip != "IP": if ip in ip2port.keys(): ip2port[ip].append(port) else: ip2port[ip] = [port] with open("./result/nmap/" + data_name + '.json', "w") as json_fp: json.dump(ip2port, json_fp) # 执行nmap命令将数据保存为xml与csv格式 def nmap(save_name, need_scan=True): if need_scan: cmd = "nmap -Pn -p {} -oX {} -iL {}".format(port_list, "./result/nmap/" + save_name + ".xml", "./result/ip.txt") os.system(cmd) cmd = "python3 {} -f {} -csv {}".format( nmap_parser_path, "./result/nmap/" + save_name + ".xml", "./result/nmap/" + save_name + ".csv" ) os.system(cmd) read_nmap(save_name) # Masscan: csv -> json,提取IP和端口的映射 def read_masscan(data_name): ip2port = {} for item in open("./result/masscan/" + data_name + '.csv'): if item.count(',') > 5: ip = item.strip().split(',')[0] port = item.strip().split(',')[3] if ip != "IpAddr": if ip in ip2port.keys(): ip2port[ip].append(port) else: ip2port[ip] = [port] with open("./result/masscan/" + data_name + '.json', "w") as json_fp: json.dump(ip2port, json_fp) # 执行masscan命令将数据保存为xml与csv格式 def masscan(save_name, need_scan=True): if need_scan: cmd = "{} -iL {} -Pn -p {} -oX {}".format( masscan_path, "./result/ip.txt", port_list, "./result/masscan/" + save_name + ".xml" ) os.system(cmd) cmd = "python3 {} -f {} -csv {}".format( masscan_parser_path, "./result/masscan/" + save_name + ".xml", "./result/masscan/" + save_name + ".csv" ) os.system(cmd) read_masscan(save_name) # 端口探测主函数 def search_port(conf, filename): filter_ip() if conf['use_nmap']: nmap(filename) if conf['use_masscan']: masscan(filename) if __name__ == '__main__': filter_ip() fp = open("./config.json", "r", encoding="utf-8") conf_json = json.load(fp) config = conf_json['ports'] search_port(config, '2023_1_8')

2023-02-07 上传