gpt4 book ai didi

c - 用C发送ARP包

转载 作者:太空狗 更新时间:2023-10-29 16:12:39 25 4
gpt4 key购买 nike

我想知道如何用 C 语言发送 ARP 数据包,sockets 的 sent 和 sendto 函数通过 TCP 或 UDP 发送,但我没有找到如何使用 ARP。

最佳答案

在这种情况下,您必须使用原始套接字,或者您可以使用一些库来简化此操作,推荐的库是 libpcap,下面我写了一个使用 libpcap 发送数据包的简单示例。

const int packet_size = 40; // change the value for real size of your packet
char *packet = (char *) malloc(packet_size)
pcap_t *handle = NULL;
char errbuf[PCAP_ERRBUF_SIZE], *device = NULL;
if ((device = pcap_lookupdev(errbuf)) == NULL) {
fprintf(stderr, "Error lookup device", device, errbuf);
exit(1);
}
if ((handle = pcap_open_live(device, BUFSIZ, 1, 0, errbuf)) == NULL) {
fprintf(stderr, "ERRO: %s\n", errbuf);
exit(1);
}
// here you have to write your packet bit by bit at packet
int result = pcap_inject(handle, packet, packet_size);

在这种情况下,您必须创建所有数据包主体,请查看:http://www.cse.ohio-state.edu/cgi-bin/rfc/rfc1293.html有关 ARP 数据包的信息,请访问 http://en.wikipedia.org/wiki/Ethernet_frame有关以太网帧的信息

关于c - 用C发送ARP包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21804015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com