【发布时间】:2017-07-27 02:55:53
【问题描述】:
给定一个标准的 Mac 地址“xx:xx:xx:xx:xx:xx”它需要采用什么格式才能使用 libpcap 的数据包注入发送?
我将它加载到 srcMac 只是一个字符的以太网框架中:
memcpy(ðernet.ether_src, srcMac, sizeof(ethernet.ether_src));
但是在wireshark中地址不正确。 Wireshark 中可见的 Mac 地址会根据字符串的内容而变化,因此不会被默认地址或其他任何内容覆盖。
【问题讨论】:
-
天真和不知情的答案,但不是mac地址不是字符串吗?我以为它们只是以这种方式显示(实际上只是一个位字符串,但显示为十六进制)。你可能会使用一个字符数组,
-
我不完全确定 libpcap 的要求,但 MAC 地址在以太网帧中的线路上表示为六个连续的八位字节(字节)。 17 个字符的冒号分隔形式(或有时空格或连字符分隔)只是人类可读性的约定。
-
"其中 srcMac 只是一个字符"请在此处更具体地说明
srcMac的定义和初始化方式。 -
libpcap 很可能使用六个无符号字符的数组来保存 MAC 地址。
-
另请注意,要使用的字节顺序是网络字节顺序(Big Endian)。
标签: c network-programming mac-address libpcap