大佬教程收集整理的这篇文章主要介绍了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,请注明来意。