2 个解决方案
#1
sk_buff你都填充好了,其它的就简单了! 看看sk_buff的结构吧。
TCP包端口号: skb->h->th->dest/source
至于你说的HTTP数据,那么需要熟悉协议,自己解析了,比如:
ip数据位于 skb->data + skb->nh.iph->ihl * 4 处;
udp数据位于skb->data + skb->nh.iph->ihl *4 +sizeof(struct udphdr)处;
tcp数据位于skb->data + skb->nh.iph->ihl*4 +sizeof(struct tcphdr)出;
至于http数据,下层协议一般是TCP,所以HTTP数据通常就是从skb->data + skb->nh.iph->ihl*4 +sizeof(struct tcphdr)开始...
大概意思就这样,自己结合内核和sk_buff看看吧。
good luck!
TCP包端口号: skb->h->th->dest/source
至于你说的HTTP数据,那么需要熟悉协议,自己解析了,比如:
ip数据位于 skb->data + skb->nh.iph->ihl * 4 处;
udp数据位于skb->data + skb->nh.iph->ihl *4 +sizeof(struct udphdr)处;
tcp数据位于skb->data + skb->nh.iph->ihl*4 +sizeof(struct tcphdr)出;
至于http数据,下层协议一般是TCP,所以HTTP数据通常就是从skb->data + skb->nh.iph->ihl*4 +sizeof(struct tcphdr)开始...
大概意思就这样,自己结合内核和sk_buff看看吧。
good luck!
#2
现在基本问题解决了,但获取HTTP的包老是获取不到正确的位置。 抓包发现tcp的头有时是20个字节,有时候又是32个字节。
还请高手指教一下,如果正确得到http的数据。再次感谢。。。。。
还请高手指教一下,如果正确得到http的数据。再次感谢。。。。。
#1
sk_buff你都填充好了,其它的就简单了! 看看sk_buff的结构吧。
TCP包端口号: skb->h->th->dest/source
至于你说的HTTP数据,那么需要熟悉协议,自己解析了,比如:
ip数据位于 skb->data + skb->nh.iph->ihl * 4 处;
udp数据位于skb->data + skb->nh.iph->ihl *4 +sizeof(struct udphdr)处;
tcp数据位于skb->data + skb->nh.iph->ihl*4 +sizeof(struct tcphdr)出;
至于http数据,下层协议一般是TCP,所以HTTP数据通常就是从skb->data + skb->nh.iph->ihl*4 +sizeof(struct tcphdr)开始...
大概意思就这样,自己结合内核和sk_buff看看吧。
good luck!
TCP包端口号: skb->h->th->dest/source
至于你说的HTTP数据,那么需要熟悉协议,自己解析了,比如:
ip数据位于 skb->data + skb->nh.iph->ihl * 4 处;
udp数据位于skb->data + skb->nh.iph->ihl *4 +sizeof(struct udphdr)处;
tcp数据位于skb->data + skb->nh.iph->ihl*4 +sizeof(struct tcphdr)出;
至于http数据,下层协议一般是TCP,所以HTTP数据通常就是从skb->data + skb->nh.iph->ihl*4 +sizeof(struct tcphdr)开始...
大概意思就这样,自己结合内核和sk_buff看看吧。
good luck!
#2
现在基本问题解决了,但获取HTTP的包老是获取不到正确的位置。 抓包发现tcp的头有时是20个字节,有时候又是32个字节。
还请高手指教一下,如果正确得到http的数据。再次感谢。。。。。
还请高手指教一下,如果正确得到http的数据。再次感谢。。。。。