一个简易网络嗅探器的实现[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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |