【资料】wpcap.dll/Packet.dll库中相应函数

来自于《网络分析技术揭秘》前三章试读链接:http://book.2cto.com/201208/1359.html。我目前没有导出dll看过

一.wpcap.dll导出的函数


1.与libpcap库兼容的函数
第一部分是与libpcap库兼容的函数,其可兼容UNIX平台,所以这些函数可在Windows与Linux平台上工作

。这些函数如下所示。
pcap_open_live函数用于打开本地主机的网络适配,并且可进行网络数据包的捕获,其原型如下:
pcap_t *爌cap_open_live (const char *device, int snaplen, int promisc, int to_ms,
    char *ebuf);
pcap_open_dead函数用于创建一个pcap_t结构体,而不是用于数据捕获,其原型如下:
pcap_t *爌cap_open_dead (int linktype, int snaplen);
pcap_open_offline函数用于打开一个libpcap格式的存储文件,来读取数据包,其原型如下:
pcap_t *爌cap_open_offline (const char *fname, char *errbuf);
pcap_close函数用来释放打开函数pcap_openXXX所获得的相关资源,其原型如下:
void爌cap_close (pcap_t *p);
pcap_findalldevs函数用于返回所找到的适配器列表,其原型如下:
int爌cap_findalldevs (pcap_if_t **alldevsp, char *errbuf);
pcap_freealldevs函数用于释放由pcap_findalldevs返回的适配器列表,其原型如下:
void爌cap_freealldevs (pcap_if_t *alldevsp);
pcap_handler为捕获数据包的回调函数的原型,其原型如下:
typedef void(*爌cap_handler )(u_char *user, const struct pcap_pkthdr *pkt_header,
    const u_char *pkt_data);
pcap_dispatch函数用于接收一组数据包,其原型如下:
int爌cap_dispatch (pcap_t *p, int cnt, pcap_handler callback, u_char *user);
pcap_loop函数用于接收一组数据包,其原型如下:
int爌cap_loop (pcap_t *p, int cnt, pcap_handler callback, u_char *user);
pcap_breakloop函数用于设置一个标志位,该标志会强制pcap_dispatch函数或pcap_loop函数返回,不再

继续循环,其原型如下:
void爌cap_breakloop (pcap_t *);
pcap_next函数用于返回下一个可用的数据包,其原型如下:
u_char *爌cap_next (pcap_t *p, struct pcap_pkthdr *h);
pcap_next_ex函数用于从一个网络适配器设备或从一个脱机文件中读取一个数据包,替代pcap_next()函

数,其原型如下:
int爌cap_next_ex (pcap_t *p, struct pcap_pkthdr **pkt_header,
    const u_char **pkt_data);
pcap_sendpacket函数用于发送单个原始数据包一次或多次,其原型如下:
int爌cap_sendpacket (pcap_t *p, u_char *buf, int size);
pcap_compile函数用于将一个用高级语言描述的过滤表达式编译成一个能够被过滤虚拟机所执行的低层字

节码,其原型如下:
int爌cap_compile (pcap_t *p, struct bpf_program *fp, char *str,
    int optimize, bpf_u_int32 netmask);
pcap_comiple_nopcap函数用于将高级语言描述的过滤表达式转换成能被过滤虚拟机所执行的低层字节码

。该函数在不需要打开适配器的情况下就可以执行此转换,其原型如下:
int爌cap_compile_nopcap (int snaplen_arg, int linktype_arg,
    struct bpf_program *program, char *buf, int optimize, bpf_u_int32 mask);
pcap_setfilter函数用于将一个过滤器的字节码与一个内核捕获实例相关联,其原型如下:
int爌cap_setfilter (pcap_t *p, struct bpf_program *fp);
pcap_freecode函数用于释放pcap_compile或pcap_compile_nopcap函数用来存储字节码的program结构体

