C语言实现网络嗅探器

本文介绍了如何利用C语言,结合libpcap和winpcap库,开发一个简单的网络嗅探器。通过示例代码展示了如何在Windows环境下设置网络适配器,捕获并打印数据包,以及处理网络包的主要流程。同时,强调了网络嗅探器对于理解网络管理和信息安全的重要性。

这里介绍一个用C语言和网络数据包和分析开发工具libpcap及winpcap实现的简易网络Sniffer。
2网络嗅探器程序实现
在c环境下编程,源码如下:
#include
#include
//必须加路径,必须把头文件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()
{
LPADAPTER lpAdapter = 0;     //define a pointer to an ADAPTER structure设备指针
LPPACKET lpPacket;     //define a pointer to a PACKET structure包指针
int i;
DWORD dwErrorCode;
DWORD dwVersion;
DWORD dwWindowsMajorVersion;
WCHAR AdapterName[8192]; //网络适配器设备列表 //Unicode strings (WinNT)
WCHAR *temp,*temp1;

char AdapterNamea[8192]; //网络适配器设备列表 //ASCII strings (Win9x)
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;

下面这段代码是用来在不同版本下得到网络适配器名:
Win9x 和WinNT中的网卡名称是分别用ASCII和UNICODE实现的,所以首先要得到本地操作系统的版本号.:
dwVersion=GetVersion();
dwWindowsMajorVersion=

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值