• PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 23
    下载次数
  • 2009-12-20 21:27
    上传日期
基于winpcap 对于以太网帧头的捕获。用c++编写
AnalyzeETH_WinPcap.rar
  • AnalyzeETH_WinPcap.cpp
    2.4KB
内容介绍
* *程序1. *程序名:AnalyzeETH_WinPcap.cpp *本程序通过使用WinPcap来捕获以太帧包,并解析以太帧头 */ #include <stdio.h> #include <stdlib.h> #include <iostream.h> #include <pcap.h> #include <winsock2.h> #pragma comment(lib,"ws2_32") #pragma comment(lib,"wpcap") //以太帧头结构体 typedef struct ether_header { unsigned char ether_dhost[6]; unsigned char ether_shost[6]; unsigned short ether_type; }ETHHEADER,*PETHHEADER; void InitAdapter(); //初始化网络适配器 void dispatcher_handler(u_char*,const pcap_pkthdr*,const u_char *);//解析以太帧头 void print_hwadd(u_char *hwadd); //打印出MAC地址 void CloseAdapter(); //关闭网络适配器 FILE *fp; pcap_if_t *alldevs,*d; char errbuf[PCAP_ERRBUF_SIZE]; pcap_t *adhandle; void main() { int count=0,number; cout<<"Please enter the number of packet sended:"<<endl; cin>>number; InitAdatper(); fp=fopen("f://000//eth.txt","w"); while(count<=number) { pcap_loop(adhandle,1,dispatcher_handler,NULL); //捕获数据报 count++; } CloseAdapter(); } void InitAdapter() { int i; if(pcap_findalldevs(&alldevs,errbuf)==-1) { //寻找网络适配器 cout<<"Error in pcap_findalldevs!"; return; } for(d=alldevs,i=0;i<0;d=d->next,i++); if((adhandle=pcap_open_live(d->name,65535,1,20,errbuf))==NULL) {//打开选取的网络适配器 cout<<"Unable to open the adapter!"; pcap_freealldevs(alldevs); return; } if(pcap_datalink(adhandle)!=DLT_EN10MB) { //判断网络是否为10MB以太网 cout<<"This program works only on Ethernet network!"; pcap_freealldevs(alldevs); return; } } void dispatcher_handler(u_char *,const pcap_pkthdr *header,const u_char *p) { PETHHEADER eth=(PETHHEADER)p; fprintf(fp,"源MAC:"); for(int i = 0;i < 5; i ++) //源MAC地址 fprintf(fp,"%02X-",eth->ether_shost[i]); fprintf(fp,"%02X ",eth->ether_shost[5]); fprintf(fp,"-> "); fprintf(fp,"目的MAC:"); //目的MAC地址 for(i = 0;i < 5; i ++) fprintf(fp,"%02X-",eth->ether_dhost[i]); fprintf(fp,"%02X ",eth->ether_dhost[5]); fprintf(fp,"协议类型:"); //上层协议类型 fprintf(fp,"%02X\n", htons(eth->ether_type)); } void CloseAdapter() { fclose(fp); pcap_freealldevs(alldevs); pcap_close(adhandle); }
评论
    相关推荐
    • 3DES加密算法源代码.rar
      DES加密源代码,用3DES加密算法。 加密强度高,到目前为止,还无人能够破解!
    • crc.zip
      CRC校验程序,使用了CRC-16和CRC-CCITT方法
    • rsa1.03.zip
      rsa算法实现,包含文档
    • fast-des3.0.tar.z
      des算法实现源码
    • des3_win32_vc.zip
      一个3des算法的库文件和使用库文件的例子
    • dcpcrypt.zip
      Delphi加密控件源码,包括对称钥匙加密控件和散列函数控件
    • rc.zip
      含有rc2、rc4、rc5、rc6算法的rc算法集合
    • oicqpass.zip
      读取OICQ用户保存在本地机器上的密码
    • elgamal.zip
      另一种公开密钥加密算法的Pascal实现和例子。实现了签名和确认
    • linuxscanners.zip
      linux下的端口扫描器