资源简介

使用winpcap进行ip流量包分析程序,winpcap大家懂的,流量分析大家也懂的,内含源码和说明文档。

资源截图

代码片段和文件信息

/*************************
定制控制台应用程序入口点
**************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “IPNode.h“
#include “IPNodeList.h“
#include “FindActiveIP.h“
#include “IPAddr.h“
#include “IPMonitor.h“
#pragma comment(lib“ws2_32.lib“)
#pragma comment(lib “wpcap“)

//main函数       
int main(int argc char* argv[])
{
    
pcap_if_t * alldevs; //指向所有网络设备的指针
pcap_if_t * d; //指向网卡的指针
int i=0; //记录网卡数量
pcap_t *pAdaptHandle; //打开网卡的句柄
char errbuf[PCAP_ERRBUF_SIZE];  //错误信息缓冲区

//检测命令行参数正确性
if (argc != 2)
{
cout<<“请输入正确的命令行参数: IPAnalyzer.exe duration_time“< cout<<“其中duration_time为监控时间 单位为秒,可精确到毫秒“;
exit(1);
}
double dwDuration = atof(argv[1]);  //将用户输入的字符串类型的时间转换成double型数

//获取本机网络设备列表
if (pcap_findalldevs(&alldevserrbuf) == -1)      
    {
        fprintf(stderr“获取本地机器设备列表时发生错误... %s\n“ errbuf);
        exit(1);
    }
    
//输出网络适配器设备列表  
    for(d= alldevs; d != NULL; d= d->next)                       
    {
        printf(“%d. %s\n“ ++i d->name);
        if (d->description)
            printf(“ (%s)\n“ d->description);
        else
            printf(“ 无法得到网卡描述 \n“);
    }
    if (i == 0) //适配器数量为0,输出错误信息
    {
        printf(“\n网络适配器没有被发现,请确认已经安装winpcap!\n“);
        return 0;
    }
    
//适配器选择
int inum=0;
printf(“%s““请输入要选择的适配器序号: “);
scanf(“%d“&inum);
    
//判断适配器选择合法性
if(inum < 1 || inum > i)
    {
      printf(“%s““所选适配器不在列表中!\n“);
      pcap_freealldevs(alldevs);    // 释放设备列表 
      return -1;
    }
    
//找到选择的适配器 
    for(d=alldevs i=0; i< inum-1 ; i++)
{
  d=d->next;
}

// 打开设备 
    if ((pAdaptHandle = pcap_open_live(d->name    // 设备名称
                                       60         // ARP包最大长度是60,节省内存资源,不设为65536!    
           1          // 混杂模式
                                       100        // 读取超时时间
                                       errbuf      // 错误信息缓冲池
                                      )) == NULL)
    {
       fprintf(stderr“\nWinPcap不支持设备 %s,无法打开它!\n“ d->name);      
       pcap_freealldevs(alldevs);   // 释放设备列表 
       return -1;
    }
 
//编译并设置过滤器
char* filter = “ip“;           //本程序选择IP协议
bpf_program fcode;    //解析过滤串规则
unsigned long netmask = 0;     //子网掩码
pcap_addr_t *a = d->addresses; //适配器地址
u_long self_IP = ((struct sockaddr_in *)a->addr)->sin_addr.S_un.S_addr;   //获得本机IP地址
cout< cout<<“       活动主机IP列表:“< cout<<“       <0>   “;
IpToStr(self_IP);              //输出本机IP
 

if(d->addresses != NULL)    //获得子网掩码
       netmask=((struct sockaddr_in *)(a->netmask))->sin_addr.S_un.S_addr;
    else                 // 如果接口没有地址,则假设为C类地址
      netmask=0xffffff; 
      
// 编译过滤条件
if (pcap_compile(pAdaptHandle &fcode filter 1 (unsigned long)netmask) < 0)
 {
cout<<“过滤条件

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    2237440  2009-11-16 23:59  程序源码\IPMonitor\Debug\IPMonitor.bsc

     文件     557105  2009-11-16 23:59  程序源码\IPMonitor\Debug\IPMonitor.exe

     文件     831912  2009-11-16 23:59  程序源码\IPMonitor\Debug\IPMonitor.ilk

     文件     314649  2009-11-17 18:04  程序源码\IPMonitor\Debug\IPMonitor.obj

     文件    7016992  2009-11-17 18:04  程序源码\IPMonitor\Debug\IPMonitor.pch

     文件    1147904  2009-11-16 23:59  程序源码\IPMonitor\Debug\IPMonitor.pdb

     文件    1206252  2009-11-17 18:04  程序源码\IPMonitor\Debug\IPMonitor.sbr

     文件     345088  2009-11-17 18:04  程序源码\IPMonitor\Debug\vc60.idb

     文件     151552  2009-11-17 18:04  程序源码\IPMonitor\Debug\vc60.pdb

     文件       8351  2009-11-16 23:18  程序源码\IPMonitor\FindActiveIP.h

     文件       4065  2007-09-27 10:55  程序源码\IPMonitor\Include\bittypes.h

     文件       5780  2006-01-22 11:02  程序源码\IPMonitor\Include\ip6_misc.h

     文件      17973  2007-11-12 18:11  程序源码\IPMonitor\Include\Packet32.h

     文件       2064  2007-09-21 19:10  程序源码\IPMonitor\Include\pcap\bluetooth.h

     文件      29629  2008-04-06 11:10  程序源码\IPMonitor\Include\pcap\bpf.h

     文件       3510  2006-10-04 11:09  程序源码\IPMonitor\Include\pcap\namedb.h

     文件      13615  2008-05-21 15:42  程序源码\IPMonitor\Include\pcap\pcap.h

     文件       5686  2006-10-05 03:23  程序源码\IPMonitor\Include\pcap\sll.h

     文件       3015  2007-09-21 19:06  程序源码\IPMonitor\Include\pcap\usb.h

     文件       2440  2007-04-01 14:43  程序源码\IPMonitor\Include\pcap-bpf.h

     文件       2167  2006-10-04 11:13  程序源码\IPMonitor\Include\pcap-namedb.h

     文件       2418  2007-09-27 10:59  程序源码\IPMonitor\Include\pcap-stdinc.h

     文件       2365  2006-10-04 11:09  程序源码\IPMonitor\Include\pcap.h

     文件      14945  2007-09-27 11:32  程序源码\IPMonitor\Include\remote-ext.h

     文件       4033  2006-08-09 17:16  程序源码\IPMonitor\Include\Win32-Extensions.h

     文件       1301  2009-11-16 18:55  程序源码\IPMonitor\IPAddr.h

     文件       6132  2009-11-16 23:10  程序源码\IPMonitor\IPMonitor.cpp

     文件       4674  2009-11-16 20:37  程序源码\IPMonitor\IPMonitor.dsp

     文件        541  2009-11-15 22:01  程序源码\IPMonitor\IPMonitor.dsw

     文件        924  2009-11-16 18:55  程序源码\IPMonitor\IPMonitor.h

............此处省略24个文件信息

评论

共有 条评论