Scapy,這個由Python開發的工具,在網路掃描攻擊領域具有顯著的影響力,被眾多優秀的網路掃描攻擊工具所採用。它允許用戶在自己的程序中發送、監聽和解析網路數據包,相較於Nmap,Scapy更為底層,能夠更直觀地洞察網路中的掃描攻擊行為。
與Nmap相比,Scapy僅展示收到的數據包,而不會對數據包的含義進行解釋。
以去醫院體檢為例,醫院會提供身體各項指標的檢查結果,而醫生會根據結果給出診斷。Nmap就像醫生,它會根據經驗給出結果;而Scapy則像體檢設備,它只提供檢查結果,如果你是經驗豐富的醫生,這些結果會比醫生的建議更有價值。
Scapy的主要功能包括:發送數據包(如eth, ip, tcp, udp, dhcp, http等),接收數據包,以及數據包解析。
1. 發送數據包:Scapy支持發送單一或同時發送和接收數據包。
1.1 只發送:
1.2 發送並接收:
2. 接收數據包:sr()函數是Scapy的核心,它返回兩個列表,分別是收到應答的包和未收到應答的包。
sniff()函數用於捕獲經過本機網卡的數據包,類似於Tcpmp的使用。
以下是一些示例代碼:
示例一:監聽本地網卡,過濾常用郵箱埠的流量,通過回調函數列印數據包內容。
示例二:多線程,主機存活探測工具,掃描整個IP段,輸出存活主機列表。
示例三:arp投毒代碼邏輯。
示例四:抓取http相關報文。
示例五:實現簡單的ping掃描。