21

有没有人在 PlanetLab 节点(运行 Fedora 12)上成功使用Scapy

我知道安全的原始套接字限制,但似乎我可以通过设置通过 Scapy 发送数据包conf.L3socket=L3RawSocket。至于数据包的接收,我无法让 Scapy 工作,所以我只使用tcpdump

TCPICMP似乎工作:

  • ICMP 回显请求得到回显答复
  • 具有低 TTL 的 ICMP 回显请求会返回超时消息
  • TCP SYN 数据包返回一个 TCP RST 数据包
  • 具有低 TTL 的 TCP 数据包收到超时消息

UDP不会:

  • 发送到关闭端口的 UDP 数据包会触发 ICMP 端口不可达消息,但此消息不会返回到我的 sliver。Tcpdump 只看到 UDP 数据包。
  • 对于沿其路径过期的 UDP 数据包也是如此。

为了接收这些 ICMP 数据包,是否需要设置任何其他参数?

4

1 回答 1

1

不确定这是否会有所帮助,但根据我的经验,为了在 scapy 中接收数据包,您必须使用 sr 或 sr1 方法:

sr1(IP(dst="192.168.1.8")/UDP(dport=60112))

开始发射:...完成发送 1 个数据包。收到4个包,得到1个答案,剩下0个包

<IP  version=4L ihl=5L tos=0xc0 len=56 id=47804 flags= frag=0L ttl=64 proto=icmp chksum=0x6274 src=192.168.1.8 dst=192.168.1.2 options='' |<ICMP  type=dest-unreach code=3 chksum=0x59eb unused=0 |<IPerror  version=4L ihl=5L tos=0x0 len=28 id=1 flags= frag=0L ttl=64 proto=udp chksum=0x1dfc src=192.168.1.2 dst=192.168.1.8 options='' |<UDPerror  sport=domain dport=60112 len=8 chksum=0xb803 |>>>>

sr() 函数用于发送数据包和接收答案。该函数返回几个数据包和答案,以及未回答的数据包。函数 sr1() 是一种变体,它只返回一个响应发送的数据包(或数据包集)的数据包。-资源

于 2013-10-25T16:05:26.900 回答