system 함수 에서 find 명령어사용
현재 winpcap을 이용한 arp spoofing 탐지 후 방어하는 프로그램을 제작중에 있습니다. 막히는 부분이
system 함수에서 cmd의 arp -a | find "보낸자MAC주소" 명령어를 주어
중복되는 MAC테이블을 찾기를 만들려하는데 %02x 구문이 안먹히네요... 무엇이 잘못되었는지 가르켜주시면 감사하겠습니다.
그리고 언어적으로 방어방법이 있으면 소개좀 부탁드리겠습니다.
-----------------소스-----------------------
printf("보낸자 MAC= %02x:%02x:%02x:%02x:%02x:%02x\n",arp_h->ar_sha[0], arp_h->ar_sha[1],
arp_h->ar_sha[2], arp_h->ar_sha[3], arp_h->ar_sha[4], arp_h->ar_sha[5],arp_h->ar_sha[6]);
printf("보낸자 IP = %d.%d.%d.%d\n",arp_h->ar_sip[0],arp_h->ar_sip[1],arp_h->ar_sip[2],arp_h->ar_sip[3]);
system("arp -a | find \"%02x:%02x:%02x:%02x:%02x:%02x\"",arp_h->ar_sha[0], arp_h->ar_sha[1],
arp_h->ar_sha[2], arp_h->ar_sha[3], arp_h->ar_sha[4], arp_h->ar_sha[5],arp_h->ar_sha[6]);
system 함수는 형식화된 문자열 안 받습니다
최근에도 system() 관련 질문이 있어 같은 대답을 드렸더랬습니다.
system() 함수는 printf, scanf 처럼 %lf, %d, %s 같은 이런 문자열 제어 받지 않습니다.
http://kldp.org/node/135183 참고해주세요.
간단한 경우에 한해서, sprintf와 system을 써서 명령어를 수행하는 방법이 있습니다.
- 어제보다 나은 오늘, 오늘보다 나은 내일.
댓글 달기