c语言无法定位程序输入点,【求助】无法定位程序输入点PacketGetVersion于动态链接库Packet.dll上...

本文介绍了如何使用C语言和libpcap及winpcap库来开发一个简单的网络嗅探器。程序通过PacketGetVersion函数获取库版本,并获取网络适配器列表。接着,程序进入主循环捕获网络数据包,实现网络包的监控。
摘要由CSDN通过智能技术生成

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

2网络嗅探器程序实现

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

/* June 2nd,2002

* Project for graduation qualification By Bby Team 19 */

#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()

{

//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;

下面这段代码是用来在不同版本下得到网络适配器名:

Win9x 和WinNT中的网卡名称是分别用ASCII和UNICODE实现的,所以首先要得到本地操作系统的版本号.:

dwVersion=GetVersion();

dwWindowsMa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值