[Network][ C ] MAC Address

MAC Address (String > Hex data)


  • 문자열로 이루어진 MAC Address를 Hex(16진수)로 바꾸는 함수를 만든다.
  • 이후 사용하기 쉽게 함수로 만든다.

함수 구조

void mac_to_hex (char * mac, unsigned int * hex_mac)

인자 설명

char * mac : 일정 형식( Ex. 11:22:33:44:55:66 )으로 이루어진 문자열
unsigned int * hex_mac : Hex 형태로 Mac Addresss를  저장할 공간


Code

#include <stdio.h>
#include <pcap.h>

#define ETHER_ADDR_LEN 6

void mac_to_hex (char * mac, unsigned int * hex_mac){
    int i = 0, j = 0;
    char buf[2];        // Save before change Hex

    for (i = 0; i < (ETHER_ADDR_LEN * 2) + 5; i++){
        if(mac[i] == ':' || mac[i] == '-' || mac[i] == ' '){
            sscanf(buf, "%x", (hex_mac+j));     // Change String > Hex
            j++;
        }
        else{
            buf[i % 2] = mac[i];                // Save Hex data
        }
    }
    sscanf(buf, "%x", (hex_mac+j));
}

int main(void){
    unsigned int bymac[ETHER_ADDR_LEN]; // Hex MAC Save here
    char * mac = "11 22 33 44 55 66";   // string MAC save here
    mac_to_hex(mac, bymac);

/* ================TESTing================ */
    int i = 0;
    for(i = 0; i < ETHER_ADDR_LEN - 1; i++){
        printf("%x:", bymac[i]);
    }
    printf("%x\n", bymac[i]);
/* ================TESTing================ */
    return 0;
}

 ∗ 11번째 줄이 MAC Address 구분 기호를 필터링 하는 부분

문자열로 이루어진  MAC 주소를 16진수로 바꾸어 Packet에 넣기 쉽게 만들었다.

글의 문제가 있다면 댓글을 달아 주세요.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.