获取原始套接字需要root权限,tcp / udp没有, 所以我需要知道如何获取udp套接字并获取icmp数据。 编程语言是C,OS类似于BSD。
(换句话说,我想写一个没有root权限的ping)
答案 0 :(得分:1)
您可以在没有root权限的情况下编写UDP ping。
启用 IP_RECVERR 选项后,所有错误都会存储在 套接字错误队列,可以通过 recvmsg (2)接收 MSG_ERRQUEUE 标志设置。
我认为forge& send例程已在SOCK_DGRAM套接字上实现。 然后,访问ICMP消息的源地址:
答案 1 :(得分:0)
UDP是OSI第四层协议,ICMP也是如此。因此,您无法在UDP套接字上实现ICMP,因为其第四层协议已经固定到UDP。您可以考虑编写一个需要特权来打开原始套接字的实现。然后,您可以为应用程序或您的帐户提供正确的功能,也可以将可执行文件SUID位翻转以使其以root用户身份运行。
答案 2 :(得分:-2)
所以,呃,绕过这个要求是微不足道的,你觉得它还会存在吗?
它意味着提供一些安全性,所以它不是非常容易的。
我不认为可以做到。