【问题标题】:Invalid field Raw in an ICMP destination unreachable (port unreachable) packetICMP 目标不可达(端口不可达)数据包中的无效字段 Raw
【发布时间】:2014-04-25 12:19:47
【问题描述】:

我正在使用 scapy 编写两个 python 脚本,一个在服务器端执行,另一个在客户端执行。在客户端,脚本将 UDP 数据包发送到服务器上的封闭端口。我的脚本的目的是测试客户端是否会接受从服务器接收到的无效 ICMP 数据包。在服务器端,我将嗅探传入的流量并以无法访问的 ICMP 端口响应每个 UDP 数据包,并且每次我都会修改 ICMP 数据包中的一个字段(假值)以测试是否收到数据包。我的问题是:当我修改原始字段(有效负载)时,客户端会接受这个 ICMP 数据包是否正常?我的意思是没有对 Raw 字段进行控制。我希望我的问题很清楚。非常感谢。

【问题讨论】:

    标签: python udp scapy icmp


    【解决方案1】:

    好吧,至少对于 ID 和序列字段,它们可以是任何 16 位编号的组合,内核将接受数据包并将其转发给所有已注册的 ICMP 套接字处理程序。

    但是如果校验和字段不正确,接收内核将不会将标头传递给处理程序(但它会链接层嗅探器)。此外,根据我的测试,如果您将类型/代码标志更改为已知数字的不正确组合,或协议未定义的数字,接收内核不会将其传递给处理程序(但链路层嗅探器仍然可以看到)。

    注意我没有使用 scapy,只是直接使用 python/socket 代码,我的系统是 Linux。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      相关资源
      最近更新 更多