程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了python非特权ICMP大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决python非特权ICMP?

开发过程中遇到python非特权ICMP的问题如何解决?下面主要结合日常开发的经验,给出你关于python非特权ICMP的解决方法建议,希望对你解决python非特权ICMP有所启发或帮助;

Ping程序安装为setuID root。这样,任何用户都可以使用该程序,并且仍然能够打开原始套接字。

打开原始套接字后,通常会删除根特权。

通常,您需要使用原始套接字才能正确执行ICMP,并且通常会限制原始套接字。因此,这根本不是python的错。

关于上面有关ICMP的内容,显然许多实现实际上并没有很好地支持这些标志组合。因此,大多数实现可能仅使用它们“了解”在大多数/所有体系结构上的工作方式。

解决方法

答案通常归结为“使用具有root特权的第三方模块”或“使用系统的ping命令并解析输出”。在本地方法中,icmplib和m.
Cowles和J.
Diemer的ping.py明确提到了对root特权的需求,以及scapy
手册。

因此,从这一方面来说,在本地发送没有特殊特权的ICMP ping似乎是不可能的。system
ping命令确实以某种方式进行管理,但其手册页并未说明如何进行。另一方面,icmp的手册页似乎说有可能:

非特权ICMP
     可以使用SOCK_DGRAM套接字类型打开ICMP套接字,而无需
     需要root特权。内容简介如下:

     套接字(AF_INET,SOCK_DGRAM,IPPROTO_ICMP)

     面向数据报的ICMP套接字提供了部分可用功能-
     能够原始ICMP套接字。仅IMCP请求以下消息
     可以发送以下类型:ICMP_ECHO,ICMP_TSTAMP或ICMP_MASKREQ。

因此,至少根据icmp看来,这是允许的。那么,为什么所有的python工具都无法做到这一点呢?python工具是否太通用,并且希望特权套接字上的任何工作都可以特权?是否可以在C中编写一个可以在没有root特权的情况下ping的ping函数,并以此扩展python?有人这样做吗?我只是误解了这个问题吗?

大佬总结

以上是大佬教程为你收集整理的python非特权ICMP全部内容,希望文章能够帮你解决python非特权ICMP所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。