我正在尝试在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。所以我只想检查是否必须像上面那样完成,或者它是否更容易。
编辑:添加了套接字()