winpcap+libnids解析tcp包求助
我用winpcap+libnids解析tcp包。现在用wpcap捕获帧没有问题。但是换作libnids后,编译运行都没有错误,就是抓不到tcp的包,这可能是什么原因呢?(我用的是libnids1.19中的例子程序)
.............
void
sniff_callback (struct tcp_stream *a_tcp, void **this_time_not_needed)
{
.............
}
int
main ()
{
pcap_if_t *alldevs;
pcap_if_t *d;
int inum;
int i=0;
char *pi;
char po[100];
//pcap_t *adhandle;
char errbuf[PCAP_ERRBUF_SIZE];
char* net_inte易做图ce;
/* 获取本机设备列表 */
if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)
{
fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);
exit(1);
}
/* 打印列表 */
for(d=alldevs; d; d=d->next)
{
printf("%d. %s", ++i, d->name);
if (d->description)
printf(" (%s)\n", d->description);
else
printf(" (No description available)\n");
}
if(i==0)
{
printf("\nNo inte易做图ces found! Make sure WinPcap is installed.\n");
return -1;
}
printf("Enter the inte易做图ce number (1-%d):",i);
scanf("%d", &inum);
if(inum < 1 || inum > i)
{
printf("\nInte易做图ce number out of range.\n");
/* 释放列表 */
pcap_freealldevs(alldevs);
return -1;
}
/* 跳转到选中的适配器 */
for(d=alldevs, i=0; i<inum-1 ;d=d->next, i++)
{
//printf("d->name:%s\n",d->name);
}
//d = alldevs->next;
printf("d->name:%s\n",d->name);
pi = d->name;
pi = pi + sizeof("rapcap://Device\\") -1;
printf("pi:%s\n",pi);
for(i=0;i<100;i++)
po[i] = '\0';
strcpy(po,"\\Device\\");
printf("%s\n",po);
strcat(po,pi);
printf("%s\n",po);
net_inte易做图ce = po;
//此时就存储了我的网卡name指针
nids_params.device=po;
if (!nids_init ())
{
fprintf(stderr,"%s\n",nids_errbuf);
exit(1);
}
nids_register_tcp (sniff_callback);
nids_run ();
return 0;
}
--------------------编程问答-------------------- nids_register_tcp (sniff_callback);
你只是注册了一个回调函数,并没有写tcp怎么处理啊。 --------------------编程问答-------------------- 同问,tcp回调函数根本就没有调用到
补充:云计算 , 云安全