【问题标题】:Scapy ICMPv6EchoRequest sends from Scapy command prompt but NOT from within script?Scapy ICMPv6EchoRequest 从 Scapy 命令提示符发送而不是从脚本内发送?
【发布时间】:2013-10-23 04:16:03
【问题描述】:

我正在尝试从 python 脚本中发送 ICMPv6 Echo 请求。当我在 Scapy 环境中执行此过程时,它可以完美运行。我可以在 Wireshark 中看到数据包交换。但是,当我有这段代码时:

#Spacy commands
ip = IPv6()
ip.dst = "fe80::ba8d:12ff:fe42:98c8"
ip.show()
print'-----------------------------------------'
request = ICMPv6EchoRequest()
request.id=98
request.show()
print'-----------------------------------------\n'

send(request/ip) #send Echo Request w/ IPv6 Header

在我的 python 脚本中,然后调用该脚本,我得到了这个:

WARNING: Mac address to reach destination not found. Using broadcast.
WARNING: No IPv6 underlayer to compute checksum. Leaving null.
.
Sent 1 packets.

但实际上并没有发送任何数据包......有人知道我做错了什么吗?

编辑:我应该提到发送节点是虚拟 Ubuntu Linux 机器,而尝试的接收器是桥接网络适配器上的 Macbook。

【问题讨论】:

  • 以管理权限运行两者?
  • 是的,我是!我想我应该提到发送节点是虚拟 Ubuntu Linux 机器,而尝试的接收器是桥接网络上的 Macbook。

标签: python echo ping scapy


【解决方案1】:

在 Scapy 中,当您使用 / 运算符时,左侧的操作数封装或将右侧的操作数作为数据或底层放置。这是数据包中接下来会出现的内容。

你的问题是你的发送线路 -

send(request/ip)

你把它们颠倒了。这会产生一个数据包,其中 IP 层是 ICMPv6 层的数据。这就是为什么您会收到错误 WARNING: No IPv6 underlayer to compute checksum. Leaving null, 的原因,因为您实际上并没有在其中放置任何东西,因为您的图层顺序错误。

这就是你的本意。

send(ip/request)

更改那条发送线路,您应该会看到预期的结果。

【讨论】:

  • 就是这样!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2014-03-18
  • 2020-03-24
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 2017-09-04
相关资源
最近更新 更多