赞
踩
扫描单个主机或 IP 地址:
nmap [options] <target>
例如:nmap 192.168.0.1
扫描多个主机或 IP 地址:
nmap [options] <target1> <target2> ...
例如:nmap 192.168.0.1 192.168.0.2
扫描整个网段:
nmap [options] <IP/mask>
例如:nmap 192.168.0.0/24
扫描多个端口:
nmap [options] -p <port1,port2,...> <target>
例如:nmap -p 80,443,8080 192.168.0.1
扫描指定端口范围:
nmap [options] -p <port1-port2> <target>
例如:nmap -p 1-1000 192.168.0.1
扫描所有端口:
nmap [options] -p- <target>
例如:nmap -p- 192.168.0.1
扫描指定协议:
nmap [options] -sU <target> # 扫描 UDP 端口nmap [options] -sT <target> # 扫描 TCP 端口(默认)
例如:nmap -sU 192.168.0.1
扫描操作系统:
nmap [options] -O <target>
例如:nmap -O 192.168.0.1
扫描服务和应用程序:
nmap [options] -sV <target>
例如:nmap -sV 192.168.0.1
10 扫描等级:
nmap [options] -T <target>
例如:nmap -T0`5 192.168.0.1
0 ( Paranoid )
1 ( Sneaky )
2 ( Polite )
3 ( Normal )
4 ( Aggressive )
5 ( Insane )
Paranoid(慢速):尽量减少扫描器对目标系统的影响,发送最少的数据包,最小化扫描器的输出。可以使用此模式进行轻松的探测。
Sneaky(隐蔽):与 Paranoid 模式相似,但可以发送更多的数据包,具有更高的扫描速度。这种模式可以用于更深入的扫描,但需要扫描器的运行时尽可能不被目标系统检测到。
Polite(礼貌):在不影响目标系统的情况下,发送足够的数据包以提供有用的输出。这是最常用的模式之一,适用于大多数情况。
Normal(正常):在短时间内发送大量的数据包,以实现较快的扫描速度。默认模式。
Aggressive(侵略):发送更多的数据包以提供更详细的输出,并尝试探测更多的端口。这种模式可以帮助识别那些被隐藏的服务或主机,但会对目标系统产生更多的影响,可能会被检测到。
Insane(疯狂):以最快的速度发送最多的数据包,以实现最快的扫描速度和最完整的扫描。这种模式可能会对目标系统产生严重的影响,可能会被检测到。
以上是 nmap 的一些常用用法,还有很多其它参数和选项可以使用,具体可以查看 nmap 的官方文档或使用 nmap --help 命令查看。
- import nmap
-
- # 接收用户输入的 IP 和端口
- ip_address = input('请输入要扫描的 IP 地址:')
- port = input('请输入要扫描的端口号:')
-
- try:
- # 创建端口扫描对象
- nm = nmap.PortScanner()
- except nmap.PortScannerError:
- print('Nmap not found', sys.exc_info()[0])
- sys.exit(0)
- except:
- print("Unexpected error:", sys.exc_info()[0])
- sys.exit(0)
-
- try:
- # 调用扫描方法,参数指定扫描主机 hosts,nmap 扫描命令行参数 arguments
- nm.scan(hosts=ip_address, arguments='-v -sS -p '+port)
- except Exception as e:
- print("Scan erro:" + str(e))
-
- # 遍历扫描主机
- for host in nm.all_hosts():
- print('----------------------------------------------------')
- # 输出主机及主机名
- print('Host : %s (%s)' % (host, nm[host].hostname()))
- # 输出主机状态,如 up、down
- print('State : %s' % nm[host].state())
- for proto in nm[host].all_protocols():
- # 遍历扫描协议,如 tcp、udp
- print('----------')
- # 输入协议名
- print('Protocol : %s' % proto)
- # 获取协议的所有扫描端口
- lport = nm[host][proto].keys()
- # 端口列表排序
- list(lport).sort()
- # 遍历端口及输出端口与状态、类型、服务
- for port in lport:
- print('port : %s\tstate : %s\ttype : %s\tservice : %s' % (port, nm[host][proto][port]['state'], nm[host][proto][port]['product'], nm[host][proto][port]['name']))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。