背景
scapy是python的内置的发包工具,其中还包括了组包,抓包等功能。
问题&方法
在linux环境下,通过scapy发包,tcpdump抓包结合使用也是非常方便,另外tcpdump可以结合"-Q"参数来指定是抓去发出去的包还是接收的包。
上面说到,scapy也有自己的抓包功能,其sniff方法就可以实现抓包功能,其中参数可以指定数量,过滤器,接口名等参数。
那么问题来了,在我尝试使用sniff方法来抓包的时候,发现无法指定发出的包还是接收包,经过查询scapy的官网文档,发现sniff在filter中除了可以过滤src dst等信息,还可以加inbound或者outbound来指定收、发的包,具体使用:
sniff(iface='ens8',filter='inbound and dts 00:11:22:33:44:55'
另外,我们知道scapy组包会生成一个pkt对象,类方法中有很多可以显示包的格式,内容等方法,例如show,但是如果我们想生成生成我们手动发送的字符串格式,可以调用command的内置方法
pkt.command()