python 安全开发课程第二章第三节--nmap调用

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"

猜你喜欢

转载自blog.csdn.net/u014247926/article/details/127188752
今日推荐