2016-12-15 1 views
-2

C 코드를 통해 이더넷 프레임으로 원시 데이터를 작성하려고합니다. 패킷 (이더넷 -> IP -> UDP -> DHCP 프로토콜 포함)을 작성하고 WiFi 인터페이스를 통해 보냈습니다. 나는 프린트 된 Wireshark를 따라 갔다. Ethernet2 -> Frame Check Sequence -> Incorrect가 XXX이어야한다.이더넷 원시 데이터 및 프레임 체크 시퀀스

필자의 패킷에 FCS 데이터를 작성하지 않았으므로 필드를 비워 둡니다. 이제 C에서 간단한 함수/코드를 찾을 수 없습니다. 내가 찾은 모든 코드는 나에게 나쁜 결과를 주었다.

누군가 이전에 해본 적이 있고 이더넷 패킷에 FCS를 구현하는 방법을 공유 할 수 있습니까?

사전에

+0

제공주십시오 [MCVE] (http://stackoverflow.com/help/mcve) –

+0

@MichaelFoukarakis이 더 떨어져 주제 또한 라이브러리에 대한 요청 모양을 . – Olaf

+0

대부분의 이더넷 MAC은 하드웨어로 FCS를 생성합니다. 그러나 일반 컴퓨터의 사용자 공간 프로그램은 일반적으로 링크 계층 패킷을 작성할 수 없습니다. 원시 소켓은 네트워크 계층 (IP)에서 시작합니다. 따라서 임베디드 시스템이나이 작업을위한 커널 모듈이 있다고 가정합니다. 관련성이 있으며 적절한 도움을 위해 질문에 언급되어야합니다. –

답변

0

FIX 감사합니다 : FCS 계산에만 선택적 것 같다, 내가 대신 IP 체크섬 계산을 추가하고는 DHCP가 통과하기에 충분했다.

감사합니다.

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; 
} 
관련 문제