,其原型如下:
void爌cap_freecode (struct bpf_program *fp);
pcap_stats函数用于返回当前捕获的统计信息,其原型如下:
int爌cap_stats (pcap_t *p, struct pcap_stat *ps);
pcap_dump_open函数用于打开一个文件,写入数据包,其原型如下:
pcap_dumper_t *爌cap_dump_open (pcap_t *p, const char *fname);
pcap_dump函数用于将数据包存储到文件,其原型如下:
void爌cap_dump (u_char *user, const struct pcap_pkthdr *h, const u_char *sp);
pcap_dump_flush函数将输出缓冲写入存储文件,这样,任何使用pcap_dump函数存储但还没有写入文件的

数据包,会被立刻写入文件,其原型如下:
int爌cap_dump_flush (pcap_dumper_t *p);
pcap_dump_close函数用于关闭一个存储文件,其原型如下:
void爌cap_dump_close (pcap_dumper_t *p);
2.与libpcap不兼容的函数
第二部分是与libpcap不兼容的函数,是针对Windows平台的部分扩展函数,是对libpcap库的扩展,只能

用于Windows平台。
pcap_live_dump函数用于将捕获的数据存储到内核文件中,其原型如下:
int爌cap_live_dump (pcap_t *p, char *filename, int maxsize, int maxpacks);
pcap_live_dump_ended函数用于判断内核文件存储是否结束,其原型如下:
int爌cap_live_dump_ended (pcap_t *p, int sync);
pcap_stats_ex函数用于返回当前捕获的统计信息,其原型如下:
struct pcap_stat *爌cap_stats_ex (pcap_t *p, int *pcap_stat_size);
pcap_setmode函数用于将工作模式设置为mode,其原型如下:
int爌cap_setmode (pcap_t *p, int mode);
pcap_setmintocopy函数用于定义最少字节数,对适配器执行一次读操作时,要求内核缓冲区中的数据达

到该字节数后才可返回,其原型如下:
int爌cap_setmintocopy (pcap_t *p, int size);
pcap_sendqueue_alloc函数用于分配一个发送队列,其原型如下:
pcap_send_queue *爌cap_sendqueue_alloc (u_int memsize);
pcap_sendqueue_destroy函数用于释放与一个发送队列相关的所有资源,其原型如下:
void爌cap_sendqueue_destroy (pcap_send_queue *queue);
pcap_sendqueue_queue函数用于把一个原始数据包添加到queue参数所指定的发送队列的尾部,其原型如

下:
int爌cap_sendqueue_queue (pcap_send_queue *queue,
    const struct pcap_pkthdr *pkt_header, const u_char *pkt_data);
pcap_sendqueue_transmit函数用于发送一个数据包队列到网络,其原型如下:
u_int爌cap_sendqueue_transmit (pcap_t *p, pcap_send_queue *queue, int sync);
pcap_findalldevs_ex函数用于返回所找到的适配器列表,其原型如下:
int爌cap_findalldevs_ex (char *source, struct pcap_rmtauth *auth,
    pcap_if_t **alldevs, char *errbuf);
pcap_open函数用于打开一个通用的数据捕获源(包括本地主机、远程主机、文件三种类型),以便进行

捕获或发送操作,其原型如下:
pcap_t *爌cap_open (const char *source, int snaplen, int flags,
int read_timeout, struct pcap_rmtauth *auth, char *errbuf);

 

 

二.  Packet.dll中函数


PacketGetAdapterNames函数用于获取可用网络适配器的列表,以及它们对应的描述,其原型如下:
BOOLEAN PacketGetAdapterNames(PTSTR pStr,PULONG  BufferSize);
PacketGetNetInfoEx函数用于获得一个适配器的所有地址信息,诸如IP地址、网络掩码地址与广播地址等

,其原型如下:
BOOLEAN PacketGetNetInfoEx(PCHAR AdapterName, npf_if_addr* buffer, PLONG NEntries);
PacketOpenAdapter函数用于打开一个适配器,其原型如下:
LPADAPTER PacketOpenAdapter(PCHAR AdapterNameWA);
PacketCloseAdapter函数用于关闭一个给定的适配器并释放相关的ADAPTER结构体资源,其原型如下:
VOID PacketCloseAdapter(LPADAPTER lpAdapter);
PacketSendPacket函数用于发送封装后的数据包到网络上,其原型如下:
BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync);
PacketSendPackets函数用于把发送队列中的待发数据包发送到网络上,其原型如下:
INT PacketSendPackets(LPADAPTER AdapterObject, PVOID PacketBuff,
    ULONG Size, BOOLEAN Sync);
