Python實現(xiàn)的端口掃描功能示例
本文實例講述了Python實現(xiàn)的端口掃描功能。分享給大家供大家參考,具體如下:
一 代碼
import sys import socket import multiprocessing def ports(ports_service): #獲取常用端口對應的服務名稱 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)) #記錄打開的端口 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)建進程池,允許最多8個進程同時運行 pool = multiprocessing.Pool(processes=8) net = '192.168.0.' for host_number in map(str,range(105,106)): host = net+host_number #創(chuàng)建一個新進程,同時記錄其運行結(jié)果 results[host] = pool.apply_async(ports_scan, (host, ports_service)) print('starting '+host+'...') #關閉進程池,close()必須在join()之前調(diào)用 pool.close() #等待進程池中的進程全部執(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])
二 運行結(jié)果
starting 192.168.0.105...
==============================
192.168.0.105 ..........
80 : http
更多關于Python相關內(nèi)容感興趣的讀者可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python URL操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程》
希望本文所述對大家Python程序設計有所幫助。
相關文章
python用socket實現(xiàn)協(xié)議TCP長連接框架
大家好,本篇文章主要講的是python用socket實現(xiàn)協(xié)議TCP長連接框架,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下2022-02-02Python面試不修改數(shù)組找出重復的數(shù)字
這篇文章主要為大家介紹了不修改數(shù)組找出重復的數(shù)字Python實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05在Python的struct模塊中進行數(shù)據(jù)格式轉(zhuǎn)換的方法
這篇文章主要介紹了在Python的struct模塊中進行數(shù)據(jù)格式轉(zhuǎn)換的方法,文中還給出了C語言和Python語言的數(shù)據(jù)類型比較,需要的朋友可以參考下2015-06-06Python中的list.sort()方法和函數(shù)sorted(list)
這篇文章主要介紹了Python中的list.sort()方法和函數(shù)sorted(list),sort()是列表的方法,修改原列表使得它按照大小排序,沒有返回值,返回None2022-08-08解決AttributeError:'NoneTypeobject'?has?no?attrib
這篇文章主要介紹了解決AttributeError:?‘NoneType‘?object?has?no?attribute?‘Window‘的問題(親測有效),本文給大家介紹的非常想詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03Python使用win32com實現(xiàn)的模擬瀏覽器功能示例
這篇文章主要介紹了Python使用win32com實現(xiàn)的模擬瀏覽器功能,結(jié)合實例形式分析了Python基于win32com模塊實現(xiàn)網(wǎng)頁的打開、登陸、加載等功能相關技巧,需要的朋友可以參考下2017-07-07Python數(shù)據(jù)結(jié)構(gòu)之鏈表詳解
在順序存儲方式中,根據(jù)數(shù)據(jù)元素的序號就可隨機存取表中任何一個元素,但同時在插入和刪除運算需要移動大量的元素,造成算法效率較低。解決此缺陷的一個辦法是:對線性表采用鏈式存儲方式。本文將介紹鏈式存儲結(jié)構(gòu)的特點以及各種基本操作的實現(xiàn)。需要的可以參考一下2022-01-01