小编che*_*sty的帖子

在Linux IPPROTO_ICMP中使用非特权ping的python

根据 http://kernelnewbies.org/Linux_3.0#head-c5bcc118ee946645132a834a716ef0d7d05b282e, 我们现在可以作为非特权用户ping,我可以让它运行起来.

使用https://github.com/jedie/python-ping我修改了210行的样子

current_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.IPPROTO_ICMP)

作为root我"echo 1000 1000>/proc/sys/net/ipv4/ping_group_range"

我的团队是1000

我可以像普通用户一样运行ping.py,我可以在tcpdump中看到echo请求和echo回复

18:33:24.840291 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 269)
    127.0.0.1 > 127.0.0.1: ICMP echo request, id 38, seq 0, length 249
18:33:24.840309 IP (tos 0x0, ttl 64, id 37939, offset 0, flags [none], proto ICMP (1), length 269)
    127.0.0.1 > 127.0.0.1: ICMP echo reply, id 38, seq 0, length 249
Run Code Online (Sandbox Code Playgroud)

但ping.py没有看到回复,并说超时.

任何想法如何使这项工作?

编辑:

我正在缩小这个问题.

print "c", icmp_header, address, …
Run Code Online (Sandbox Code Playgroud)

python sockets ping icmp

5
推荐指数
1
解决办法
1647
查看次数

标签 统计

icmp ×1

ping ×1

python ×1

sockets ×1