安装nmap
如果不安装的话,在python代码中会报错,提示在环境变量中找不到nmap
Windows中Nmap下载地址:https://nmap.org/download.html
Linux中有自带的命令
安装nmap模块
python3 -m pip3 install python-nmap
nmap命令详解
nmap 192.168.30.176 #扫描单个目标地址 nmap 192.168.0.1 192.168.0.6 #扫描多个目标地址 nmap 192.168.0.1-6 #扫描一个范围内的目标地址 nmap 192.168.0.100/24 #扫描目标地址所在的某个网段 nmap -iL C:\Users\smk\Desktop\targets.txt #扫描主机列表targets.txt中的所有目标地址 nmap 192.168.0.100/24 -exclude 192.168.0.1 #扫描除某一个目标地址之外的所有目标地址 nmap 192.168.0.100/24 -excludefile C:\Users\smk\Desktop\targets.txt #扫描除某一文件中的目标地址之外的目标地址 nmap 192.168.0.6 -p 135,443,445 #扫描某一目标地址的21、22、23、80端口 nmap --traceroute 192.168.0.6 #路由跟踪 nmap -sP 192.168.0.100/24 #所在C段的在线状况 nmap -O 192.168.0.6 #操作系统识别 nmap -Pn 192.168.1.1 #跳过Ping扫描(无ping扫描) nmap -sV 192.168.1.1 #版本探测
python中nmap模块详解
import nmap
nm = nmap.PortScanner()
print(nm.scan('11.16.18.22', '22'))
'''
{'nmap': {'command_line': 'nmap -oX - -p 22 -sV 11.16.18.22', 'scaninfo': {'error': ['NSOCK ERROR [0.0500s] ssl_init_helper(): OpenSSL legacy provider failed to load.\r\n\r\n'], 'tcp': {'method': 'syn', 'services': '22'}}, 'scanstats': {'timestr': 'Thu Jan 5 18:03:56 2023', 'elapsed': '1.53', 'uphosts': '1', 'downhosts': '0', 'totalhosts': '1'}}, 'scan': {'11.16.18.22': {'hostnames': [{'name': '', 'type': ''}], 'addresses': {'ipv4':
'11.16.18.22'}, 'vendor': {}, 'status': {'state': 'up', 'reason': 'echo-reply'}, 'tcp': {22: {'state': 'open', 'reason': 'syn-ack', 'name': 'ssh', 'product': 'OpenSSH', 'version': '7.4', 'extrainfo': 'protocol 2.0', 'conf': '10', 'cpe': 'cpe:/a:openbsd:openssh:9.1'}}}}}
'''
print(nm.scaninfo())
print(nm.command_line())
print(nm.all_hosts())
print(nm['11.16.18.22'])
print(nm['11.16.18.22'].all_protocols())
print(nm['11.16.18.22']['tcp'])
print(nm['11.16.18.22']['tcp'].keys())
print(nm['11.16.18.22'].has_tcp(21))
print(nm.scan(hosts='11.16.18.0/24', arguments='-n -sP -PE -PA21,23,80,3389') )
运维中巡检主机是否存活(在主机禁ping的情况下)
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@文件 :jiancha_bazhan.py
@说明 :靶站巡检
@时间 :2023/01/04 16:26:18
@作者 :Guo
'''
import nmap
liaoning_bazhan = {
"山西": "22.33.24.2",
"辽宁": "60.1.16.22",
"河北": "6.16.28.52",
"北京":"12.3.44.63"
}
import threading
def nm_ap(ip,ID):
nm = nmap.PortScanner()
nm.scan(ip, '22','-Pn')
if 'open' in nm[ip]['tcp'][22]['state']:
# print(ID,' ',nm[ip]['tcp'][22]['state'])
print('{}{}'.format(ID.ljust(15,' '),'22端口开放'.ljust(10,' ')))
else:
print('{}{}'.format(ID.ljust(10,' '),nm[ip]['tcp'][22]['state'].ljust(10,' ')))
def multi_thread():
print("开始")
threads = []
for item in bazhan:
threads.append(threading.Thread(target=nm_ap,args=(bazhan[item],item)))
for thread in threads:
thread.start()
for thread in threads:
thread.join()
print('结束')
if __name__ == "__main__":
multi_thread()