- 使用send发送无线数据包
send()利用自身的无线网卡来发送无线数据包,用法与有线发包一致(实际上已经屏蔽了IP层以下的内容),使用简单,但只能发送三层以上的数据包,无法对MAC层及PHY层进行定制。
例如:
ip_pkt = IP(src='1.1.1.1',dst='2.2.2.2')
data = Raw('111222333444')
packet = ip_pkt/data
send(packet)
- 使用sendp发送无线数据包
相比也send(), sendp()发送的无线数据包则灵活性大很多,从PHY到MAC都需要自己构造,相对复杂,但也灵活了很多。好在scapy已经定义好了足够的封装,因此对于一般的使用来说,调用scapy封装好的对应类即可。例如:
client = 00:11:22:33:44:55
bssid = 55:44:33:22:11:00
packet = RadioTap()/Dot11(type=0,subtype=12,addr1=client,
addr2=bssid,addr3=bssid)/Dot11Deauth(reason=7)
sendp(packet)
代码来源:MATEN的博客