winpcap+libnids解析tcp包求助

问题描述

我用winpcap+libnids解析tcp包。现在用wpcap捕获帧没有问题。但是换作libnids后,编译运行都没有错误,就是抓不到tcp的包,这可能是什么原因呢?(我用的是libnids1.19中的例子程序).............voidsniff_callback(structtcp_stream*a_tcp,void**this_time_not_needed){.............}intmain(){pcap_if_t*alldevs;pcap_if_t*d;intinum;inti=0;char*pi;charpo[100];//pcap_t*adhandle;charerrbuf[PCAP_ERRBUF_SIZE];char*net_interface;/*获取本机设备列表*/if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING,NULL,&alldevs,errbuf)==-1){fprintf(stderr,"Errorinpcap_findalldevs:%sn",errbuf);exit(1);}/*打印列表*/for(d=alldevs;d;d=d->next){printf("%d.%s",++i,d->name);if(d->description)printf("(%s)n",d->description);elseprintf("(Nodescriptionavailable)n");}if(i==0){printf("nNointerfacesfound!MakesureWinPcapisinstalled.n");return-1;}printf("Entertheinterfacenumber(1-%d):",i);scanf("%d",&inum);if(inum<1||inum>i){printf("nInterfacenumberoutofrange.n");/*释放列表*/pcap_freealldevs(alldevs);return-1;}/*跳转到选中的适配器*/for(d=alldevs,i=0;i<inum-1;d=d->next,i++){//printf("d->name:%sn",d->name);}//d=alldevs->next;printf("d->name:%sn",d->name);pi=d->name;pi=pi+sizeof("rapcap://Device\")-1;printf("pi:%sn",pi);for(i=0;i<100;i++)po[i]='';strcpy(po,"\Device\");printf("%sn",po);strcat(po,pi);printf("%sn",po);net_interface=po;//此时就存储了我的网卡name指针nids_params.device=po;if(!nids_init()){fprintf(stderr,"%sn",nids_errbuf);exit(1);}nids_register_tcp(sniff_callback);nids_run();return0;}

解决方案

解决方案二:
nids_register_tcp(sniff_callback);你只是注册了一个回调函数,并没有写tcp怎么处理啊。
解决方案三:
同问,tcp回调函数根本就没有调用到

时间: 2024-08-02 12:54:19

winpcap+libnids解析tcp包求助的相关文章

java tcp 包扔出去以后,服务器收到了包体前被加了21个字节是为什么?

问题描述 客户端 通过 socket 长连接发送消息给服务器后,服务器收到的包体前面有21个字节,不是我包体的一部份,是不是java底层做了什么?当然,这个问题并不妨碍我正常开发,就是想知道这个是为什么?如有哪位朋友知道此解,请不吝指教,谢谢! 问题补充:andilyliao 写道 解决方案 这21个字节使用sniffer抓到的吗??如果是看看是不是报头呀 java本身不可能给你添加这21个字节的 而且java也没有办法解析tcp报头.

winpcap与socket相关问题求助

问题描述 winpcap与socket相关问题求助 想利用winpcap抓取数据包.去除mac与ip头后利用socket发送到本机应用程序.不知这样做是否可行.暂时不考虑rawsocket抓包 解决方案 当然可以,只要你能正确的还原数据. 解决方案二: 必须可行啊,本机环回网络的不会被winpcap抓取,放心再用socket发送吧

tcpip-写一个包含十个tcp包的pcap文件,出现多余的malformed packet:ethernet

问题描述 写一个包含十个tcp包的pcap文件,出现多余的malformed packet:ethernet pcap文件头没有写错的:然后就是一个接一个的packet,每个packet我是这样写的:timestamp+以太网报头+IP报头+TCP报头+22个空字节(这22个空字节也是我试了很多次才试出来的,写多或者写少时,wireshark都会报错,并且只会显示一个包,而不是10个),具体些每个packet的代码如下: for (int i = 0; i < 10; i++){ myPacke

app-APP签名后安装报错“解析程序包时出现错误”

问题描述 APP签名后安装报错"解析程序包时出现错误" 今天升级应用时,被告之签名发生变化--要知道我根本没有做过相关的任何操作,即使有签名也一定是MyEclipse帮我做的,而我对此一无所知.在网上查了一下,感觉还是有很多问题没有答案,所以问一下: 1.我之前生成的应用,发布了,现在我的笔记本换了,各应用包括Java.SDK.ADT等也换了.只有SDK和ADT.所有源码有备份,不知道还是否可以得到原应用文件的相关签名文件,包括如果存在的密钥或密码? 2.如果还有办法得到,应该也有办法

python用socket解析数据包的问题

问题描述 python用socket解析数据包的问题 用python做个抓包工具,下面有写代码不明白,请老师指点一下. while True: packet = s.recvfrom(65565) packet = packet[0] ip_header = packet[0:20] iph = unpack('!BBHHHBBH4s4s' , ip_header) version_ihl = iph[0] version = version_ihl >> 4 ihl = version_ih

tcp-为什么我编的抓包程序抓的TCP包源地址都是本机地址啊,下面是源码,新手求大神指点!!

问题描述 为什么我编的抓包程序抓的TCP包源地址都是本机地址啊,下面是源码,新手求大神指点!! #include #include #include using namespace std; #define SIO_RCVALL _WSAIOW(IOC_VENDOR, 1) #define MAXLEN 65535 //定义IP报头 typedef struct _iph { unsigned char ver_len; unsigned char ser; unsigned short dat

SharpPcap/WinPcap抓包求助

问题描述 最近要写一个流量监控的软件,用到了SharpPcap框架,苦于没有好的参考资料和开发文档,一些问题不知道如何解决总的流量统计已经实现了,但是针对每个软件的流量计算还没有写出来思路是:获取进程ID,通过ID得到占用的端口,抓取每个端口的包,统计大小现在端口已经扫出来了,就是不知道抓包和分析包还望各位赐教 解决方案 解决方案二:http://bbs.csdn.net/topics/391018988参考我给出的代码.解决方案三: 解决方案四:引用1楼lineages的回复: http://

tcpdump抓的tcp包超过了mtu并且和ack帧序列号不同步的原因

最近在用tcpdump对tcp的相关参数进行学习和分析,linux下的抓包结果起初让我感到奇怪,我手边的ubuntu和debian都出现了相同的现象. 具体的就是抓到的发送方的tcp的数据段的长度经常性地发生变化,并且接收方回复的接收帧的序列号和发送方不同步,例如发送方发送了序列号为25:7265,接收方回复的ack里却有序列号是2921的.并且ack后确认的序列号是按照等差的规律递增. 找了一段时候,还是在stackoverflowhttp://stackoverflow.com/a/2351

winpcap抓不到包

问题描述 我用sharppcap抓包调试的时候杀了系统的主进程蓝屏了2次,然后用winpcap就抓不到包了,要不就漏包,明明浏览器打开的网址就是抓不到.做了系统也不行.今天突然想到用wireshark试一下,没想到也是抓不到包或者漏包.原来不是这样的.是不是winpcap哪里编译错误了,自己又闹不了,有没有什么办法.恳求大家.