Troubleshooting

FAQ

I can’t sniff/inject packets in monitor mode.

使用监视模式因平台而异.

  • Windows或* BSD或conf.use_pcap = Scapy必须以不同的方式调用True libpcap ,以便在监视模式下创建套接字. 您将需要将monitor=True传递给打开套接字的任何调用( sendsniff …)或您自己创建的Scapy套接字( conf.L2Socket …)

  • 本机Linux(禁用了pcap):您应该自行将接口设置为监视模式. Scapy提供了实用的功能: set_iface_monitorget_iface_mode (仅适用get_iface_mode Linux),它们可以使用(它们对iwconfig进行系统调用,并将重新启动适配器).

如果您使用的是Npcap:请注意,Npcap npcap-0.9983早在2019年就打破了802.11 util.它尚未修复(自Npcap 0.9994起),因此,请同时使用npcap-0.9982.exe

Note

许多适配器不支持监视模式,尤其是在Windows上,否则可能会错误地报告标头. 有关此内容,请参阅Wireshark文档

如果您的适配器例如适用于Wireshark,但不适用于Scapy,我们将竭尽所能,请随时报告问题.

My TCP connections are reset by Scapy or by my kernel.

内核不知道Scapy在背后做了什么. 如果Scapy发送一个SYN,目标将回复一个SYN-ACK,并且您的内核看到了它,它将回复一个RST. 为避免这种情况,请使用本地防火墙规则(例如,NetFilter for Linux). Scapy不介意本地防火墙.

I can’t ping 127.0.0.1. Scapy does not work with 127.0.0.1 or on the loopback interface

回送接口是一个非常特殊的接口. 经过它的数据包并没有真正组装和拆卸. 内核将数据包路由到其目的地,同时仍将其存储在内部结构中. 使用tcpdump -i lo看到的内容只是一个伪造品,使您认为一切正常. 内核不知道Scapy在背后做了什么,因此在环回接口上看到的内容也是伪造的. 除了这一点,它不是来自本地结构. 因此内核将永远不会收到它.

为了与本地应用程序对话,您需要使用PF_INET / SOCK_RAW套接字而不是PF_PACKET / SOCK_RAW(或Linux以外的其他系统上的等效项),在上一层上构建数据包:

>>> conf.L3socket
<class __main__.L3PacketSocket at 0xb7bdf5fc>
>>> conf.L3socket=L3RawSocket
>>> sr1(IP(dst="127.0.0.1")/ICMP())
<IP  version=4L ihl=5L tos=0x0 len=28 id=40953 flags= frag=0L ttl=64 proto=ICMP chksum=0xdce5 src=127.0.0.1 dst=127.0.0.1 options='' |<ICMP  type=echo-reply code=0 chksum=0xffff id=0x0 seq=0x0 |>>

Graphs are ugly/fonts are too big/image is truncated.

快速修复:使用png格式:

>>> x.graph(format="png")

升级到最新版本的GraphViz.

尝试提供不同的DPI选项(例如50、70、75、96、101、125):

>>> x.graph(options="-Gdpi=70")

如果有效,则可以使其永久不变:

>>> conf.prog.dot = "dot -Gdpi=70"

您也可以将此行放入~/.scapy_startup.py文件中

Getting help

常见问题在FAQ中得到解答.

如果您需要其他帮助,请查看:

scapy.ml(at)secdev.orgarchiveRSS,NNTP )上也有一个低流量的邮件列表. 通过发送邮件到scapy.ml-subscribe(at)secdev.org .

鼓励您发送问题,错误报告,建议,想法,Scapy的酷用法等.