Python實(shí)現(xiàn)的端口掃描功能示例
本文實(shí)例講述了Python實(shí)現(xiàn)的端口掃描功能。分享給大家供大家參考,具體如下:
一 代碼
import sys
import socket
import multiprocessing
def ports(ports_service):
#獲取常用端口對(duì)應(yīng)的服務(wù)名稱
for port in list(range(1,100))+[143,145,113,443,445,3389, 8080]:
try:
ports_service[port] = socket.getservbyport(port)
except socket.error:
pass
def ports_scan(HOST, ports_service):
ports_open = []
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#sock.settimeout(60)
except socket.error:
print('socket creation error')
sys.exit()
for port in ports_service:
try:
#嘗試連接指定端口
sock.connect((HOST,port))
#記錄打開(kāi)的端口
ports_open.append(port)
sock.close()
except socket.error:
pass
return ports_open
if __name__=='__main__':
m = multiprocessing.Manager()
ports_service = dict()
results = dict()
ports(ports_service)
#創(chuàng)建進(jìn)程池,允許最多8個(gè)進(jìn)程同時(shí)運(yùn)行
pool = multiprocessing.Pool(processes=8)
net = '192.168.0.'
for host_number in map(str,range(105,106)):
host = net+host_number
#創(chuàng)建一個(gè)新進(jìn)程,同時(shí)記錄其運(yùn)行結(jié)果
results[host] = pool.apply_async(ports_scan, (host, ports_service))
print('starting '+host+'...')
#關(guān)閉進(jìn)程池,close()必須在join()之前調(diào)用
pool.close()
#等待進(jìn)程池中的進(jìn)程全部執(zhí)行結(jié)束
pool.join()
#打印輸出結(jié)果
for host in results:
print('='*30)
print(host,'.'*10)
for port in results[host].get():
print(port, ':', ports_service[port])
二 運(yùn)行結(jié)果
starting 192.168.0.105...
==============================
192.168.0.105 ..........
80 : http
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python URL操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python中使用tkFileDialog實(shí)現(xiàn)文件選擇、保存和路徑選擇
這篇文章主要介紹了Python中使用tkFileDialog實(shí)現(xiàn)文件選擇、保存和路徑選擇,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
Python進(jìn)階學(xué)習(xí)之pandas中read_csv()用法詳解
python中數(shù)據(jù)處理是比較方便的,經(jīng)常用的就是讀寫文件,提取數(shù)據(jù)等,本文主要介紹其中的一些用法,這篇文章主要給大家介紹了關(guān)于Python進(jìn)階學(xué)習(xí)之pandas中read_csv()用法的相關(guān)資料,需要的朋友可以參考下2024-03-03
python代碼實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python代碼實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
tensorflow的ckpt及pb模型持久化方式及轉(zhuǎn)化詳解
今天小編就為大家分享一篇tensorflow的ckpt及pb模型持久化方式及轉(zhuǎn)化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
python實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲(pygame版)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)pygame版的飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02

