Python利用socket模塊開(kāi)發(fā)簡(jiǎn)單的端口掃描工具的實(shí)現(xiàn)
1.簡(jiǎn)介
Socket又稱'套接字',應(yīng)用程序通常通過(guò)'套接字'向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求,使主機(jī)間或者一臺(tái)計(jì)算機(jī)上的進(jìn)程間可以通訊。
socket的工作流程
socket 采用C/S 模式,分為服務(wù)端和客戶端 服務(wù)端數(shù)據(jù)處理流程 創(chuàng)建socket -> 綁定到地址和端口 -> 等待連接 -> 開(kāi)始通信-> 關(guān)閉連接 客戶端數(shù)據(jù)處理流程 創(chuàng)建socket -> 等待連接 -> 開(kāi)始通信-> 關(guān)閉連接 客戶端沒(méi)有綁定地址和端口,是由于客戶端進(jìn)程采用的是隨機(jī)端口,當(dāng)客戶端要去連接目標(biāo)時(shí),會(huì)由系統(tǒng)自定分配一個(gè)端口號(hào)和自身ip地址去組合2.利用方法
函數(shù) 描述 s.settimeout(timeout) 設(shè)置套接字操作的超時(shí)期,timeout是一個(gè)浮點(diǎn)數(shù),單位是秒。值為None表示沒(méi)有超時(shí)期。一般,超時(shí)期應(yīng)該在剛創(chuàng)建套接字時(shí)設(shè)置,因?yàn)樗鼈兛赡苡糜谶B接的操作(如connect()) s.connect() 主動(dòng)初始化TCP服務(wù)器連接,。一般address的格式為元組(hostname,port),如果連接出錯(cuò),返回socket.error錯(cuò)誤。
二、代碼1.源代碼
#!/user/bin/# -*- coding:UTF-8 -*-# Author:Master_sir# Version:python2.7import socket,sysdk = []for i in range(0,65536): dk.append(i)ports = dkdef IsOpen(ip,port): try: s = socket.socket() s.settimeout(1) s.connect((ip,port)) return True except: return False passdef PortScan(ip): for p in ports: if IsOpen(ip,p): sys.stderr.write(’%s:%s is openn’ % (ip,p)) PortScan(’xxx.xxx.xxx.xxx’)#要掃描的ip
2.執(zhí)行實(shí)例
到此這篇關(guān)于Python利用socket模塊開(kāi)發(fā)簡(jiǎn)單的端口掃描工具的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python socket端口掃描工具內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 在Android中使用WebSocket實(shí)現(xiàn)消息通信的方法詳解2. python matplotlib:plt.scatter() 大小和顏色參數(shù)詳解3. Yii2.0引入CSS,JS文件方法4. JSP數(shù)據(jù)交互實(shí)現(xiàn)過(guò)程解析5. Python importlib動(dòng)態(tài)導(dǎo)入模塊實(shí)現(xiàn)代碼6. vue使用webSocket更新實(shí)時(shí)天氣的方法7. 淺談python出錯(cuò)時(shí)traceback的解讀8. android studio 打包自動(dòng)生成版本號(hào)與日期,apk輸入路徑詳解9. Nginx+php配置文件及原理解析10. JavaMail 1.4 發(fā)布
