深度剖析WinPcap之(八)——打开与关闭适配器
2009-09-21 00:00:00 来源:WEB开发网参数promisc是描述该接口是否被设置为混杂模式。现在,这不能工作在”any”设备上;如果使用一个”any”或NULL参数,将忽略 promisc标识符。将 to_ms 设置为0,在支持超时操作的平台上,意味着没有超时。也就是如果没有数据包到达,读操作将永远不会返回。如果设置成-1,则情况恰好相反,无论有没有数据包到达,读操作都会立即返回。
参数errbuf指向用户所分配的一个缓冲区,将用来存储该函数的警告与错误信息。
函数返回一个指向” pcap_t”的指针,将作为后续调用的参数。
1.1.4 pcap_open_offline函数
函数打开一个采用tcpdump/libpcap格式存储的文件读取数据包。函数原型如下:
pcap_t* pcap_open_offline(const char *fname, char *errbuf);
参数fname指定了要打开的文件。该文件与tcpdump(1)与 tcpslice(1) 所使用的格式相同。"-"是stdin的同义词。参数errbuf用来返回函数失败的错误信息。
函数返回一个指向” pcap_t”的指针,将作为后续调用的参数。
1.1.5 pcap_close函数
函数pcap_close()用来关闭与p关联的文件并释放相关的资源,函数原型如下:
void pcap_close(pcap_t *p);
参数p为pcap_open()或pcap_open_XXX()函数所获取的”pcap_t”指针。
1.2 关键数据结构pcap结构体
结构体pcap是一个已打开捕捉实例的描述符。该结构体对用户来说是不透明的,它通过wpcap.dll提供的函数,维护它的内容。此处只说明WIN32平台下使用的成员。
typedef struct pcap pcap_t;
struct pcap {
ADAPTER *adapter;
LPPACKET Packet;
int nonblock;
int snapshot;
int linktype; /*网络链路的类型 */
int linktype_ext; /*linktype成员的扩展信息*/
int tzoff; /*时区偏移*/
int offset; /*正确对齐的偏移*/
int activated; /* 如果捕获已经准备好开始,为true*/
int oldstyle; /* 如果使用pcap_open_live()*/
int break_loop; /*用来强制从数据包循环读取中退出的标志*/
struct pcap_sf sf;
struct pcap_md md;
struct pcap_opt opt;
/* 读缓冲区*/
int bufsize;
u_char *buffer;
u_char *bp;
int cc;
/*pcap_next()的位置持有者*/
u_char *pkt;
/* 只接收这方向/这些方向的数据包*/
pcap_direction_t direction;
/*
* 各种方法,具体定义参见后续内容
*/
activate_op_t activate_op;
can_set_rfmon_op_t can_set_rfmon_op;
read_op_t read_op;
inject_op_t inject_op;
setfilter_op_t setfilter_op;
setdirection_op_t setdirection_op;
set_datalink_op_t set_datalink_op;
getnonblock_op_t getnonblock_op;
setnonblock_op_t setnonblock_op;
stats_op_t stats_op;
setbuff_op_t setbuff_op;
setmode_op_t setmode_op;
setmintocopy_op_t setmintocopy_op;
cleanup_op_t cleanup_op;
/*如果过数据包过滤不在内核空间,在此放置过滤器代码*/
struct bpf_program fcode;
char errbuf[PCAP_ERRBUF_SIZE + 1];
int dlt_count;
u_int *dlt_list;
struct pcap_pkthdr pcap_header; /* pcap_next_ex()工作所需的链表*/
};
- ››深度解释攻击linux服务器的四种级别
- ››剖析java.util.concurrent锁
- ››剖析Android智能手机系统的更多功能
- ››深度分析地方社区网站的内容定位
- ››剖析Windows Azure Platform框架与组成
- ››剖析使用 ObjectOutputStream 可能引起的内存泄漏...
- ››剖析EWebEditor编辑器漏洞攻击案例
- ››剖析开源云:构建 Infrastructure as a Service 块...
- ››深度剖析 Android 和 iPhone OS
- ››深度分析:HTML5能否成为Flash终结者
- ››深度挖掘 更多Windows 7快捷模式
- ››深度挖掘 Windows 7快捷模式
更多精彩
赞助商链接