자료 저장소

WinPcap 설치 파일(DLL) :WinPcap_4_1_2.exe

WinPcap 라이브러리, Include, 소스 파일 :



■ 예제 소스


#include <stdio.h> 
#include <stdlib.h>

#include"pcap.h"
#include"remote-ext.h"

#define PACKET_SIZE 100

/- 네트워크 랜카드 어댑터 목록 얻기 *-
//void main()
//{
// pcap_if_t *alldevs;
// pcap_if_t *d;
// int i=0;
//
// char errbuf[PCAP_ERRBUF_SIZE];
//
// if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)
// {
// fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n",errbuf);
// exit(1);
// }
//
// for(d= alldevs; d != NULL; d=d->next)
// {
// printf("%d. %s", ++i, d->name);
//
// if(d->description)
// printf(" (%s)\n",d->description);
// else
// printf(" (No description available)\n");
//
// }
//
// if(i==0)
// {
// printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
// return ;
// }
//
// pcap_freealldevs(alldevs);
//
//
//}


/- 네트워크 어댑터 열고 패킷 캡쳐 *-

//void packet_handler(u_char *param, const struct pcap_pkthdr *header,
// const u_char *pkt_data);
//
//int main()
//{
// pcap_if_t *alldevs;
// pcap_if_t *d;
// int inum;
// int i=0;
// pcap_t *adhandle;
// char errbuf[PCAP_ERRBUF_SIZE];
//
// if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)
// {
// fprintf(stderr,"Error in pcap_findalldevs: %s\n",errbuf);
// exit(1);
// }
//
// for(d=alldevs; d; d=d->next)
// {
// printf("%d. %s",++i, d->name);
//
// if(d->description)
// printf(" (%s)\n",d->description);
// else
// printf(" (No description available)\n");
//
// }
//
// if(i==0)
// {
// printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
// return -1;
// }
//
// printf("Enter the interface number(1-%d):",i);
// scanf("%d",&inum);
//
// if(inum < 1 || inum > i)
// {
// printf("\n Interface number out of range.\n");
// pcap_freealldevs(alldevs);
// return -1;
// }
//
// for(d=alldevs, i=0; i<inum-1; d=d->next,i++);
//
// if( (adhandle = pcap_open(d->name,65536,PCAP_OPENFLAG_PROMISCUOUS,1000,NULL,errbuf))
// == NULL)
// {
// fprintf(stderr,"\n Unable to open the adapter.
// %sis not supported by WinPcap\n", d->name);
// pcap_freealldevs(alldevs);
// return -1;
// }
//
// printf("\n listening on %s...\n",d->description);
//
// pcap_freealldevs(alldevs);
//
// // 패킷 캡쳐 시작
// pcap_loop(adhandle, 0, packet_handler, NULL);
//
// return 0;
//
//}

/- 패킷이 도착할 때마다 libpcap이 부르는 콜백함수 *-

//void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
//{
// unsigned int i;
// struct tm* ltime;
// char timestr[16];
//
// time_t temp = header->ts.tv_sec;
//
// ltime=localtime(&temp);
// strftime(timestr, sizeof(timestr),"%H:%M:%S",ltime);
//
// printf("\n-------------------------------------------------------------\n");
// printf("%s %.6d len:%d\n",timestr, header->ts.tv_sec,header->len);
//
// for(i=0;i<header->len;i++)
// {
// char c;
// c = pkt_data[i];
//
// if((' ' > c) || ('~' < c)) c = '.';
//
// printf("%c",c);
//
// if( !(i%16) ) printf("\n");
// }
//
// printf("\n");
//
// for(i=0;i<header->len;i++)
// {
// printf(" %02x", pkt_data[i]);
// if( !(i%16) ) printf("\n");
// }
//
//}


/- 패킷 보내기 *-

//int main(int argc, char **argv)
//{
// pcap_if_t *alldevs;
// pcap_if_t *d;
// pcap_t *fp;
// int inum;
// int i=0;
// pcap_t *adhandle;
// char errbuf[PCAP_ERRBUF_SIZE];
// u_char packet[PACKET_SIZE];
//
// if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)
// {
// fprintf(stderr,"Error in pcap_findalldevs: %s\n",errbuf);
// exit(1);
// }
//
// for(d=alldevs; d; d=d->next)
// {
// printf("%d. %s",++i, d->name);
//
// if(d->description)
// printf(" (%s)\n",d->description);
// else
// printf(" (No description available)\n");
//
// }
//
// if(i==0)
// {
// printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
// return -1;
// }
//
// printf("Enter the interface number(1-%d):",i);
// scanf("%d",&inum);
//
// if(inum < 1 || inum > i)
// {
// printf("\n Interface number out of range.\n");
// pcap_freealldevs(alldevs);
// return -1;
// }
//
// for(d=alldevs,i=0; i< inum-1; d=d->next,i++);
//
// if( (adhandle = pcap_open(d->name,65536,PCAP_OPENFLAG_PROMISCUOUS,1000,NULL,errbuf)
// ) == NULL)
// {
// fprintf(stderr,"\n Unable to open the adapter.
// %s is not supported by WinPcap\n", argv[1]);
// pcap_freealldevs(alldevs);
// return -1;
// }
//
//
// packet[0]=0xFF;
// packet[1]=0xFF;
// packet[2]=0xFF;
// packet[3]=0xFF;
// packet[4]=0xFF;
// packet[5]=0xFF;
//
// packet[6]=0x00;
// packet[7]=0x01;
// packet[8]=0x02;
// packet[9]=0x03;
// packet[10]=0x04;
// packet[11]=0x05;
//
// packet[12]=0x08;
// packet[13]=0x00;
//
// for(int k=14;k<100;k++)
// packet[k]=k-13;
//
// while(1)
// {
// if(pcap_sendpacket(adhandle, packet, PACKET_SIZE) != 0)
// {
// fprintf(stderr,"\n Error sending the packet: \n", pcap_geterr(adhandle));
// return -1;
// }
// }
//
//
// return 1;
//
//
//}


댓글 로드 중…

최근에 게시된 글