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