python工具打造之实现端口扫描
生活随笔
收集整理的這篇文章主要介紹了
python工具打造之实现端口扫描
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python實現端口掃描
工欲善其事必先利其器,所以有時我們就需要編寫自己的腳本工具.
下面帶來python實現目標端口掃描的教程,希望對大家所幫助.
注意:從2.7版本后不再使用:optparse模塊不推薦使用,python不再更新該模塊,后續的發展將推薦使用argparse模塊。
由于工作性質原因,3.0版本下接觸會比較多這里提一點.
教程準備:
1.使用了socket庫,optparse庫
socket庫,網絡接口庫,主要提供了不同進程間的通訊,以及不同網絡間的進程通訊.optparse庫,主要為腳本傳遞命令參數功能2.需要知道我們是如何建立起連接的.
我們調用了socket庫,并使用它建立連接,然后關閉它
import socket c = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 實例化socket的類,并聲明了使用的網絡地址類型(socket.AF_INET),socket的類型是TCP類型(socket.SOCK_STREAM) c.connect((ip_addr,prot)) # 建立連接,ip_addr為目標ip,prot為目標端口 c.close() # 關閉連接3.設置我們的命令行參數,由于我們這次的教程,采用從字典中遍歷端口的進行掃描的方式,所以我們設置命令行參數時,只需要指定ip地址即可,這里我們定義了一個自定義函數來實現功能
import optparse def opt_cmd(): parser = optparse.OptionParser("腳本名 -H <目標ip>") # 當們在命令行輸入錯誤時,進行提示 parser.add_option("-H",dest='ip_address',type="string",help="指定目標IP") #在這里add_option是核心,“-H”是設置的命令參數,dest是臨時變量,type用來驗證用戶輸入的類型是否與我們設置的類型相同,help是友好提示信息,一般用來描述這個add的作用,也可以不寫 (options,args) = parser.parse_args() # 當定義好參數后我們就需要通知optparse來解析你的命令行程序,parse_args()會返回兩個值,options(一個對象包含所有選項的值),args(位置參數列表解析后剩下的選項參數) addr = options.ip_address # 將臨時變量dest的值給了新的變量addrreturn addr # 返回addr,也就是我們的輸入的IP4.讀取我們的字典文件
prot_path = "port.txt" # 我們字典文件的存儲路徑 def prot_file(port_path):port_w = open(port_path,"r") # 讀取字典內容port_list = duan_w.readlines() # 將讀取的內容轉換為列表return port_list #返回這個列表通過上面的了解,我們應該明白
· 如何建立連接,關閉連接
· 設置命令行參數
· 調用字典
接下來附上我們的整體代碼,需要說明的是,由于我的端口字典存儲在和腳本相同的目錄下,所以需要先cd 到同級目錄下執行
import socket import optparse c = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 實例化socket的類,并聲明了使用的網絡地址類型(socket.AF_INET),socket的類型是TCP類型(socket.SOCK_STREAM) port_path = "port.txt" # 我們字典文件的存儲路徑#端口掃描 def scan(addr,c):portlist = port_file(port_path)for i in portlist: try:c = socket.socket(socket.AF_INET,socket.SOCK_STREAM)c.connect((addr,int(i))) #建立連接print(str(i)+"這個端口是開啟的")c.close()except:# ~ print(str(i)+"這個端口是關閉的")c.close()#字典內容獲取 def port_file(port_path):port_w = open(port_path,"r") # 讀取字典內容port_list = port_w.readlines() # 將讀取的內容轉換為列表return port_list #返回這個列表 #設置命令參數 def opt_cmd(): parser = optparse.OptionParser("腳本名 -H <目標ip>") # 當們在命令行輸入錯誤時,進行提示 parser.add_option("-H",dest='ip_address',type="string",help="指定目標IP") #在這里add_option是核心,“-H”是設置的命令參數,dest是臨時變量,type用來驗證用戶輸入的類型是否與我們設置的類型相同,help是友好提示信息,一般用來描述這個add的作用,也可以不寫 (options,args) = parser.parse_args() # 當定義好參數后我們就需要通知optparse來解析你的命令行程序,parse_args()會返回兩個值,options(一個對象包含所有選項的值),args(位置參數列表解析后剩下的選項參數) addr = options.ip_address # 將臨時變量dest的值給了新的變量addrreturn addr # 返回addr,也就是我們的輸入的IP #進行調用 if __name__ == "__main__":addr = opt_cmd()scan(addr,c) 超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的python工具打造之实现端口扫描的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux密码暴力破解之SHA-512破
- 下一篇: python实现文件上传下载