Python 與網路安全:最佳拍檔
Python 憑藉其簡潔的語法和豐富的庫支援,成為進行網路安全測試和加固的理想選擇。下面,我們將深入幾個實用場景,看看 Python 如何幫助我們成為自家網路安全的守護者。
1. 網路監控:Scapy 的妙用
Scapy 是一個能讓網路封包操作變得輕而易舉的庫。利用它,你可以編寫指令碼來監控網路流量,識別出任何不速之客。
from scapy.all import * def packet_inspection(packet): if packet.haslayer(ARP) and packet[ARP].op == 1: # ARP 請求 print(f"ARP Request from {packet[ARP].psrc} to {packet[ARP].pdst}") sniff(filter="arp", prn=packet_inspection)
上述程式碼片段展示瞭如何監聽 ARP 請求,這是檢測 ARP 欺騙攻擊的初步步驟。透過擴充套件,你可以構建更復雜的監控系統,自動報告可疑活動。
2. 埠掃描:Nmap 與 Python 的組合拳
想要了解哪些服務對外開放且可能成為攻擊入口?python-nmap 提供了呼叫 Nmap 的介面,讓你能用 Python 進行高階網路掃描。
import nmap nm = nmap.PortScanner() nm.scan(hosts='192.168.1.0/24', arguments='-p 22,80,443 --open') # 掃描指定埠 for host in nm.all_hosts(): print(f"Host: {host}") for proto in nm[host].all_protocols(): lport = nm[host][proto].keys() print(f"Open ports for {proto}: {', '.join(str(port) for port in lport)}")
這段指令碼能幫助你快速識別區域網內開放了 22、80、443 埠的裝置,提醒你及時關閉不必要的服務,或採取其他防護措施。
3. 密碼強度檢測:Python 的細緻關懷
別忘了,弱密碼可是網路安全的大敵。編寫一個簡單的指令碼,使用如 bcrypt
或 passlib
庫,就能批次檢測 WiFi 和其他服務的密碼強度。
from passlib.hash import sha256_crypt def check_password_strength(password): if len(password) < 8: return "Weak" if sha256_crypt.verify("commonPassword", password): return "Very Weak (Common Password)" # 可新增更多複雜度檢查邏輯 return "Strong" passwords_file = "passwords.txt" # 假設的密碼檔案 with open(passwords_file, 'r') as file: for line in file: password = line.strip() strength = check_password_strength(password) print(f"Password: {password}, Strength: {strength}")
透過這樣的指令碼,你可以批次檢查並改進家庭網路中所有裝置和服務的登入密碼,遠離弱口令的風險。
結語
Python 為我們提供了一整套工具箱,讓我們能在數字世界裏遊刃有餘地維護自家網路的安全。記得,網路安全不僅僅關乎技術防範,更重要的是持續的警惕和適時的知識更新。希望今天的分享能為你家的數字大門再加一把鎖,讓網路生活更加安心!