分享
 
 
 

监听以太网(三) Packet32数据结构说明

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

监听以太网(三) Packet32数据结构说明

Article last modified on 2002-9-17

The information in this article applies to:

--Microsoft Windwos NTx

--- Microsoft Windwos 9x

--WinPcap: the Free Packet Capture Architecture for Windows

Packet32包中的数据结构:

第一个重要的数据结构:_ADAPTER(关于Network Adapter的)

typedef struct _ADAPTER

{

// 一个打开的NPF driver实例的句柄:

HANDLE hFile;

// 当前打开的网卡的名字:

CHAR SymbolicLink[MAX_LINK_NAME_LENGTH];

// 在这块Adapter上,一个数据包被写的次数:

int NumWrites;

// 这块Adapter上的read操作的通知事件。它可以被传递给标准Win32函数(如WaitForSingleObject或者WaitForMultipleObjects),这样可以等待到driver的缓冲区内有数据到来。在同时等待几个事件的GUI程序中,它特别有用。在Windows2000/XP中,函数PacketSetMinToCopy()可以用来设置内核缓冲区中激发本事件的最小数据大小:

HANDLE ReadEvent;

// 设置一个时间,到时候,即使没有捕获任何包,read操作也会被释放,ReadEvent也会被触发:

UINT ReadTimeOut;

} ADAPTER, *LPADAPTER;

第二个重要的数据结构:_PACKET(关于Packet的)

typedef struct _PACKET

{

// 向后兼容用的:

HANDLE hEvent;

// 向后兼容用的:

OVERLAPPED OverLapped;

// 存放Packets的缓冲区:

PVOID Buffer;

// 缓冲区的大小:

UINT Length;

// 当前缓冲区中有效的字节数,如,上一次调用PacketReceivePacket()函数接收到的字节数:

DWORD ulBytesReceived;

// 向后兼容用的:

BOOLEAN bIoComplete

} PACKET, *LPPACKET;

第三个重要的数据结构:_PACKET_OID_DATA (关于OID请求的)

typedef struct _PACKET_OID_DATA

{

// OID的code,有效的OID code的定义参见ntddndis.h;比如:

// OID_GEN_SUPPORTED_LIST,OID_GEN_VENDOR_DESCRIPTION等:

ULONG Oid;

// 成员Data的长度:

ULONG Length;

// 存放发送给网卡或者从网卡接收的数据的缓冲区:

UCHAR Data[1];

}

typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA;

其他数据结构:

npf_if_addr(网卡的地址):

typedef struct npf_if_addr {

struct sockaddr IPAddress; // IP address.

struct sockaddr SubnetMask; // Netmask for that address.

struct sockaddr Broadcast; //

Broadcast address.

}npf_if_addr;

bpf_hdr(Packet Header):

struct bpf_hdr {

// 捕获到的packet的timestamp:

struct timeval bh_tstamp;

// 捕获到的packet的长度:

UINT bh_caplen;

// 原始packet的长度:

UINT bh_datalen;

// bpf header的长度(this struct plus alignment padding):

USHORT bh_hdrlen;

};

bpf_insn(一个简单的BPF伪指令):

bpf_insn中包含了一个BPF注册机的简单指令,它被用来发送一个filter程序给driver。

struct bpf_insn {

// 指令的类型和寻址模式:

USHORT code;

// Jump if true:

UCHAR jt;

// Jump if false:

UCHAR jf;

// 通用的一个字段,有多种目的:

int k;

};

bpf_program(一个BPF伪汇编程序):

这段程序将被PacketSetBPF()注射入内核,并被应用到每一个进来的Packet。

struct bpf_program {

// 程序指令数目,如,后面的bpf_insn结构的数目:

UINT bf_len;

// 指向第一个bpf_insn结构的指针:

struct bpf_insn *bf_insns;

};

bpf_stat (本次捕获的统计数据):

这个结构将被Packet.dll用来返回捕获过程中的统计数据。

struct bpf_stat {

// 从开始捕获起,这个driver从网卡上接收的Packet的数量(包括driver丢失的Packet):

UINT bs_recv;

//从开始捕获起,这个driver丢失的Packet的数量,一般地,包丢失,是因为driver的缓冲区满了,这时driver将扔掉这个包:

UINT bs_drop;

UINT ps_ifdrop;

// 通过filter的包的数量:

UINT bs_capt;

};

dump_bpf_hdr(Dump Packet Header):

struct dump_bpf_hdr{

// Packet的timestamp:

struct timeval ts;

// 捕获到的packet的长度:

UINT caplen;

// 原始Packet的长度:

UINT len;

};

NetType (网络类型):

NetType用于PacketGetNetType(),返回当前网卡的类型和速度。

struct NetType{

//当前网卡的MAC:

UINT LinkType;

// 网络的速度(bits/s):

UINT LinkSpeed;

};

(To be continued)

Writen by zhengyun@tomosoft.com

本文档所包含的信息代表了在发布之日,ZhengYun 对所讨论问题的当前看法,Zhengyun 不保证所给信息在发布之日以后的准确性。

本文档仅供参考。对本文档中的信息,Zhengyun 不做任何明示或默示的保证。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有