wincap网络数据包的捕获
生活随笔
收集整理的這篇文章主要介紹了
wincap网络数据包的捕获
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用wincap之前,你必須安裝wincap安裝包(內帶頭文件和鏈接庫)
以下直接貼代碼:
//*2014年7月10日08:23:06 bojie http://blog.csdn.net/bojie5744 *// struct pcap_pkthdr {struct timeval ts;bpf_u_int32 caplen;bpf_u_int32 len;};#include "pcap.h" #pragma comment(lib,"packet.lib") #pragma comment(lib,"wpcap.lib") 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[256];if ( pcap_findalldevs( &alldevs, errbuf ) == -1 ){fprintf_s( stderr, "pcap_findalldevs函數調用錯誤: %s/n", errbuf );exit(1);}for( d = alldevs; d; d = d->next ){printf_s( "%d. %s", ++i, d->name );if ( d->description )printf_s( " (%s)/n", d->description );}if(i == 0){printf_s( "搜索錯誤/n" );return -1;}printf_s( "選擇網卡 (1-%d):", i );scanf_s( "%d", &inum ); if( inum < 1 || inum > i ) {printf_s( "輸入有誤,沒有此網卡/n" );pcap_freealldevs( alldevs );return -1;}for( d = alldevs, i = 0; i < inum-1; d = d->next, i++ );if ( (adhandle= pcap_open_live(d->name, 65536, 1, 1000, errbuf ) ) == NULL){fprintf_s( stderr, "錯誤: %s /n", errbuf );pcap_freealldevs( alldevs );return -1;}printf_s( "開始監聽網卡%s/n", d->description );pcap_freealldevs( alldevs );pcap_loop( adhandle, 0, packet_handler, NULL );return 0;} ? void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data){struct tm ltime;char timestr[20];time_t t = (time_t )&header->ts.tv_sec;localtime_s( <ime, &t );strftime( timestr, sizeof timestr, "%H:%M:%S", <ime);printf_s("%s,/t%.6d毫秒/t長度:%d/n", timestr, header->ts.tv_usec, header->len );}
?
?
總結
以上是生活随笔為你收集整理的wincap网络数据包的捕获的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何把jpeg转换成jpg?怎么把jpe
- 下一篇: Buffer() is deprecat