Sniffer,关于Winpcap、Windows导致的大小端问题

对于直接定义的Ethernet头

如果直接如下操作:

会发现得到的type都是字节序反的,例如IP本应该是0x0800,变成了0x0008,显然memcpy导致的大小端问题惹得祸。
Windows抄袭了Linux的socket,提供了ntohs,把网络字节序转换成本CPU的字节序。

如下更改即可:

Leave a Reply

Your email address will not be published.