[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에 넣기 쉽게 만들었다.

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.