亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ipt_ipp2p.c

?? 通過linux操作系統(tǒng)限制P2P的流量的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/*Search for appleJuice commands*/intsearch_apple (const unsigned char *payload, const u16 plen){    if ( (plen > 7) && (payload[6] == 0x0d) && (payload[7] == 0x0a) && (memcmp(payload, "ajprot", 6) == 0))  return (IPP2P_APPLE * 100);        return 0;}/*Search for BitTorrent commands*/intsearch_bittorrent (const unsigned char *payload, const u16 plen){    if (plen > 20)    {	/* test for match 0x13+"BitTorrent protocol" */	if (payload[0] == 0x13) 	{		if (memcmp(payload+1, "BitTorrent protocol", 19) == 0) return (IPP2P_BIT * 100);	}		/* get tracker commandos, all starts with GET /	* then it can follow: scrape| announce	* and then ?hash_info=	*/	if (memcmp(payload,"GET /",5) == 0)	{		/* message scrape */		if ( memcmp(payload+5,"scrape?info_hash=",17)==0 ) return (IPP2P_BIT * 100 + 1);		/* message announce */		if ( memcmp(payload+5,"announce?info_hash=",19)==0 ) return (IPP2P_BIT * 100 + 2);	}    }     else     {    	/* bitcomet encryptes the first packet, so we have to detect another     	 * one later in the flow */    	 /* first try failed, too many missdetections */    	//if ( size == 5 && get_u32(t,0) == __constant_htonl(1) && t[4] < 3) return (IPP2P_BIT * 100 + 3);    	    	/* second try: block request packets */    	if ( plen == 17 && get_u32(payload,0) == __constant_htonl(0x0d) && payload[4] == 0x06 && get_u32(payload,13) == __constant_htonl(0x4000) ) return (IPP2P_BIT * 100 + 3);    }    return 0;}/*check for Kazaa get command*/intsearch_kazaa (const unsigned char *payload, const u16 plen){    if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a) && memcmp(payload, "GET /.hash=", 11) == 0)	return (IPP2P_DATA_KAZAA * 100);    return 0;}/*check for gnutella get command*/intsearch_gnu (const unsigned char *payload, const u16 plen){    if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))    {	if (memcmp(payload, "GET /get/", 9) == 0)	return ((IPP2P_DATA_GNU * 100) + 1);	if (memcmp(payload, "GET /uri-res/", 13) == 0) return ((IPP2P_DATA_GNU * 100) + 2);     }    return 0;}/*check for gnutella get commands and other typical data*/intsearch_all_gnu (const unsigned char *payload, const u16 plen){        if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))    {		if (memcmp(payload, "GNUTELLA CONNECT/", 17) == 0) return ((IPP2P_GNU * 100) + 1);	if (memcmp(payload, "GNUTELLA/", 9) == 0) return ((IPP2P_GNU * 100) + 2);            	if ((memcmp(payload, "GET /get/", 9) == 0) || (memcmp(payload, "GET /uri-res/", 13) == 0))	{        		u16 c=8;		const u16 end=plen-22;		while (c < end) {			if ( payload[c] == 0x0a && payload[c+1] == 0x0d && ((memcmp(&payload[c+2], "X-Gnutella-", 11) == 0) || (memcmp(&payload[c+2], "X-Queue:", 8) == 0))) 				return ((IPP2P_GNU * 100) + 3);			c++;		}	}    }    return 0;}/*check for KaZaA download commands and other typical data*/intsearch_all_kazaa (const unsigned char *payload, const u16 plen){    if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))    {	if (memcmp(payload, "GIVE ", 5) == 0) return ((IPP2P_KAZAA * 100) + 1);        	if (memcmp(payload, "GET /", 5) == 0) {		u16 c = 8;		const u16 end=plen-22;		while (c < end) {			if ( payload[c] == 0x0a && payload[c+1] == 0x0d && ((memcmp(&payload[c+2], "X-Kazaa-Username: ", 18) == 0) || (memcmp(&payload[c+2], "User-Agent: PeerEnabler/", 24) == 0)))				return ((IPP2P_KAZAA * 100) + 2);			c++;		}	}    }    return 0;}/*fast check for edonkey file segment transfer command*/intsearch_edk (const unsigned char *payload, const u16 plen){    if (payload[0] != 0xe3) 	return 0;    else {	if (payload[5] == 0x47) 	    return (IPP2P_DATA_EDK * 100);	else 		    return 0;    }}/*intensive but slower search for some edonkey packets including size-check*/intsearch_all_edk (const unsigned char *payload, const u16 plen){    if (payload[0] != 0xe3) 	return 0;    else {	//t += head_len;		const u16 cmd = get_u16(payload, 1);	if (cmd == (plen - 5)) {	    switch (payload[5]) {		case 0x01: return ((IPP2P_EDK * 100) + 1);	/*Client: hello or Server:hello*/		case 0x4c: return ((IPP2P_EDK * 100) + 9);	/*Client: Hello-Answer*/	    }	}	return 0;     }}/*fast check for Direct Connect send command*/intsearch_dc (const unsigned char *payload, const u16 plen){    if (payload[0] != 0x24 ) 	return 0;    else {	if (memcmp(&payload[1], "Send|", 5) == 0)	    return (IPP2P_DATA_DC * 100);	else	    return 0;    }	}/*intensive but slower check for all direct connect packets*/intsearch_all_dc (const unsigned char *payload, const u16 plen){//    unsigned char *t = haystack;    if (payload[0] == 0x24 && payload[plen-1] == 0x7c)     {    	const unsigned char *t=&payload[1];    		/* Client-Hub-Protocol */	if (memcmp(t, "Lock ", 5) == 0)	 		return ((IPP2P_DC * 100) + 1);	/* Client-Client-Protocol, some are already recognized by client-hub (like lock) */	if (memcmp(t, "MyNick ", 7) == 0)	 	return ((IPP2P_DC * 100) + 38);     }    return 0;}/*check for mute*/intsearch_mute (const unsigned char *payload, const u16 plen){	if ( plen == 209 || plen == 345 || plen == 473 || plen == 609 || plen == 1121 )	{		//printk(KERN_DEBUG "size hit: %u",size);		if (memcmp(payload,"PublicKey: ",11) == 0 )		{ 			return ((IPP2P_MUTE * 100) + 0);			/*			if (memcmp(t+size-14,"\x0aEndPublicKey\x0a",14) == 0)			{				printk(KERN_DEBUG "end pubic key hit: %u",size);							}*/		}	}	return 0;}/* check for xdcc */intsearch_xdcc (const unsigned char *payload, const u16 plen){	/* search in small packets only */	if (plen > 20 && plen < 200 && payload[plen-1] == 0x0a && payload[plen-2] == 0x0d && memcmp(payload,"PRIVMSG ",8) == 0)	{				u16 x=10;		const u16 end=plen - 13;				/* is seems to be a irc private massage, chedck for xdcc command */		while (x < end)		{			if (payload[x] == ':')			{				if ( memcmp(&payload[x+1],"xdcc send #",11) == 0 )					return ((IPP2P_XDCC * 100) + 0);			}			x++;		}	}	return 0;}/* search for waste */int search_waste(const unsigned char *payload, const u16 plen){	if ( plen >= 8 && memcmp(payload,"GET.sha1:",9) == 0)		return ((IPP2P_WASTE * 100) + 0);	return 0;}static struct {    int command;    __u8 short_hand;			/*for fucntions included in short hands*/    int packet_len;    int (*function_name) (const unsigned char *, const u16);} matchlist[] = {    {IPP2P_EDK,SHORT_HAND_IPP2P,20, &search_all_edk},//    {IPP2P_DATA_KAZAA,SHORT_HAND_DATA,200, &search_kazaa},//    {IPP2P_DATA_EDK,SHORT_HAND_DATA,60, &search_edk},//    {IPP2P_DATA_DC,SHORT_HAND_DATA,26, &search_dc},    {IPP2P_DC,SHORT_HAND_IPP2P,5, search_all_dc},//    {IPP2P_DATA_GNU,SHORT_HAND_DATA,40, &search_gnu},    {IPP2P_GNU,SHORT_HAND_IPP2P,5, &search_all_gnu},    {IPP2P_KAZAA,SHORT_HAND_IPP2P,5, &search_all_kazaa},    {IPP2P_BIT,SHORT_HAND_IPP2P,20, &search_bittorrent},    {IPP2P_APPLE,SHORT_HAND_IPP2P,5, &search_apple},    {IPP2P_SOUL,SHORT_HAND_IPP2P,5, &search_soul},    {IPP2P_WINMX,SHORT_HAND_IPP2P,2, &search_winmx},    {IPP2P_ARES,SHORT_HAND_IPP2P,5, &search_ares},    {IPP2P_MUTE,SHORT_HAND_NONE,200, &search_mute},    {IPP2P_WASTE,SHORT_HAND_NONE,5, &search_waste},    {IPP2P_XDCC,SHORT_HAND_NONE,5, &search_xdcc},    {0,0,0,NULL}};static struct {    int command;    __u8 short_hand;			/*for fucntions included in short hands*/    int packet_len;    int (*function_name) (unsigned char *, int);} udp_list[] = {    {IPP2P_KAZAA,SHORT_HAND_IPP2P,14, &udp_search_kazaa},    {IPP2P_BIT,SHORT_HAND_IPP2P,23, &udp_search_bit},    {IPP2P_GNU,SHORT_HAND_IPP2P,11, &udp_search_gnu},    {IPP2P_EDK,SHORT_HAND_IPP2P,9, &udp_search_edk},    {IPP2P_DC,SHORT_HAND_IPP2P,12, &udp_search_directconnect},        {0,0,0,NULL}};static intmatch(const struct sk_buff *skb,      const struct net_device *in,      const struct net_device *out,      const void *matchinfo,      int offset,#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)      const void *hdr,      u_int16_t datalen,#endif      int *hotdrop){    const struct ipt_p2p_info *info = matchinfo;    unsigned char  *haystack;    struct iphdr *ip = skb->nh.iph;    int p2p_result = 0, i = 0;//    int head_len;    int hlen = ntohs(ip->tot_len)-(ip->ihl*4);	/*hlen = packet-data length*/    /*must not be a fragment*/    if (offset) {	if (info->debug) printk("IPP2P.match: offset found %i \n",offset);	return 0;    }        /*make sure that skb is linear*/    if(skb_is_nonlinear(skb)){	if (info->debug) printk("IPP2P.match: nonlinear skb found\n");	return 0;    }    haystack=(char *)ip+(ip->ihl*4);		/*haystack = packet data*/    switch (ip->protocol){	case IPPROTO_TCP:		/*what to do with a TCP packet*/	{	    struct tcphdr *tcph = (void *) ip + ip->ihl * 4;	    	    if (tcph->fin) return 0;  /*if FIN bit is set bail out*/	    if (tcph->syn) return 0;  /*if SYN bit is set bail out*/	    if (tcph->rst) return 0;  /*if RST bit is set bail out*/	    	    haystack += tcph->doff * 4; /*get TCP-Header-Size*/	    hlen -= tcph->doff * 4;	    while (matchlist[i].command) {		if ((((info->cmd & matchlist[i].command) == matchlist[i].command) ||		    ((info->cmd & matchlist[i].short_hand) == matchlist[i].short_hand)) &&		    (hlen > matchlist[i].packet_len)) {			    p2p_result = matchlist[i].function_name(haystack, hlen);			    if (p2p_result) 			    {				if (info->debug) printk("IPP2P.debug:TCP-match: %i from: %u.%u.%u.%u:%i to: %u.%u.%u.%u:%i Length: %i\n", 				    p2p_result, NIPQUAD(ip->saddr),ntohs(tcph->source), NIPQUAD(ip->daddr),ntohs(tcph->dest),hlen);				return p2p_result;    			    }    		}	    i++;	    }	    return p2p_result;	}		case IPPROTO_UDP:		/*what to do with an UDP packet*/	{	    struct udphdr *udph = (void *) ip + ip->ihl * 4;	    	    while (udp_list[i].command){		if ((((info->cmd & udp_list[i].command) == udp_list[i].command) ||		    ((info->cmd & udp_list[i].short_hand) == udp_list[i].short_hand)) &&		    (hlen > udp_list[i].packet_len)) {			    p2p_result = udp_list[i].function_name(haystack, hlen);			    if (p2p_result){				if (info->debug) printk("IPP2P.debug:UDP-match: %i from: %u.%u.%u.%u:%i to: %u.%u.%u.%u:%i Length: %i\n", 				    p2p_result, NIPQUAD(ip->saddr),ntohs(udph->source), NIPQUAD(ip->daddr),ntohs(udph->dest),hlen);				return p2p_result;			    }		}	    i++;	    }				    return p2p_result;	}    	default: return 0;    }}static intcheckentry(const char *tablename,            const struct ipt_ip *ip,	    void *matchinfo,	    unsigned int matchsize,	    unsigned int hook_mask){        /* Must specify -p tcp *//*    if (ip->proto != IPPROTO_TCP || (ip->invflags & IPT_INV_PROTO)) { *	printk("ipp2p: Only works on TCP packets, use -p tcp\n"); *	return 0; *    }*/    return 1;}									    static struct ipt_match ipp2p_match = { #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)	{ NULL, NULL }, 	"ipp2p", 	&match, 	&checkentry, 	NULL, 	THIS_MODULE#endif#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)	.name		= "ipp2p",	.match		= &match,	.checkentry	= &checkentry,	.me		= THIS_MODULE,#endif};static int __init init(void){    printk(KERN_INFO "IPP2P v%s loading\n", IPP2P_VERSION);    return ipt_register_match(&ipp2p_match);}	static void __exit fini(void){    ipt_unregister_match(&ipp2p_match);    printk(KERN_INFO "IPP2P v%s unloaded\n", IPP2P_VERSION);    }	module_init(init);module_exit(fini);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
人人超碰91尤物精品国产| 一区二区三区在线看| 麻豆91在线播放| 日韩一区二区在线看| 奇米影视在线99精品| 久久综合九色综合久久久精品综合| 久久精品国内一区二区三区| 国产日韩高清在线| 色94色欧美sute亚洲13| 午夜不卡在线视频| 久久女同精品一区二区| www.亚洲激情.com| 亚洲影院在线观看| 精品嫩草影院久久| a美女胸又www黄视频久久| 亚洲高清免费在线| 亚洲精品一区在线观看| 成人午夜短视频| 亚洲18色成人| 国产天堂亚洲国产碰碰| 色域天天综合网| 久久精品国产秦先生| 国产精品亲子伦对白| 欧美在线一二三四区| 精品一区二区在线视频| 综合久久久久久| 日韩精品中文字幕一区二区三区| 99久久久免费精品国产一区二区 | 在线精品视频一区二区| 日韩电影在线观看一区| 国产精品久久久久9999吃药| 精品视频免费在线| 成人午夜激情影院| 麻豆极品一区二区三区| 亚洲日本青草视频在线怡红院| 欧美精品在欧美一区二区少妇| 成人午夜看片网址| 九九视频精品免费| 亚洲高清在线精品| 亚洲女同ⅹxx女同tv| 久久精品一区二区三区不卡牛牛| 欧美日韩综合不卡| 99国产一区二区三精品乱码| 激情综合网av| 日韩黄色小视频| 亚洲高清视频的网址| 国产精品福利影院| 久久综合九色综合欧美亚洲| 91精品国产免费| 欧美在线一区二区三区| 99视频在线精品| 国产高清精品久久久久| 蜜桃精品视频在线| 亚洲超碰精品一区二区| 亚洲精品免费播放| 中文字幕视频一区| 国产日韩欧美一区二区三区乱码| 欧美mv日韩mv国产网站app| 欧美人动与zoxxxx乱| 在线中文字幕一区| 95精品视频在线| 99精品在线观看视频| 不卡高清视频专区| 成人一道本在线| 国产91精品精华液一区二区三区 | 国产美女一区二区三区| 久久国产精品72免费观看| 日本中文字幕一区二区有限公司| 午夜视频在线观看一区二区三区| 亚洲精品久久7777| 一区二区三区四区不卡在线| 亚洲视频在线观看三级| 亚洲欧美日本在线| 一区二区日韩av| 午夜久久久影院| 午夜欧美在线一二页| 日韩国产在线观看一区| 日韩av电影免费观看高清完整版| 天堂av在线一区| 久久精品噜噜噜成人88aⅴ| 久久精品国产久精国产爱| 国内精品伊人久久久久av一坑 | 中文av一区特黄| 国产精品丝袜一区| 欧美激情一区三区| 中文字幕一区在线观看视频| 亚洲摸摸操操av| 亚洲超丰满肉感bbw| 麻豆精品在线看| 国产一区二区视频在线播放| 国产精品 欧美精品| 99精品在线观看视频| 精品视频一区二区三区免费| 欧美一区永久视频免费观看| 久久久99久久| 亚洲精品成人天堂一二三| 日韩电影在线一区二区| 国产资源在线一区| 99久久免费视频.com| 欧美日本一区二区| 久久久久久久一区| 亚洲三级在线播放| 奇米色777欧美一区二区| 国产一区中文字幕| 97久久久精品综合88久久| 在线成人免费视频| 国产欧美日产一区| 亚洲一区视频在线观看视频| 久久不见久久见免费视频7| 成人午夜av在线| 91精品欧美久久久久久动漫| 欧美高清一级片在线观看| 图片区小说区区亚洲影院| 国产精品一区在线观看乱码| 欧美视频日韩视频| 久久精品男人的天堂| 午夜精品一区二区三区电影天堂| 精品亚洲aⅴ乱码一区二区三区| 不卡一区二区三区四区| 宅男噜噜噜66一区二区66| 欧美激情一区二区| 免费在线观看视频一区| 成人国产视频在线观看| 日韩欧美国产系列| 夜色激情一区二区| 高清成人在线观看| 在线综合+亚洲+欧美中文字幕| 国产精品丝袜黑色高跟| 裸体一区二区三区| 在线观看免费亚洲| 国产亚洲综合av| 久久99精品国产麻豆婷婷洗澡| 99riav一区二区三区| 久久老女人爱爱| 蜜臀av一区二区| 欧美日韩中文另类| 亚洲免费成人av| 成人免费黄色大片| 国产亚洲精品7777| 美国三级日本三级久久99| 欧美日韩一区不卡| 亚洲精品日韩一| 波多野结衣亚洲| 久久久亚洲欧洲日产国码αv| 日韩电影在线观看电影| 欧美午夜精品理论片a级按摩| 一区精品在线播放| 成人激情图片网| 日本一区二区电影| 从欧美一区二区三区| 久久久久久一级片| 国产一区二区三区| 精品国产乱码久久久久久图片 | 亚洲女同一区二区| 99免费精品在线| 国产精品乱子久久久久| 国产麻豆视频一区二区| 久久综合色播五月| 国产揄拍国内精品对白| 26uuu成人网一区二区三区| 美女视频免费一区| 日韩三级免费观看| 免费国产亚洲视频| 日韩精品影音先锋| 国产在线播精品第三| 久久综合九色综合97婷婷| 国产在线不卡一卡二卡三卡四卡| 欧美精品一区二区三区蜜臀 | 日韩美女久久久| 色老汉av一区二区三区| 樱花影视一区二区| 欧美人与性动xxxx| 免费看欧美美女黄的网站| 91精品国产91热久久久做人人| 免费成人在线观看| 久久网站最新地址| 国产91综合网| 成人欧美一区二区三区黑人麻豆| 99精品视频中文字幕| 亚洲一区二区视频| 日韩一级免费观看| 国产精品资源在线看| 国产精品丝袜91| 91极品视觉盛宴| 日本vs亚洲vs韩国一区三区| 精品久久久久久亚洲综合网 | 久久久国际精品| 91免费视频大全| 亚洲一区二区三区视频在线播放 | 高清av一区二区| 一区二区三区国产豹纹内裤在线| 欧美视频一区二区三区在线观看 | 一区在线观看免费| 欧美亚洲国产bt| 久久电影网站中文字幕| 国产精品国模大尺度视频| 欧美日韩中文字幕一区二区| 国精产品一区一区三区mba视频| 国产精品欧美一级免费| 欧美军同video69gay|