【Python】端口掃描腳本


 0x00   使用模塊簡介

1、optparse模塊

選項分析器,可用來生成腳本使用說明文檔,基本使用如下;

import optparse

#程序使用說明

usage="%prog -H <target host> -p <target port>"

#實例化optparse對象

parser=optparse.OptionParser(usage)

#添加-H參數相關內容

parser.add_option('-H',dest='host',type='string',help='target host')

#將上述dest賦給options的屬性,即options.host,其值表示的是-H參數后的host值

(options,args)=parser.parse_args()

2、socket模塊

socket包含一個非常強大的網絡庫,用於網絡編程,基本用法如下:

#創建socket對象

sock=socket(AF_INET,SOCK_STREAM) 

#發起連接

sock.connect((host,port))

#發送數據

sock.send()

#接收數據

sock.recv()

#關閉

sock.close()

0x01   完整腳本

#coding:utf-8

import optparse
import socket
from socket import *

def main():
    usage="%prog -H <target host> -p <target port>"
    parser=optparse.OptionParser(usage)
    parser.add_option('-H',dest='tgthost',type='string',help='target host')
    parser.add_option('-p',dest='tgtport',type='string',help='target port[s]')
    (options,args)=parser.parse_args()
    port_list=str(options.tgtport).split(',')
    for port in port_list:
        portScan(options.tgthost,int(port))

def portScan(host,port):
    try:
        sock=socket(AF_INET,SOCK_STREAM)
        sock.connect((host,port))
        print "[*]%d/tcp open" % port
        sock.close()
    except:
        print "[*]%d/tcp close" % port

if __name__=='__main__':
    main()

0x02   運行截圖

 0x03   問題記錄

簡述自己遇到的幾個坑:

第一個是腳本執行一直報‘module’ object no attribute ‘OptionParser’,而且腳本是無任何錯誤的,

最終發現是因為腳本名稱和python模塊名稱重復了,然后改了下腳本名稱,再刪除之前腳本執行生成的pyc文件,

之后腳本就可以正常運行了,一個腳本文件名引發的“血案”,望諸君留意,。。

第二個是使用socket時需要

import socket

from socket import *

如果不加上第二句,腳本執行會一直顯示端口關閉。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM