Python實(shí)現(xiàn)的端口掃描功能示例
本文實(shí)例講述了Python實(shí)現(xiàn)的端口掃描功能。分享給大家供大家參考,具體如下:
一 代碼
import sys
import socket
import multiprocessing
def ports(ports_service):
#獲取常用端口對(duì)應(yīng)的服務(wù)名稱(chēng)
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)容感興趣的讀者可查看本站專(zhuān)題:《Python Socket編程技巧總結(jié)》、《Python URL操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
使用matlab 判斷兩個(gè)矩陣是否相等的實(shí)例
這篇文章主要介紹了使用matlab 判斷兩個(gè)矩陣是否相等的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
Python實(shí)現(xiàn)自動(dòng)為照片添加日期并分類(lèi)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)自動(dòng)為照片添加日期并分類(lèi)的方法,涉及Python針對(duì)文件與目錄的遍歷、判斷、修改、復(fù)制及文件屬性的相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
python用socket實(shí)現(xiàn)協(xié)議TCP長(zhǎng)連接框架
大家好,本篇文章主要講的是python用socket實(shí)現(xiàn)協(xié)議TCP長(zhǎng)連接框架,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下2022-02-02
Python面試不修改數(shù)組找出重復(fù)的數(shù)字
這篇文章主要為大家介紹了不修改數(shù)組找出重復(fù)的數(shù)字Python實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
在Python的struct模塊中進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換的方法
這篇文章主要介紹了在Python的struct模塊中進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換的方法,文中還給出了C語(yǔ)言和Python語(yǔ)言的數(shù)據(jù)類(lèi)型比較,需要的朋友可以參考下2015-06-06
Python中的list.sort()方法和函數(shù)sorted(list)
這篇文章主要介紹了Python中的list.sort()方法和函數(shù)sorted(list),sort()是列表的方法,修改原列表使得它按照大小排序,沒(méi)有返回值,返回None2022-08-08
解決AttributeError:'NoneTypeobject'?has?no?attrib
這篇文章主要介紹了解決AttributeError:?‘NoneType‘?object?has?no?attribute?‘Window‘的問(wèn)題(親測(cè)有效),本文給大家介紹的非常想詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
python 實(shí)現(xiàn)語(yǔ)音聊天機(jī)器人的示例代碼
這篇文章主要介紹了python 實(shí)現(xiàn)語(yǔ)音聊天機(jī)器人的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Python使用win32com實(shí)現(xiàn)的模擬瀏覽器功能示例
這篇文章主要介紹了Python使用win32com實(shí)現(xiàn)的模擬瀏覽器功能,結(jié)合實(shí)例形式分析了Python基于win32com模塊實(shí)現(xiàn)網(wǎng)頁(yè)的打開(kāi)、登陸、加載等功能相關(guān)技巧,需要的朋友可以參考下2017-07-07
Python數(shù)據(jù)結(jié)構(gòu)之鏈表詳解
在順序存儲(chǔ)方式中,根據(jù)數(shù)據(jù)元素的序號(hào)就可隨機(jī)存取表中任何一個(gè)元素,但同時(shí)在插入和刪除運(yùn)算需要移動(dòng)大量的元素,造成算法效率較低。解決此缺陷的一個(gè)辦法是:對(duì)線(xiàn)性表采用鏈?zhǔn)酱鎯?chǔ)方式。本文將介紹鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的特點(diǎn)以及各種基本操作的實(shí)現(xiàn)。需要的可以參考一下2022-01-01

