使用 Scapy 嗅探本地主机上的数据包
Sniffing packets on localhost with Scapy
我正在学习如何使用 scapy 嗅探数据包。我已经在端口 50420 上的本地主机上设置了一个简单的回显服务器 运行。
然后我在终端中输入以下行,以便在通过该端口发送流量时嗅探该端口上的数据包:
p = sniff(filter = 'port 50420')
但是,尽管数据流正确,但没有捕获任何数据包。我已经验证嗅探适用于不使用本地主机的其他流量。如果可能的话,我如何使用 Scapy 嗅探此本地主机流量?
通过该行,您正在嗅探端口 50420 上的流量,但您应该做更多的事情。嗅探数据包时应该添加一个跳转函数
sniff(filter="port 50420",prn=myFunction)
并写入 myFunction:
def myFunction(pkt):
print "Packet!"
您可能需要指定接口。在Linux,
sniff(filter="port 50420",iface="lo")
当然要使用数据包,您需要使用 "prn" 选项指定回调函数(如其他回复中所述),或者您可以将数据包保存到列表中以备后用,例如
packet_list = sniff(filter="port 50420",iface="lo")
first_packet = packet_list[0]
为了更加确定,您可以将过滤器设置为 "port 50420 and host 127.0.0.1"
我正在学习如何使用 scapy 嗅探数据包。我已经在端口 50420 上的本地主机上设置了一个简单的回显服务器 运行。
然后我在终端中输入以下行,以便在通过该端口发送流量时嗅探该端口上的数据包:
p = sniff(filter = 'port 50420')
但是,尽管数据流正确,但没有捕获任何数据包。我已经验证嗅探适用于不使用本地主机的其他流量。如果可能的话,我如何使用 Scapy 嗅探此本地主机流量?
通过该行,您正在嗅探端口 50420 上的流量,但您应该做更多的事情。嗅探数据包时应该添加一个跳转函数
sniff(filter="port 50420",prn=myFunction)
并写入 myFunction:
def myFunction(pkt):
print "Packet!"
您可能需要指定接口。在Linux,
sniff(filter="port 50420",iface="lo")
当然要使用数据包,您需要使用 "prn" 选项指定回调函数(如其他回复中所述),或者您可以将数据包保存到列表中以备后用,例如
packet_list = sniff(filter="port 50420",iface="lo")
first_packet = packet_list[0]
为了更加确定,您可以将过滤器设置为 "port 50420 and host 127.0.0.1"