我正在寻找一种以编程方式(用C语言)在Linux用户空间应用程序中发送免费ARP消息的方法。我注意到在以下位置的procfs中有一些用于配置ARP的文件

/proc/sys/net/ipv4/conf/<interface_name>

有没有办法通过对相应网络接口(interface)的ioctl调用来做到这一点?

最佳答案

使用scapy:

from scapy.all import *

SELF_MAC = '02:02:02:02:02:02'    # fill in with your MAC address
BCAST_MAC = 'ff:ff:ff:ff:ff:ff'

def create_ARP_request_gratuituous(ipaddr_to_broadcast):
    arp = ARP(psrc=ipaddr_to_broadcast,
              hwsrc=SELF_MAC,
              pdst=ipaddr_to_broadcast)
    return Ether(dst=BCAST_MAC) / arp

# and then call sendp() with the result

关于c - 发送免费的ARP消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17029120/

10-12 20:43