关于winpcap的问题

k3ner1 2008-12-16 03:52:04
我已经将网卡设置位混杂模式了,但是在代码中加入
if(-1 == pcap_compile(pd,&filter,filter_app,1,0))
{
fprintf(stderr,"编译过滤器失败!");
exit(2);
}

pcap_setfilter(pd,&filter);[
好像就开始只嗅探本机的相应代码了。当把上面的代码去掉的时候就可以接收网内的数据包了,这是为什么啊?
完整代码如下:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pcap.h>
void sniffer_pcap();
void print_if_info(pcap_if_t *rs);
void print_packet_context(u_char *user,const struct pcap_pkthdr *h,const u_char *p);
int main(int argc,char*argv[])
{
sniffer_pcap();
system("PAUSE");
return 0;
}
void sniffer_pcap()
{
pcap_if_t *alldevs;
pcap_if_t *cur,*p;
struct bpf_program filter;
struct pcap_pkthdr *header;
char filter_app[] = "port 23";
const u_char *packet;
u_int i;
char errbuf[PCAP_ERRBUF_SIZE+1];
if(-1 == pcap_findalldevs(&alldevs,errbuf))
{
fprintf(stderr,"find devs faild!");
exit(1);
}
else
{
cur = alldevs;
while(cur != NULL)
{
print_if_info(cur);
p = cur;
cur = cur->next;
}
}
pcap_t *pd = pcap_open_live(p->name,65535,1,1000,errbuf);
/* if(-1 == pcap_compile(pd,&filter,filter_app,1,0))
{
fprintf(stderr,"编译过滤器失败!");
exit(2);
}

pcap_setfilter(pd,&filter);*/
while(1)
{
pcap_next_ex(pd,&header,&packet);
// pcap_loop(pd,20,print_packet_context,NULL);
printf("packet length is:[%ld]\n",header->len);
printf("packet context:[");
for(i = 1;(i<(header->caplen+1));i++)
{
printf("%c",packet[i-1]);

}
printf("]\n");
}
pcap_freealldevs(alldevs);
pcap_close(pd);
free(cur);
free(p);
}
void print_if_info(pcap_if_t *rs)
{
printf("dev name:%s\n",rs->name);
printf("dev description:%s\n",rs->description);
}
void print_packet_context(u_char *user,const struct pcap_pkthdr *h,const u_char *p)
{
int i;
printf("packet length:[%d]\n",h->len);
printf("get packet length:[%d]\n",h->caplen);
printf("packet context:[");
for(i = 1;(i<(h->caplen+1));i++)
{
printf("%c",p[i-1]);

}
}
...全文
41 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
k3ner1 2008-12-16
  • 打赏
  • 举报
回复
我是新人没那么多分数给,见谅~~~

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