PacketAllocatePacket函数用于分配一个_ADAPTER结构体内存空间,其原型如下:
LPPACKET PacketAllocatePacket(void);
PacketInitPacket函数主要用于初始化一个_PACKET结构体,其原型如下:
VOID PacketInitPacket(LPPACKET lpPacket,PVOID Buffer,UINT Length);
PacketFreePacket函数用于释放一个_ADAPTER结构体内存空间,其原型如下:
VOID PacketFreePacket(LPPACKET lpPacket);
PacketReceivePacket函数用于从NPF驱动程序中读取数据,其原型如下:
BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,
    LPPACKET lpPacket,BOOLEAN Sync);
PacketSetHwFilter函数用于给到来的数据包设置一个硬件过滤条件,其原型如下:
BOOLEAN PacketSetHwFilter(LPADAPTER  AdapterObject,ULONG Filter);
PacketSetNumWrites函数用于设置单个数据包重复发送的次数,其原型如下:
BOOLEAN PacketSetNumWrites(LPADAPTER AdapterObject,int nwrites);
PacketRequest函数用于在驱动程序上执行一个参数的查询/设置操作,其原型如下:
BOOLEAN PacketRequest(LPADAPTER  AdapterObject,BOOLEAN Set,
    PPACKET_OID_DATA  OidData);
PacketSetBuff函数用于设置一个与捕获实例相关的内核缓冲区大小,其原型如下:
BOOLEAN PacketSetBuff(LPADAPTER AdapterObject,int dim);
PacketSetBpf函数用于设置一个内核级的数据包过滤器,其原型如下:
BOOLEAN PacketSetBpf(LPADAPTER AdapterObject, struct bpf_program *fp);
PacketGetStats函数用于为当前捕获会话返回状态统计信息值,其原型如下:
BOOLEAN PacketGetStats(LPADAPTER AdapterObject,struct bpf_stat *s);
PacketGetStatsEx函数用于返回当前捕获会话的状态统计信息值,它为PacketGetStats函数的加强版(具

体内容见后面的章节),其原型如下:
BOOLEAN PacketGetStatsEx (LPADAPTER AdapterObject,struct bpf_stat *s;)
PacketGetNetType函数用于返回一个适配器网络数据链路层的类型信息,其原型如下:
BOOLEAN PacketGetNetType(LPADAPTER AdapterObject, NetType *type);
PacketSetReadTimeout函数用于设置一个适配器上读操作的超时时间,其原型如下:
BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout);
PacketSetMode函数用于设置NPF的工作模式,其原型如下:
BOOLEAN PacketSetMode(LPADAPTER AdapterObject,int mode);
PacketSetMinToCopy函数用于定义最少字节数,对适配器执行一次读操作时,只有内核缓冲区中的数据达

到该字节数后才可以返回,其原型如下:
BOOLEAN PacketSetMinToCopy(LPADAPTER AdapterObject,int nbytes);
PacketSetDumpName函数用于告诉内核驱动程序NPF内核转储文件的名称,其原型如下:
BOOLEAN PacketSetDumpName(LPADAPTER AdapterObject, void *name, int len);
PacketSetDumpLimits函数用于设置内核转储的限制值,包括文件所能存储的最大字节数与最大数据包数

,其原型如下:
BOOLEAN PacketSetDumpLimits(LPADAPTER AdapterObject,
    UINT maxfilesize, UINT maxnpacks);
PacketIsDumpEnded函数用于返回内核转储过程的状态,比如告诉通过PacketSetDumpLimits函数设置的一

个限制是否已经达到,其原型如下:
BOOLEAN PacketIsDumpEnded(LPADAPTER AdapterObject, BOOLEAN sync);
PacketSetLoopbackBehavior函数用于设置NPF驱动程序对环回数据的处理方式(捕获或丢弃),其原型如

下:
BOOLEAN PacketSetLoopbackBehavior(LPADAPTER AdapterObject, UINT LoopbackBehavior);

转载于:https://my.oschina.net/wolflion/blog/92768

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值