我正在尝试使用 WinPCap 获取和解析以太网标签(目标地址、源地址、类型/长度字段)。
我主要是从 WinPCap SDK 复制/粘贴。我正在尝试将 WinPCap 数据包数据(在 pkt_data 中)存储在一个名为 ethernet 的结构中,该结构包含目标地址 [6 字节]、源地址 [6 字节]、类型/长度字段(短整数)和数据包长度(整数)。
我认为 pkt_data 与前 6 个字节作为目标地址对齐,接下来的 6 个字节作为源地址,后面的两个作为类型/长度字段,但我不确定。
有谁知道 WinPCap 在此示例中存储的标签的确切字节顺序?
/* If device is open, acquire attributes from packet */
if( ( res = pcap_next_ex( fp, &header, &pkt_data)) >= 0)
{
if(res != 0)
{
/* Acquire the length of the capture */
ethernet->length = header->caplen;
/* Acquire destination MAC address */
for (i = 0; i < 6; i++)
ethernet->destAddress[i] = pkt_data[i];
/* Acquire source MAC address */
for ( i = 6; i < 12; i++ )
ethernet->srcAddress[i] = pkt_data[i];
/* Acquire etherType type/length designation field */
ethernet->type = ( pkt_data[12] | pkt_data[13] );
/* Acquire the remaining data of the packet */
for ( i = 14; (i < header->caplen + 1); i++ )
ethernet->data[i - 14] = pkt_data[i];
}
/* Device error: cannot read from packet */
else if(res == -1)
printf("Error reading the packets: %s\n", pcap_geterr(fp));
}