我正在尝试通过C代码使用以太网帧构建原始数据。 我构建了一个数据包(包括以太网 - > IP-> UDP-> DHCP协议)并通过WiFi接口发送。我通过Wireshark跟踪它打印出来: 以太网2 - >帧校验序列 - >不正确,应该是XXX。
我没有在我的数据包中构建FCS数据,我将该字段留空。 现在,我在C中找不到任何简单的函数/代码。我发现的所有代码都给我带来了不好的结果。
之前有人做过,可以分享如何在以太网数据包中实现FCS吗?
提前谢谢
答案 0 :(得分:1)
FIX:似乎FCS计算只是可选的,我添加了IP校验和计算,这足以让DHCP通过。
感谢。
答案 1 :(得分:0)
尝试:
#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;
}