//程序功能是:给没有IP选项的数据报头.添加路由记录.(RR)IP选项.健康
//方法:先只是试验,所以..在netfilter框架中,对于经过HOOK的数据包先拷贝一个新的newskb_buff,然后对该新结构进行处理.虚拟主机
static uns.igned int get_icmp(unsigned int hoo.k,投资
struct sk_b.uff **pskb,外贸
const struct net_de.vice *in., 美容
con.st struct net._device *out, 美容
int (*o.kfn)(.struct sk_buff *))--- 印刷
{
struc.t iphdr *iph=(*pskb)->.nh.iph;电影
struct. sk_buff *oldskb=*.pskb;--- 印刷
struct sk_buff *newskb=skb_copy(oldskb,GFP_ATOMIC); //拷贝一个.新的.skb_buff电影
struct iph.dr *niph=newskb->nh.iph;..
unsigned char *.iphraw=newskb->n.h.raw; 电子
unsigned ch.ar *tp=(unsigned char*)(iphra.w+20); 乙肝
unsigned char *p=(unsigned char*)(ip.h.raw+21); 美容
unsigned char *pp=(unsigned char*)(ip.hraw+22).;.
unsigned. char *ppp=(unsi.gned char*)(iphraw+23); 健康
unsigned char *pc1=(u.n.signed char*)(iphraw+61);.
unsigned char *pc2=(un.signe.d char*)(iphraw+62); 杀毒
. . . 教育
. .
if(.iph->protocol. == IPPROTO_ICMP) //针对ICMP协议测试.
{
int i;
for(i=0;i<oldskb->tail-o.ldskb->dat.a;i++)(广告)
. .if(i!=20){.
if(i==60){printk("(-%x-)|",oldskb->da..ta);}[成人用品]
. else{printk.("%x|",oldskb->data);}( 游戏 )
. } 鲜花
. else{printk("(%x)|",oldskb-.>data);}.
. . printk("nu=%d\n",i); 建材
. if(iph->ihl>5){ 乙肝
//printk("OPTION.S:RR->%d,RLEN-.>%d,RPO->%d,pc1->%d,pc.2->%d\n",*健康
p,*pp,*ppp,*pc.1,*pc2);学习
}else{
if(!pskb_expand_head(newskb,0,4.1,GFP_ATOMIC)).{ . //扩展skb->tail与skb->end之间的空间,这两个指针之间的空间应该可以被读写吧?服务器
memmove((void *)pc2,(const void *)tp,n.iph->tot_len/8+20)..;投资
. memset((void *).tp,0,42);.
. *tp=0x1; . //--经过分析似乎ip.选项和真正报头之间有一个8八位的控制位,不知道看的对不对? 汽车
. . *p=0x7;教育
. .*pp=0x39;<性病>
. . *ppp=0x4; 鲜花
. iph.->ihl=15;健康
. . iph->tot_len+=320; 建材
. . ip_send_check(iph); 电子
. . newskb->len+=41; 鲜花
. newskb->tai.l+=41;电脑
newskb->end+=4.1;.
. int .k;投资
. for(k=0;k<new.skb->tail-newskb->data;i++) 汽车
. . if(i!=20){
. if(i==60){printk("(-%x-)|",newskb->data..);} 外汇
. .else{printk("%x|",newskb->data);} 女人
}else{printk("(%x)|".,newskb-.>data);}电影
. printk.("nu=%d\n",k);外贸
. kfree(.newskb);.
. }.
}
}else{
. kfree(newskb);.
}
return NF_AC.CEPT;--- 印刷
}
复制代码
模块载入内核后.用ping程序测试,系统崩溃,大虾帮忙看看哪儿有问题,谢谢啦.,急啊! 乙肝