python基于socket函數(shù)實(shí)現(xiàn)端口掃描
本文實(shí)例為大家分享了python基于socket實(shí)現(xiàn)端口掃描的具體代碼,供大家參考,具體內(nèi)容如下
自學(xué)Python一段時間,寫個端口掃描器練練手。有什么不足之處,請見諒這是基于socket函數(shù)對端口進(jìn)行端口掃描
所以,首先要導(dǎo)入socket模塊
from socket import *
其次,通過正側(cè)表達(dá)式來判斷輸入的是不是IP地址
compile_ip = re.compile( ’^(1d{2}|2[0-4]d|25[0-5]|[1-9]d|[1-9]).(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d).(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d).(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d)$’)
這里是核心代碼
# -*- coding: utf-8 -*-from socket import *import refrom pip._vendor.distlib.compat import raw_inputdef portscaner(host,port): try: s = socket(AF_INET, SOCK_STREAM) # 實(shí)例化socket s.connect((host,port)) #對對應(yīng)主機(jī)的對應(yīng)端口發(fā)起連接 print(’主機(jī)%s的%s端口處于打開狀態(tài)’%(host,port)) s.close() #關(guān)閉連接 Export_Data(port) #調(diào)用Export_Date except Exception as e: pass #利用異常處理,對無法建立連接的端口pass掉def ChecK_Host(host): #利用正側(cè)表達(dá)式匹配host,判斷是否符合IP地址的格式 并且輸入不為空 compile_ip = re.compile( ’^(1d{2}|2[0-4]d|25[0-5]|[1-9]d|[1-9]).(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d).(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d).(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d)$’) if compile_ip.match(host) and len(host)!=0: #host符合IP地址的格式且不為空值返回True,否則返回False return True else: return False def Export_Data(port): #導(dǎo)出數(shù)據(jù) port = str(port) #將port轉(zhuǎn)換為字符串類型 date = open(’Active_Port.txt’, ’a’) #在文件尾部寫入數(shù)據(jù),Active_Port.txt,若不存在就新建文件 date.write(port+’n’) #將port并行寫入文件 date.close() #不要忘了關(guān)閉文件def main(host): #主模塊 if ChecK_Host(host): #通過ChecK_Host()函數(shù)return 的布爾值進(jìn)行判斷輸入的IP地址是否有誤 for port in range(1,65536): #這里可以改成1024 portscaner(host, port) print(’n’) print(’已將結(jié)果導(dǎo)出到 Active_Port.txt’) else: print(’IP地址無錯誤,請重新輸入!!!’)if __name__ == ’__main__’: print(’<’ * 12 + ’單線程端口掃描器’ + ’>’ * 12) host = input(’請輸入有效的目標(biāo)IPv4地址:’) main(host)raw_input(’Press Enter to exit...’) #當(dāng)腳本執(zhí)行完后,等待鍵入Enter回車才退出程序(可有可無,主要是為了封裝成exe可執(zhí)行文件后,執(zhí)行完程序dos界面不自動退出)
測試結(jié)果
可見目的主機(jī)的21端口處于開放狀態(tài)
掃描結(jié)束后,將存活的端口寫入到Active_Port.txt
這里沒有用到多線程,通過循環(huán),一個一個端口進(jìn)行連接,掃描速度非常慢。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. IntelliJ IDEA導(dǎo)出項(xiàng)目的方法2. IntelliJ IDEA設(shè)置自動提示功能快捷鍵的方法3. IntelliJ IDEA設(shè)置編碼格式的方法4. JS實(shí)現(xiàn)炫酷雪花飄落效果5. Ajax對xml信息的接收和處理操作實(shí)例分析6. 用XML和XSL來生成動態(tài)頁面7. Ajax報錯400的參考解決辦法8. 谷歌Chrome瀏覽器開發(fā)者工具教程—JS調(diào)試篇9. Ajax實(shí)現(xiàn)頁面無刷新留言效果10. WML開發(fā)教程之 WAP網(wǎng)站服務(wù)器配置方法
