当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

一个简易网络嗅探器的实现[VC/C++编程]

赞助商链接



  本文“一个简易网络嗅探器的实现[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

择要:本文介绍一个用C语言和网络数据包解析开辟工具实现的简易网络Sniffer.

关键词:网络;数据包;Sniffer

引言

目前,已经有不少的Sniff工具软件,如Windows环境下,最富盛名的工具是Netxray和Sniffer pro,用它们在 Windows环境下抓包来解析,非常便利.在UNIX环境下如Sniffit,Snoop,Tcpdump,Dsniff 等都是对比常见的.这里介绍一个用C语言和网络数据包和解析开辟工具libpcap及winpcap实现的简易网络Sniffer.

网络嗅探器程序框图

首先给出流程如图1所示.

图1 流程图

网络嗅探器程序实现

在c环境下编程,源码以下:

/* June 2nd,2002
* Project for graduation qualification By Bby Team 19 */
#include <stdio.h>
#include <conio.h>
//必须加途径,必须把头文件packet32.h包含进去
#include "..\..\Include\packet32.h"
#include "..\..\Include\ntddndis.h"
#define Max_Num_Adapter 10
// Prototypes原形
//发包
void PrintPackets(LPPACKET lpPacket);
//设备列表
char AdapterList[Max_Num_Adapter][1024];
// 主程序开始
int main()
{
  //define a pointer to an ADAPTER structure设备指针
  LPADAPTER lpAdapter = 0;
  //define a pointer to a PACKET structure包指针
  LPPACKET lpPacket;
  int i;
  DWORD dwErrorCode;
  DWORD dwVersion;
  DWORD dwWindowsMajorVersion;
  //Unicode strings (WinNT)
  WCHAR AdapterName[8192]; //网络适配器设备列表
  WCHAR *temp,*temp1;
  //ASCII strings (Win9x)
  char AdapterNamea[8192]; //网络适配器设备列表
  char *tempa,*temp1a;
  int AdapterNum=0,Open;
  ULONG AdapterLength;
  char buffer[256000]; // 包容来自驱动器的数据的缓冲区
  struct bpf_stat stat;
  // 得到本机网卡名
  AdapterLength=4096;
  printf("Packet.dll test application. Library version:%s\n", PacketGetVersion());
  printf("Adapters installed:\n");
  i=0;


  以上是“一个简易网络嗅探器的实现[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>Qt学习之路(31):一个简易画板的实现(QWidget)</b>
  • Qt学习之路(32):一个简易画板的实现(Graphics View)
  • 一个简易网络嗅探器的实现
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .