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扫描。