我正在尝试通过C代码使用以太网框架构建原始数据。我构建了一个数据包(包括以太网 -> ip-> udp-> DHCP协议),并通过WiFi接口发送。我通过打印出来的Wireshark遵循:以太网2->框架检查顺序 ->不正确,应为xxx。
我没有在数据包中构建FCS数据,而是将字段留为空白。现在,我在C中找不到任何简单的功能/代码。我发现的所有代码都给了我不好的输出。
有人以前做过它,可以分享如何在以太网包中实现FC?
预先感谢您
修复:似乎FCS计算只是可选的,我添加了IP校验和计算,这足以让DHCP通过。
谢谢。
尝试:
#define BYTE unsigned char
int fcs(BYTE* paquete,int n){
int byte,sum=0;
n++;
for(int j=0;j<=n;j++){
byte=paquete[j];
for(int i=0;i<8;i++){
if(j!=n && i<7){
sum = sum+(byte & 0x01);
byte = byte >> 1;
}
}
}
return sum;
}