使用原始套接字通过结构访问以太网MAC地址

时间:2018-04-14 20:43:42

标签: c linux sockets

我正在尝试在linux上创建一个数据包嗅探器。我希望能够打印源MAC和Dest MAC。我一直在寻找,大多数代码根据索引打印出以太网头中的字节。所以例如..

sock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));

bytes = recvfrom(sock, buf, 1024, 0, &saddr, &saddrsize);

struct ether_header *eth = (struct ether_header *)buf;
printf("MAC DEST: %x:%x:%x:%x:%x:%x\n", eth->ether_dhost[0], eth->ether_dhost[1], eth->ether_dhost[2], eth->ether_dhost[3], eth->ether_dhost[4], eth->ether_dhost[5],);

我想知道是否可以在不执行每个索引的情况下打印dhost?我最终想要获得src mac,dst mac,src ip,dst ip,port,protocol。所以我只想检查是否必须像上面那样完成,或者它是否更容易。

编辑:添加了套接字()

0 个答案:

没有答案