성엽이
KKIMSSI
성엽이
전체 방문자
오늘
어제
  • 분류 전체보기 (454)
    • :) (2)
    • C프로그래밍이론 (9)
    • C++프로그래밍 (64)
      • STL (1)
    • C# (2)
    • Visual studio 10.0 (9)
    • AT91SAM7S256 (21)
    • 논리회로 (14)
    • AVR2560 (11)
    • TCPIP (16)
    • NetWork (4)
      • Ubuntu Linux (2)
    • Assembly (21)
    • UNIX 프로그래밍 (6)
    • RFID 분석 (1)
    • Win32 API (7)
    • Cortex-M3 (4)
    • Unity (91)
    • Flutter (9)
    • OwnProject (11)
      • It's mine (5)
      • 마인드스톰 실습 (1)
      • 보고서 자료 (2)
      • RPi B+ (2)
    • ETC (25)
      • 상식 (3)
    • MFC (40)
    • PostgeSQL (18)
    • 영상제어 (6)
      • VFW_영상처리 (1)
    • Python (0)
    • Java (30)
      • SpringBoot (2)
      • Javascript (1)
      • JSP (13)
      • Spring (8)
    • Oracle (4)
      • SQL (3)
    • HTML (6)
      • Thymeleaf (1)
      • CSS (1)
      • Bootstrap (3)
    • IDE (1)
      • VS Code (1)
    • Android (2)
    • Privacy Policy (0)
    • MYSQL (2)
      • MariaDB (2)
    • AWS (5)
    • 개인공부 (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
  • 관리자
  • 글쓰기

공지사항

인기 글

태그

  • Boot Code 분석
  • 문자열 나누기
  • WINAPI
  • MFC
  • ARM Reverse Engineering

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
성엽이

KKIMSSI

2013.08.05_Window에서 Packet Capture 하기 연습
TCPIP

2013.08.05_Window에서 Packet Capture 하기 연습

2013. 8. 5. 22:53

------ Window 용 WinCap ----------------------------------------------------------------------------------------------------------------

http://www.winpcap.org/ -> Wincap -> Development -> WinCap 4.1.3


WpdPack_4_1_2.zip


----------------------------------------------------------------------------------------------------------------------------------------


 sample.c 수정전 소스

#include < stdio.h >

#include < pcap.h >

#pragma comment(lib, "wpcap.lib")  // linux 에서 gcc -o main main.c -lpcap > 이부분의 
          // -lpcap의 library 추가부분을 윈도우에서 wpcap.lib
          // 부분과 같음

int main()
{
  char ca_EBUF[PCAP_ERRBUF_SIZE];  // pcaplib 의 에러버퍼
  char *cp_Dev;  

  cp_Dev = pcap_lookupdev(ca_EBUF);  // 에러 시 NULL을 출력함

  if( 0 == cp_Dev )
  {
    printf("[%s]\n", ca_EBUF);  
    return 0;
  }

  printf("LAN Name : [%s]\n", cp_Dev);
  
  return 0;
}


 : 실행하면 위의 그림처럼 뜨는데 VMware 같은 가상 장치번호가 여러개라서 어느 하나 제대로 가져오지 못해서 나타나는 현상이다. 

   이를 수정하여 만들어 보았다. 



 sample.c 수정후 소스

#include < stdio.h >
#define  WIN32  // WIN32가 define 되어있으면 #include <pcap-stdinc.h> 가 추가되고 > 여기안에 winsock2.h 가 포함되어있음.
#include < pcap.h >

#pragma comment(lib, "wpcap.lib")  // linux 에서 gcc -o main main.c -lpcap > 이부분의 
          // -lpcap의 library 추가부분을 윈도우에서 wpcap.lib
          // 부분과 같음

int main()
{
  pcap_if_t *alldevs;  // 장치정보를 집어넣음.
  pcap_if_t *d;    // 검색한 장치정보를 d 에다가 넣어둠.
  int inum;
  int i;
  pcap_t *adhandle;  

  char ca_EBUF[PCAP_ERRBUF_SIZE];  // pcaplib 의 에러버퍼
  char *cp_Dev;  

  if( -1 == pcap_findalldevs(&alldevs, ca_EBUF))
  {
    printf("Error in pcap_findalldevs: %s\n", ca_EBUF);
    return 1;
  }
  
  for(d=alldevs, i=0 ; d != 0 ; d=d->next)  // d 가 NULL이 아니면 > d 가 주소값을 가지고 있지 않으면 중단!
  { 
    printf("%d. %s\n", ++i, d->name);
    
    if( 0 != d->description)
    {
      printf(" [%s]\n", d->description);
    }
    else
    {
      printf(" (설명없음)\n");
    }
  }

  return 0;
}



 


  : WinCap 안에 있는 Examples-pcap 폴더안에 basic_dump.c 에 findalldevs() 함수를 이용 모든 장치번호를 찾아주게하여 소스를 수정하였다. 

basic_dump.c

   


저작자표시 (새창열림)

'TCPIP' 카테고리의 다른 글

2013.07.12_SockCapture_소켓으로 패킷캡쳐하기_  (0) 2013.07.12
2013.07.10_Thread를 이용한 Server 구현.  (0) 2013.07.10
2013.07.09_TCP/IP를 Thread로 통신_  (0) 2013.07.09
2013.07.08_Inter Process Communication(IPC)_활용.  (0) 2013.07.09
2013.07.04_멀티태스킹 테스트  (0) 2013.07.05
    'TCPIP' 카테고리의 다른 글
    • 2013.07.12_SockCapture_소켓으로 패킷캡쳐하기_
    • 2013.07.10_Thread를 이용한 Server 구현.
    • 2013.07.09_TCP/IP를 Thread로 통신_
    • 2013.07.08_Inter Process Communication(IPC)_활용.
    성엽이
    성엽이

    티스토리툴바