2014-03-19 31 views
0

我正在使用在服务器端执行的scapy命令和客户端上的另一个脚本编写python两个脚本。在客户端,脚本将UDP数据包发送到服务器上的一个封闭端口。我的脚本的目的是测试客户端是否接受从服务器接收到的无效ICMP数据包。在服务器端,我要侦听传入流量并响应每个具有ICMP端口不可达的UDP数据包,并且每次我将修改ICMP数据包中的字段(假值)以测试数据包是否已收到。我的问题是:当我修改原始字段(有效载荷)时,客户端是否会接受此ICMP数据包是正常的?我的意思是在原始领域没有任何控制。我希望我的问题很清楚。非常感谢你。ICMP目标不可达(端口不可达)数据包中的Raw字段无效

回答

0

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

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

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