python安全开发课程第二章第三节
注释:这是很多年前写的,所以使用Python2.7
Nmap简介
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全,正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。
python-nmap
python-nmap是作者根据写的NMAP的pthon接口,可以方便我们使用namp的各种功能,这里只介绍如何用python调用nmap,具体nmap的功能自行学习
标准的使用方法
import nmap
n=nmap.PortScanner()
result=n.scan(hosts='127.0.0.1', ports='22,443,445,80', arguments='-sV')
print result#这里返回个字典,如果想提取精确的信息需要自己提
python-nmap库方法介绍
1.首先第一步是实例化nmap模块,类方法使用前都要进行实例化
import nmap
n=nmap.PortScanner()
1.all_hosts:
该方法可以查看扫描结果的host
2.scaninfo
查看这次扫描的简单信息
3.command_line
查看扫描使用的命令
4.scan(hosts=‘127.0.0.1’, ports=None, arguments=’-sV’, sudo=False)
主要的方法,用以使用nmap的功能
####课后作业
使用python-namp地台第二节课自己编写的扫描功能,实现成为一个工具
给个简单的思路吧!
#coding=utf-8
import argparse
import nmap
def port_scan(taghost,tagport):
""" 这是一个例子程序 """
n=nmap.PortScanner()
res=n.scan(hosts=taghost,ports=tagport)
print res['scan'][taghost]['tcp'] #这里要了解字典的用法
print n.command_line()
if __name__ == '__main__':
parser=argparse.ArgumentParser(description="这是我的第一个工具")
parser.add_argument("-t","--taghost",help="输入扫描的目标ip")
parser.add_argument("-p","--tagports",help="输入要扫描的端口号,可以是多个")
args=parser.parse_args()
tagports=str(args.tagports).split(',') #这里要了解split
if args.taghost is not None and args.tagports is not None:#这里要了解None
for tagport in tagports:
port_scan(args.taghost,tagport)
else:
print parser.format_help()#打印帮助信息
某同学的作业展示
#coding=utf-8
import nmap
import argparse
def port_scan(taghost,port):
try:
print '{:<6}'.format('PORT'),'{:<6}'.format('STATE'),'{:<12}'.format('SERVICE')
n=nmap.PortScanner()
result=n.scan(hosts=taghost,ports=port,arguments='-sV')
#开始逐个打印开放的端口,以及端口所对应的服务名称
ports1=str(args.port).split(',')
for p in ports1:
p=int(p)
if result['scan'][taghost]['tcp'][p]['state']=='open':
print '{:<6}'.format(p),'{:<6}'.format('open'),'{:<12}'.format(result['scan'][taghost]['tcp'][p]['name'])
except:
print "There are some errors."
parser=argparse.ArgumentParser("Python调用Nmap扫描器--xiaohei")
parser.add_argument("-t","--taghost",help="请输入扫描的目标IP")
parser.add_argument("-p","--port",help="请输入扫描的目标端口,用,隔开")
args=parser.parse_args()
if args.taghost:
port_scan(args.taghost,args.port)
else:
print "Example: python xx.py -t 127.0.0.1 -p 22,80"