其实在这篇文章之前本人已讲述一篇关于ICMP协议探测主机的文章(https://blog.csdn.net/q759451733/article/details/84134245),那篇文章主要讲述scapy模块,该模块是可以自行构造包,而Python的nmap是不可以构造包的,但是功能不比scapy少,因为nmap不但可以探测主机存活、端口等功能,还可以发送大量数据包探测主机开放端口号下的版本或运行的某些应用程序,功能不亚于scapy。而本篇文章主要讲述ping扫描功能,其他重要功能以及Python-nmap的真正功能(其实是有nmap这款软件的,但是我们却用Python-nmap,肯定是有比nmap软件更实用的地方)我们将在下篇文章讲述。如果对ICMP协议不熟悉可以参考(https://blog.csdn.net/q759451733/article/details/84134245)
nmap是黑客必备的一款软件,只要是黑客就一定会运用主要功能,nmap不但有各种各样的主机扫描,还能扫描漏洞,可以说nmap是一款集齐各种其他软件于一身的神器。
注意!注意!注意!尽量用Linux系统运行,因为这个模块是需要nmap这个软件的支撑的,如果没有下载这个软件是没办法运行的,本人是用kali Linux系统,里面自带nmap。运行Python代码尽量用kali Linux系统,因为不管是黑客大赛还是黑客攻击,该系统里面都自带非常的多的黑客软件,所以用起来非常的方便。
代码区:
import nmap #需要安装nmap模块(注意是安装 python-nmap,而不是nmap,如果不懂安装的可以参考https://blog.csdn.net/q759451733/article/details/84038114)。
def nmap_ping_scan(network_prefix):
nm = nmap.PortScanner() #设置为nmap扫描状态。ping_scan_raw = nm.scan(hosts = network_prefix,arguments='-sn') #hosts可以是单个IP地址也可以是一整个网段。 arguments就是运用什么方式扫描,-sn就是ping扫描。
host_list_ip = []
for result in ping_scan_raw['scan'].values(): #将scan下面的数值赋值给result,并开始遍历。
if result['status']['state'] == 'up': #如果是up则表明对方主机是存活的。
host_list_ip.append(result['addresses']['ipv4']) #在addresses层下的ipv4,也就是IP地址添加到result字典中。
return host_list_ip #返回字典。
if __name__ == '__main__':
for host in nmap_ping_scan('192.168.1.0/24'): #输入你要扫描的网段。
print('%-20s %5s' % (host,'is UP')) #打印所有存活的主机。
如下图,是扫描百度的数据包
但是如果是扫描本地局域网的主机,是运用ARP协议扫描。
扫描结果:
总结:该篇文章主要讲述Python-nmap最基本功能(-sn,ping扫描),即使很基础,但却是极其常用的功能,可以批量扫描一个网段的存活主机。
如果有什么讲解得不好的地方,或者想问的问题都可以在下方评论区评论哟!