如何得到ip包中正确的端口和序列等信息?
我已取得数据包数据buf(unsigned char*)//via winpcap lib
int off = 0;
...
hdr = (struct bpf_hdr *)(buf+off);
off+= hdr->bh_hdrlen;
ip = (IP*)(buf + off + ETHERNET_HEADER_LENGTH);//结构ip中的数据都是对的(srcadd,dstadrr等)
tcp = (TCP*)((unsigned char*)ip + (ip->HdrLen & IP_HDRLEN_MASK));//我查了很多例程都是这样写的,可是最后得到tcp->srcport等数据都不对,htons,ntohs我都试了可还是不对~ 急~ 望高手指教~!
问题点数:0、回复次数:6Top
1 楼zfb7901(zfb)回复于 2003-08-03 11:57:54 得分 0
我这有实例可以做到没有问题!zfb7901@163.comTop
2 楼duguyai(独孤崖)回复于 2003-08-12 00:24:16 得分 0
自己解决了Top
3 楼chinawzg(风雨)回复于 2003-08-22 02:06:37 得分 0
与数据包的类型中的数据结构有关
Top
4 楼danceflash(Wine)回复于 2003-08-22 10:02:27 得分 0
怎么解决的? ^_^Top
5 楼chinawzg(风雨)回复于 2003-08-22 21:35:36 得分 0
为些事路由会处理的Top
6 楼adamw(无花果)回复于 2003-09-01 16:35:56 得分 0
ip = (IP*)(buf + off + ETHERNET_HEADER_LENGTH);//原有的程序
ip = (IP*)(buf);//BUF指的是接受缓冲区
IP是否指向接收数据包的头部?
如果用你原来的(第一行)程序,那么IP就指到什么地方去了?
如果是对的,那么直接应用下面:可以得到TCP包的头部,然后按TCP的协议进行解析就可以了?
tcp = (TCP*)((unsigned char*)ip + (ip->HdrLen)* 4);//我查了很多例Top



