python學習-python-nmap實現高效的連接埠掃描器

來源:互聯網
上載者:User

標籤:python-nmap

python的第三方模組,python-nmap實現高效的連接埠掃描。

一、準備工作

yum -y install nmap #安裝nmap工具pip install python-nmap==0.4.0   #python2.7環境使用pip安裝0.4.0版本的第三方模組

二、模組常用方法說明

這裡我們主要接受python-nmap模組的兩個常用類,一個是PortScanner()類,實現一個nmap工具的連接埠掃描功能封裝;另一個為PortScannerHostDict()類,實現儲存與訪問主機掃描結果

1、PortScanner()類常用方法

1-1、scan()方法
scan(self, hosts='127.0.0.1', ports=None, arguments='-sV')方法,實現指定主機、連接埠、namp命令列參數的掃描。參數hosts為字串類型,表示掃描的主機地址,格式可以用"scanme.nmap.org"、"192.116.0-255.1-127"、"216.163.128.20/20"表示; 參數ports為字串類型,表示掃描的連接埠,可以用"22,53,110,143-4564"表示;參數namp命令列參數,格式為"-sU -sX -sC",例如:

nm = nmap.PortScanner()  nm.scan('192.168.209.121-122', '22,80')

1-2、command_line()方法
command_line(self)方法,返回的掃描方法映射到具體的nmap命令列,如:

>>> nm.command_line()  u'nmap -oX - -p 22,80 -sV 192.168.209.121-122'

1-3、scaninfo()方法
scaninfo(self)方法,返回nmap掃描資訊,格式為字典類型,如:

>>>nm.scanninfo()  {'tcp':{'services':'22,80', 'method':'syn'}}

1-4、all_hosts()方法
all_hosts(self)方法,返回nmap掃描的主機清單,格式為清單類型,例如:

['192.168.209.121', '192.168.209.122']

2、PortScannerHostDict()類常用方法

2-1、hostname()方法
hostname(self)方法,返回掃描對象的主機名稱,如:

>>> nm['192.168.209.121'].hostname()  'liuyazhuang'

2-2、state()方法
state(self)方法,返回掃描對象的狀態,包括4中狀態(up、down、unknown、skipped),如:

>>> nm['192.168.209.121'].state()  'up'

2-3、all_protocols()方法
all_protocols(self)方法,返回掃描的協議,如:

>>> nm['192.168.209.121'].all_protocols()  ['tcp']

2-4、all_tcp()方法
all_tcp(self)方法,返回TCP協議掃描的連接埠,如:

>>> nm['192.168.209.121'].all_tcp()  [22,80]

2-5、tcp()方法
tcp(self, port)方法,返回掃描TCP協議port(連接埠)的資訊,如:

>>> nm['192.168.209.121'].tcp(22)  {'state':'open', 'reason':'syn-ack', 'name':'ssh'}

三、程式碼範例

#!/usr/bin/python#coding=utf-8import sysimport nmap scan_row=[]input_data = raw_input('Please input hosts and port: ')  #輸入主機和連接埠scan_row = input_data.split(" ")     #分割空格if len(scan_row)!=2:#判斷輸入的字元長度不等於2    print "Input errors,example \"192.168.1.0/24 80,443,22\""  #輸出 輸入錯誤    sys.exit(0)hosts=scan_row[0]    #接收使用者輸入的主機port=scan_row[1]    #接收使用者輸入的連接埠try:    nm = nmap.PortScanner()    #建立連接埠掃描對象except nmap.PortScannerError:    print('Nmap not found', sys.exc_info()[0])    sys.exit(0)except:    print("Unexpected error:", sys.exc_info()[0])    sys.exit(0)try:    nm.scan(hosts=hosts, arguments=' -v -sS -p '+port)    #調用掃描方法,參數指定掃描主機hosts,nmap掃描命令列參數argumentsexcept Exception,e:    print "Scan erro:"+str(e)    for host in nm.all_hosts():    #遍曆掃描主機    print('----------------------------------------------------')    print('Host : %s (%s)' % (host, nm[host].hostname()))    #輸出主機及主機名稱    print('State : %s' % nm[host].state())    #輸出主機狀態,如up、down    for proto in nm[host].all_protocols():    #遍曆掃描協議,如tcp、udp        print('----------')        print('Protocol : %s' % proto)    #輸入協議名        lport = nm[host][proto].keys()    #擷取協議的所有掃描連接埠        lport.sort()    #連接埠列表排序        for port in lport:    #遍曆連接埠及輸出連接埠與狀態            print('port : %s\tstate : %s' % (port, nm[host][proto][port]['state']))

結果如所示:

python學習-python-nmap實現高效的連接埠掃描器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.