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 *
如果不加上第二句,腳本執行會一直顯示端口關閉。。。