python基于socket函數(shù)實現(xiàn)端口掃描
本文實例為大家分享了python基于socket實現(xiàn)端口掃描的具體代碼,供大家參考,具體內(nèi)容如下
自學Python一段時間,寫個端口掃描器練練手。有什么不足之處,請見諒
這是基于socket函數(shù)對端口進行端口掃描
所以,首先要導入socket模塊
from socket import *
其次,通過正側(cè)表達式來判斷輸入的是不是IP地址
compile_ip = re.compile(
'^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$')
這里是核心代碼
# -*- coding: utf-8 -*-
from socket import *
import re
from pip._vendor.distlib.compat import raw_input
def portscaner(host,port):
try:
s = socket(AF_INET, SOCK_STREAM) # 實例化socket
s.connect((host,port)) #對對應主機的對應端口發(fā)起連接
print('主機%s的%s端口處于打開狀態(tài)'%(host,port))
s.close() #關閉連接
Export_Data(port) #調(diào)用Export_Date
except Exception as e:
pass #利用異常處理,對無法建立連接的端口pass掉
def ChecK_Host(host): #利用正側(cè)表達式匹配host,判斷是否符合IP地址的格式 并且輸入不為空
compile_ip = re.compile(
'^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{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): #導出數(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() #不要忘了關閉文件
def main(host): #主模塊
if ChecK_Host(host): #通過ChecK_Host()函數(shù)return 的布爾值進行判斷輸入的IP地址是否有誤
for port in range(1,65536): #這里可以改成1024
portscaner(host, port)
print('\n')
print('已將結(jié)果導出到 Active_Port.txt')
else:
print('IP地址無錯誤,請重新輸入?。?!')
if __name__ == '__main__':
print('<' * 12 + '單線程端口掃描器' + '>' * 12)
host = input('請輸入有效的目標IPv4地址:')
main(host)
raw_input('Press Enter to exit...') #當腳本執(zhí)行完后,等待鍵入Enter回車才退出程序(可有可無,主要是為了封裝成exe可執(zhí)行文件后,執(zhí)行完程序dos界面不自動退出)
測試結(jié)果
可見目的主機的21端口處于開放狀態(tài)

掃描結(jié)束后,將存活的端口寫入到Active_Port.txt

這里沒有用到多線程,通過循環(huán),一個一個端口進行連接,掃描速度非常慢。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python pydotplus安裝及可視化圖形創(chuàng)建教程
這篇文章主要為大家介紹了Python pydotplus安裝及可視化圖形創(chuàng)建教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
Python實現(xiàn)短網(wǎng)址ShortUrl的Hash運算實例講解
這篇文章主要介紹了Python實現(xiàn)短網(wǎng)址ShortUrl的Hash運算,較為詳細的分析了Python短網(wǎng)址運算的算法原理與相關實現(xiàn)技巧,需要的朋友可以參考下2015-08-08
Python實戰(zhàn)之多種音樂格式批量轉(zhuǎn)換
Pydub是一個基于ffmpeg的Python音頻處理模塊,封裝了許多ffmpeg底層接口,因此用它來做音樂歌曲文件格式轉(zhuǎn)換會非常方便。今天給大家介紹它的音樂文件格式轉(zhuǎn)換功能,幾乎支持所有音樂音頻格式,需要的可以參考一下2022-06-06
Python+request+unittest實現(xiàn)接口測試框架集成實例
這篇文章主要介紹了Python+request+unittest實現(xiàn)接口測試框架集成實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
python3獲取控制臺輸入的數(shù)據(jù)的具體實例
在本篇內(nèi)容里小編給大家分享的是一篇關于python3獲取控制臺輸入的數(shù)據(jù)的具體實例內(nèi)容,需要的朋友們可以學習下。2020-08-08
Python + Requests + Unittest接口自動化測試實例分析
這篇文章主要介紹了Python + Requests + Unittest接口自動化測試,結(jié)合具體實例形式分析了Python使用Requests與Unittest模塊實現(xiàn)接口自動化測試相關操作技巧,需要的朋友可以參考下2019-12-12

