Python_網絡攻擊之端口


 1 #絕大多數成功的網絡攻擊都是以端口掃描開始的,在網絡安全和黑客領域,端口掃描是經常用到的技術,可以探測指定主機上是否
 2 #開放了指定端口,進一步判斷主機是否運行了某些重要的網絡服務,最終判斷是否存在潛在的安全漏洞,從一定意義上將也屬於系統運維的范疇
 3 
 4 #端口掃描器程序:模擬端口掃描器的工作原理,並采用多進程技術提高掃描速度
 5 import socket
 6 import sys
 7 import multiprocessing
 8 
 9 def ports(ports_serve):
10     #獲取常用端口對應的服務名稱
11     for port in list(range(1,100))+[143,145,113,443,445,3389,8080]:
12         try:
13             ports_serve[port]=socket.getservbyport(port)
14         except socket.error:
15             pass
16 
17 def ports_scan(host,ports_service):
18     ports_open=[]
19     try:
20         sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
21         #超時時間的不同會影響掃描結果的精確度
22         socket.timeout(0.01)
23     except socket.error:
24         print('socket creation error')
25         sys.exit()
26     for port in ports_service:
27         try:
28             #嘗試連接指定端口
29             sock.connect((host,port))
30             #記錄打開的端口
31             ports_open.append(port)
32             sock.close()
33         except socket.error:
34             pass
35     return ports_open
36 
37 if __name__ == '__main__':
38     m=multiprocessing.Manager()
39     ports_service=dict()
40     results=dict()
41     ports(ports_service)
42     #創建進程池,允許最多8個進程同時運行
43     pool = multiprocessing.Pool(processes=8)
44     net = '10.2.1.'
45     for host_number in map(str,range(8,10)):
46         host = net + host_number
47         #創建一個新進程,同時記錄其運行結果
48         results[host] = pool.apply_async(ports_scan,(host,ports_service))
49         print('starting '+host+'...')
50     #關閉進程池,close()必須在join()之前調用
51     pool.close()
52     #等待進程池中的進程全部執行結束
53     pool.join()
54 
55     #打印輸出結果
56     for host in results:
57         print('='*30)
58         print(host,'.'*10)
59         for port in results[host].get():
60             print(port,':',ports_service[port])
61 
62 #Python擴展庫netaddr提供了大量可以處理網絡地址的類和對象,例如netaddr.valid_ipv4(addr)可以判斷addr時否為合法IPv4地址
63 #netaddr.IPNetwork('10.2.1.0/24')和netaddr.IPRange('10.2.1.0','10.2.1.255')都可以用來生成包含介於10.2.1.0到10.2.1.255之間的IP地址的迭代對象。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM