python调用nmap扫描全端口_python使用nmap端口扫描的两种方法

第一版:只支持以逗号分隔的端口,不支持端口范围

Firstly: sudo apt-get install nmap

Secondly:pip install python-nmap

Thirdly:copy the code bellow to a file like scan_network.py#!/usr/bin/env python

import nmap

import optparse

def nmapScan(tgtHost,tgtPort):

nmScan = nmap.PortScanner()

nmScan.scan(tgtHost,tgtPort)

state=nmScan[tgtHost]['tcp'][int(tgtPort)]['state']

print ("[*] " + tgtHost + " tcp/"+tgtPort +" "+state)

def main():

parser = optparse.OptionParser('usage %prog '+\

'-H -p ')

parser.add_option('-H', dest='tgtHost', type='string',\

help='specify target host')

parser.add_option('-p', dest='tgtPort', type='string',\

help='specify target port[s] separated by comma')

(options, args) = parser.parse_args()

tgtHost = options.tgtHost

tgtPorts = str(options.tgtPort).split(',')

if (tgtHost == None) | (tgtPorts[0] == None):

print (parser.usage)

exit(0)

for tgtPort in tgtPorts:

nmapScan(tgtHost, tgtPort)

if name == 'main':

main

Forthly:chmod +x scan_network.py

fifthly: ./scan_network.py -H 192.168.1.1 -p 22,23

第二版:支持以逗号分割及以-分割的端口范围#!/usr/bin/env python

import nmap

import optparse

def nmapScan(tgtHost,tgtPort):

nmScan = nmap.PortScanner()

nmScan.scan(tgtHost,tgtPort)

state=nmScan[tgtHost]['tcp'][int(tgtPort)]['state']

print ("[*] " + tgtHost + " tcp/"+tgtPort +" "+state)

def main():

parser = optparse.OptionParser('usage %prog '+\

'-H -p ')

parser.add_option('-H', dest='tgtHost', type='string',\

help='specify target host')

parser.add_option('-p', dest='tgtPort', type='string',\

help='specify target port[s] separated by comma')

(options, args) = parser.parse_args()

tgtHost = options.tgtHost

######this code bellow is to support scan port range like 66-88

tgtPorts = []

tgtPorts_cache = str(options.tgtPort).split(',')

i = int(len(tgtPorts_cache))

for m in range( 0,i ):

tgtPorts_split = str(tgtPorts_cache[m]).split('-')

if(len(tgtPorts_split) < 2):

tgtPorts.extend(tgtPorts_split)

#print(tgtPorts)

else:

for n in range(int(tgtPorts_split[0]),int(tgtPorts_split[1])+1):

tgtPorts.append(str(n))

#print(tgtPorts)

######above the tgtPorts are the ports list you want to scann

#tgtPorts = str(options.tgtPort).split(',')

if (tgtHost == None) | (tgtPorts[0] == None):

print (parser.usage)

exit(0)

for tgtPort in tgtPorts:

nmapScan(tgtHost, tgtPort)

if name == 'main':

main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值