一.Scapy抓包函数:sniff()
1.sniff()函数的完整格式:
sniff(filter=" ",iface=" ",prn=function,count=N) (1)filter:对数据包进行过滤。 (2)iface:指定网卡。 (3)prn:对数据包进行处理。 (4)count:抓几个包
2.filter使用规则:(伯克利包过滤机制)
(1)Type:表示指代的对象,例如IP地址,子网(net)或者端口(port) (2)Dir:限制包传输的方向,src(源地址)和dst(目的地址) (3)Proto:限定表示与数据包匹配的协议类型,常见的有Ether,IP,TCP,ARP
3.Lambda表达式(第三个prn参数的处理方法):
sniff(filter="icmp",prn=lambda x:x.summary())
这里prn的lambda表达式表示将抓包信息输出。
4.回调函数(当prn的处理复杂时使用)
5.count(设置抓包的个数)
sniff(count=10)
6.练习
设计一个综合性的监听器,它会在网卡eth0监听源地址或目的地址为“192.168.1.1”的icmp数据包并打印出来,当收到了3个这样的数据包就会停止监听。
sniff(filter="host 192.168.1.1 and icmp",prn=lambda x:x.summary(),count=3)
|