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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tcp_scan.c

?? TCP/IP商品掃描器 0.1
?? C
?? 第 1 頁 / 共 2 頁
字號:
					else if (entry == (struct __sockaddr_rb *)-1)						return -1;				}			}		}	}	#undef __offset	return 0;}#ifdef IPV6static int __proc_icmp6_packet(const struct icmp6_hdr *icmp6, size_t icmplen,							   struct sockaddr *saddr, socklen_t addrlen,							   struct rb_root *root){	struct __sockaddr_rb *entry;	const struct ip6_hdr *ip6hdr;	const struct tcphdr *tcphdr;	if (icmp6->icmp6_type == ICMP6_DST_UNREACH)	{		if (icmplen >= sizeof (struct icmp6_hdr) + sizeof (struct ip6_hdr) + 8)		{			ip6hdr = (const struct ip6_hdr *)(icmp6 + 1);			tcphdr = (const struct tcphdr *)(ip6hdr + 1);			if (ntohs(tcphdr->th_sport) == __tcp_scanner_port &&				ntohl(tcphdr->th_seq) == __tcp_header_seq)			{				((struct sockaddr_in6 *)saddr)->sin6_port = tcphdr->th_dport;				if (!(entry = __rb_insert_sockaddr(saddr, addrlen, root)))				{					if (__info(saddr, addrlen, TS_UNREACH, __arg) < 0)						return -1;				}				else if (entry == (struct __sockaddr_rb *)-1)					return -1;			}		}	}	return 0;}#endifstatic int __recv_icmp_packet(int sockfd, struct rb_root *root){	/* Biggest IPv4 header, ICMP header, the returned IP header with	   8 bytes TCP header. */	#define __BUFSIZE \		((0xf << 2) + sizeof (struct icmphdr) + (0xf << 2) + 8)	char buf[__BUFSIZE];	struct ip *iphdr = (struct ip *)buf;#ifdef IPV6	struct ip6_hdr *ip6hdr = (struct ip6_hdr *)buf;#endif	union __sa_union un;	socklen_t addrlen;	ssize_t n;	while (addrlen = sizeof (union __sa_union), (n = recvfrom(sockfd, buf,							__BUFSIZE, 0, &un.sockaddr, &addrlen)) >= 0)	{		if (un.sockaddr.sa_family == AF_INET)		{			if (n >= sizeof (struct ip) && iphdr->ip_p == IPPROTO_ICMP &&				n >= (iphdr->ip_hl << 2) + sizeof (struct icmp))			{				struct icmp *icmp = (struct icmp *)(buf + (iphdr->ip_hl << 2));				if (__proc_icmp_packet(icmp, n - (iphdr->ip_hl << 2),									   &un.sockaddr, addrlen, root) < 0)					break;			}		}#ifdef IPV6		else if (un.sockaddr.sa_family == AF_INET6)		{			if (n >= sizeof (struct ip6_hdr) + sizeof (struct icmp6_hdr) &&				ip6hdr->ip6_nxt == IPPROTO_ICMPV6)			{				struct icmp6_hdr *icmp6 = (struct icmp6_hdr *)(ip6hdr + 1);				if (__proc_icmp6_packet(icmp6, n - sizeof (struct ip6_hdr),										&un.sockaddr, addrlen, root) < 0)					break;			}		}#endif	}	#undef __BUFSIZE	return n < 0 && errno == EAGAIN ? 0 : -1;}inline static int#ifdef IPV6__scan_ip_seg(const struct in_addr *address, unsigned int bits,			  unsigned short port, int tcpsock, int icmpsock,			  int tcpsock6, int icmpsock6, const struct in_addr *myaddr,			  struct rb_root *root)#else__scan_ip_seg(const struct in_addr *address, unsigned int bits,			  unsigned short port, int tcpsock, int icmpsock,			  const struct in_addr *myaddr, struct rb_root *root)#endif{	unsigned int hostmax = 0;	unsigned int host;	struct sockaddr_in sin;	unsigned int bit = 1;	bzero(&sin, sizeof (struct sockaddr_in));	sin.sin_family = AF_INET;	for (host = 0; host < 32 - bits; host++)	{		hostmax |= bit;		bit <<= 1;	}	host = ntohl(address->s_addr) & ~hostmax;	hostmax |= ntohl(address->s_addr);	do	{		sin.sin_addr.s_addr = htonl(host);		if (!__rb_search_sockaddr((struct sockaddr *)&sin,					sizeof (struct sockaddr_in), root))		{			__tcp_syn(tcpsock, __tcp_scanner_port, port,					  myaddr, (struct sockaddr *)&sin,					  sizeof (struct sockaddr_in));		}		if (__recv_tcp_packet(tcpsock, root) < 0)			return -1;		if (__recv_icmp_packet(icmpsock, root) < 0)			return -1;#ifdef IPV6		if (tcpsock6 >= 0)		{			if (__recv_tcp_packet(tcpsock6, root) < 0)				return -1;			if (__recv_icmp_packet(icmpsock6, root) < 0)				return -1;		}#endif	} while (host++ != hostmax);	return 0;}#ifdef IPV6inline static int__scan_ip6_seg(const struct in6_addr *address, unsigned int bits,			   unsigned short port, int tcpsock, int icmpsock,			   int tcpsock6, int icmpsock6, const struct in6_addr *myaddr,			   struct rb_root *root){	struct in6_addr hostmax;	struct in6_addr host;	struct sockaddr_in6 sin6;	unsigned char bit = 1;	int i, j;	bzero(&hostmax, sizeof (struct in6_addr));	for (i = 15; i > bits >> 3; i--)		hostmax.s6_addr[i] = 0xff;	for (j = 0; j < ((128 - bits) & 7); j++)	{		hostmax.s6_addr[i] |= bit;		bit <<= 1;	}	for (i = 0; i < 4; i++)	{		host.s6_addr32[i] = address->s6_addr32[i] & ~hostmax.s6_addr32[i];		hostmax.s6_addr32[i] |= address->s6_addr32[i];	}	bzero(&sin6, sizeof (struct sockaddr_in6));	sin6.sin6_family = AF_INET6;	while (1)	{		sin6.sin6_addr = host;		if (!__rb_search_sockaddr((struct sockaddr *)&sin6,					sizeof (struct sockaddr_in6), root))		{			__tcp_syn(tcpsock, __tcp_scanner_port, port,					  myaddr, (struct sockaddr *)&sin6,					  sizeof (struct sockaddr_in6));		}		if (tcpsock >= 0)		{			if (__recv_tcp_packet(tcpsock, root) < 0)				return -1;			if (__recv_icmp_packet(icmpsock, root) < 0)				return -1;		}		if (__recv_tcp_packet(tcpsock6, root) < 0)			return -1;		if (__recv_icmp_packet(icmpsock6, root) < 0)			return -1;		if (IN6_ARE_ADDR_EQUAL(&host, &hostmax))			break;		IN6_ADDR_NEXT(&host);	}	return 0;}#endif#ifdef IPV6static int __wait_response(int tcpsock, int icmpsock, int tcpsock6,						   int icmpsock6, struct rb_root *root)#elsestatic int __wait_response(int tcpsock, int icmpsock, struct rb_root *root)#endif{	time_t start = time(NULL);	fd_set all, rset;	struct timeval timeout;	int maxfd = -1;	int n;	#define __max(x, y)		((x) > (y) ? (x) : (y))	if (tcpsock >= 0)	{		FD_SET(tcpsock, &all);		FD_SET(icmpsock, &all);		maxfd = __max(tcpsock, icmpsock);	}#ifdef IPV6	if (tcpsock6 >= 0)	{		FD_SET(tcpsock6, &all);		FD_SET(icmpsock6, &all);		maxfd = __max(maxfd, __max(tcpsock6, icmpsock6));	}#endif	#undef __max	/* Wait at least 2*MSL for all IP segments to expire. */	while ((n = (__max_seg_lifetime << 1) - (time(NULL) - start)) >= 0)	{		timeout.tv_sec = n + 1;		timeout.tv_usec = 0;		rset = all;		if ((n = select(maxfd + 1, &rset, NULL, NULL, &timeout)) > 0)		{			if (tcpsock >= 0)			{				if (FD_ISSET(tcpsock, &rset))				{					if (__recv_tcp_packet(tcpsock, root) < 0)						return -1;				}				if (FD_ISSET(icmpsock, &rset))				{					if (__recv_icmp_packet(icmpsock, root) < 0)						return -1;				}			}#ifdef IPV6			if (tcpsock6 >= 0)			{				if (FD_ISSET(tcpsock6, &rset))				{					if (__recv_tcp_packet(tcpsock6, root) < 0)						return -1;				}				if (FD_ISSET(icmpsock6, &rset))				{					if (__recv_icmp_packet(icmpsock6, root) < 0)						return -1;				}			}#endif		}		else if (n == 0)			break;		else if (n < 0)			return -1;	}	return 0;}int tcp_scan(const struct addrseg *scope, const unsigned short *ports,			 unsigned int ifindex, const char *ifname, int resetuid,			 scan_info_t info, void *arg){	const struct addrseg *p;	const short *port;	int tcpsock = -1, icmpsock = -1;	struct in_addr ipaddr;#ifdef IPV6	int tcpsock6 = -1, icmpsock6 = -1;	struct in6_addr ip6addr;#endif	union __sa_union un;	int i, ret = -1;	struct rb_root root = RB_ROOT;	for (p = scope; p; p = p->as_next)	{		switch (p->as_family)		{		case AF_INET:			tcpsock = -2;			break;#ifdef IPV6		case AF_INET6:			tcpsock6 = -2;			break;#endif		default:			errno = EAFNOSUPPORT;			return -1;		}	}	if (tcpsock == -2)	{		if (getifaddr(AF_INET, ifindex, ifname, &ipaddr) < 0)			goto error;		if ((tcpsock = socket(AF_INET, SOCK_RAW, IPPROTO_TCP)) < 0)			goto error;		if ((icmpsock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) < 0)			goto error;		bzero(&un.sin, sizeof (struct sockaddr_in));		un.sin.sin_family = AF_INET;		un.sin.sin_addr = ipaddr;		if (bind(tcpsock, &un.sockaddr, sizeof (struct sockaddr_in)) < 0)			goto error;		if (bind(icmpsock, &un.sockaddr, sizeof (struct sockaddr_in)) < 0)			goto error;		if (SET_FD_NONBLOCK(tcpsock) < 0)			goto error;		if (SET_FD_NONBLOCK(icmpsock) < 0)			goto error;	}#ifdef IPV6	if (tcpsock6 == -2)	{		if (getifaddr(AF_INET6, ifindex, ifname, &ip6addr) < 0)			goto error;		if ((tcpsock6 = socket(AF_INET6, SOCK_RAW, IPPROTO_TCP)) < 0)			goto error;		if ((icmpsock6 = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6)) < 0)			goto error;		bzero(&un.sin6, sizeof (struct sockaddr_in6));		un.sin6.sin6_family = AF_INET6;		un.sin6.sin6_addr = ip6addr;		if (bind(tcpsock6, &un.sockaddr, sizeof (struct sockaddr_in6)) < 0)			goto error;		if (bind(icmpsock6, &un.sockaddr, sizeof (struct sockaddr_in6)) < 0)			goto error;		if (SET_FD_NONBLOCK(tcpsock6) < 0)			goto error;		if (SET_FD_NONBLOCK(icmpsock6) < 0)			goto error;	}#endif	/* We no longer need root privilege. */	if (resetuid)		setuid(getuid());	/* Generate a random TCP sequance. */	srand(time(NULL));	__tcp_header_seq = rand();	__info = info;	__arg = arg;	for (i = 0; i < __tcp_scan_repeats; i++)	{		for (port = ports; *port; port++)		{			for (p = scope; p; p = p->as_next)			{				if (p->as_family == AF_INET)				{#ifdef IPV6					if (__scan_ip_seg(p->as_address, p->as_bits, *port,									  tcpsock, icmpsock, tcpsock6,									  icmpsock6, &ipaddr, &root) < 0)						goto error;#else					if (__scan_ip_seg(p->as_address, p->as_bits,									  *port, tcpsock, icmpsock,									  &ipaddr, &root) < 0)						goto error;#endif				}#ifdef IPV6				else /* if (p->as_family == AF_INET6) */				{					if (__scan_ip6_seg(p->as_address, p->as_bits, *port,									   tcpsock, icmpsock, tcpsock6,									   icmpsock6, &ip6addr, &root) < 0)						goto error;				}#endif			}		}	}#ifdef IPV6	if (__wait_response(tcpsock, icmpsock, tcpsock6, icmpsock6, &root) >= 0)		ret = 0;#else	if (__wait_response(tcpsock, icmpsock, &root) >= 0)		ret = 0;#endiferror:	__rb_destroy_sockaddr(&root);	if (tcpsock >= 0)		close(tcpsock);	if (icmpsock >= 0)		close(icmpsock);#ifdef IPV6	if (tcpsock6 >= 0)		close(tcpsock6);	if (icmpsock6 >= 0)		close(icmpsock6);#endif	return ret;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
夫妻av一区二区| 国产精品一区二区你懂的| 久久精品亚洲麻豆av一区二区| 欧美午夜精品理论片a级按摩| 99re热视频这里只精品| 91丨九色丨蝌蚪富婆spa| av高清不卡在线| 日本精品一级二级| 欧美亚洲国产一区二区三区| 欧美色图在线观看| 69精品人人人人| 久久精品一区二区三区四区| 久久久亚洲精品石原莉奈| 国产精品免费人成网站| 亚洲欧洲精品成人久久奇米网| 国产精品久久久久久久浪潮网站 | 欧美午夜影院一区| 在线观看成人小视频| 欧美日韩久久久一区| 日韩一卡二卡三卡国产欧美| 精品国产乱码久久久久久牛牛| 久久综合九色综合欧美亚洲| 亚洲视频一区二区在线| 天堂在线一区二区| 国产91丝袜在线播放0| 欧美亚洲国产怡红院影院| 欧美成人一区二区| 亚洲乱码一区二区三区在线观看| 亚洲亚洲人成综合网络| 国内精品免费**视频| 日本韩国视频一区二区| 精品国产一区二区三区久久久蜜月| 日本一区二区三区高清不卡| 亚洲18女电影在线观看| 国产福利91精品一区| 色伊人久久综合中文字幕| 日韩欧美国产wwwww| 亚洲欧洲av一区二区三区久久| 亚洲成av人片一区二区| 成人av在线一区二区三区| 日韩一区二区在线观看视频| 欧美激情一区二区三区蜜桃视频 | av电影天堂一区二区在线| 欧美日本在线播放| 国产精品福利一区二区三区| 蜜桃av一区二区在线观看| 91在线一区二区三区| 精品99久久久久久| 丝袜a∨在线一区二区三区不卡| 国产精品影视在线观看| 日韩一级精品视频在线观看| 亚洲日本在线天堂| 播五月开心婷婷综合| 久久伊99综合婷婷久久伊| 亚洲成人动漫在线观看| 91在线一区二区三区| 欧美韩国日本综合| 国产成人精品免费在线| 欧美精品一区二区蜜臀亚洲| 日韩高清欧美激情| 欧美亚洲图片小说| 亚洲精品老司机| 99久久精品国产一区| 久久久电影一区二区三区| 久久国产精品99久久人人澡| 欧美一区午夜视频在线观看| 亚洲18影院在线观看| 日本丶国产丶欧美色综合| 亚洲欧洲精品一区二区三区| 成a人片亚洲日本久久| 日本一区二区成人在线| 粉嫩aⅴ一区二区三区四区五区| 久久久综合精品| 国产激情视频一区二区三区欧美| 久久先锋资源网| 国产麻豆精品一区二区| 久久蜜桃av一区二区天堂| 国产一区二区女| 国产欧美一区二区三区在线看蜜臀 | 国产精品2024| 国产精品无码永久免费888| 国产福利91精品一区| 国产精品视频看| 色一区在线观看| 日韩精品一二三区| 久久精品一区四区| bt欧美亚洲午夜电影天堂| 亚洲男同性恋视频| 欧美精品自拍偷拍| 久草中文综合在线| 国产精品美女久久久久久| 91激情在线视频| 日韩综合在线视频| 欧美极品少妇xxxxⅹ高跟鞋| 99久久国产综合精品色伊| 亚洲人成网站影音先锋播放| 欧美日韩精品欧美日韩精品 | 国产麻豆精品久久一二三| 欧美激情一区在线| 欧美日韩国产精品成人| 国产乱码字幕精品高清av | 国产亚洲人成网站| 在线免费观看日本欧美| 久久国产福利国产秒拍| 中文字幕乱码久久午夜不卡| 欧美性色黄大片| 国产一区久久久| 亚洲综合一二三区| 久久综合九色综合97_久久久 | 一区二区三区在线视频免费 | 99精品欧美一区二区三区小说 | 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 久久精品国产第一区二区三区| 欧美精品一区二区三区蜜桃| 91影院在线免费观看| 日本vs亚洲vs韩国一区三区 | 欧美成人免费网站| voyeur盗摄精品| 免费在线成人网| 一区二区日韩av| 国产精品福利一区二区三区| 日韩欧美在线网站| 在线观看亚洲精品| 成人妖精视频yjsp地址| 日本成人在线不卡视频| 一区二区三区在线视频观看| 国产伦精品一区二区三区视频青涩 | 99久久婷婷国产综合精品| 日本va欧美va精品| 亚洲国产日韩a在线播放| 国产日韩亚洲欧美综合| 日韩美一区二区三区| 欧美日韩一级视频| 欧美午夜精品一区二区三区| www.av精品| 99精品视频在线观看| 成人午夜私人影院| 国产精品自在欧美一区| 精品一区二区三区在线观看| 五月天激情小说综合| 亚洲成人综合网站| 一区二区三区精品视频| 亚洲日本va午夜在线影院| 国产精品天干天干在线综合| 久久美女艺术照精彩视频福利播放| 欧美一区欧美二区| 99久久99久久综合| 欧美一区二区三区在线观看| 亚洲视频每日更新| 91碰在线视频| 日av在线不卡| 久久精品国产精品青草| 免费日本视频一区| 免费在线观看一区二区三区| 青青草视频一区| 久久精品国产色蜜蜜麻豆| 国产一区二区三区免费播放| 国产在线精品视频| 粉嫩av亚洲一区二区图片| 国产 日韩 欧美大片| av男人天堂一区| 日本电影欧美片| 在线不卡a资源高清| 欧美电视剧在线看免费| 亚洲精品一区二区三区蜜桃下载| 日韩你懂的在线播放| 久久久国产精华| 成人欧美一区二区三区| 亚洲综合久久av| 另类的小说在线视频另类成人小视频在线| 免费成人结看片| 国产ts人妖一区二区| 色天使久久综合网天天| 在线播放中文一区| 亚洲欧美另类久久久精品2019| 欧美高清在线一区二区| 亚洲一区二区三区四区不卡| 日韩av不卡在线观看| 国产一区二区美女诱惑| 日本精品视频一区二区| 精品国产91洋老外米糕| 综合网在线视频| 日韩和欧美一区二区| 懂色av一区二区三区免费看| 91免费视频网址| 欧美tk丨vk视频| 亚洲人成人一区二区在线观看| 日日夜夜免费精品| jvid福利写真一区二区三区| 777色狠狠一区二区三区| 国产精品久久久久久久久晋中| 天天免费综合色| 成人精品免费网站| 91精品在线免费观看| 亚洲男同1069视频| 国产福利不卡视频| 51精品久久久久久久蜜臀| 国产精品久久久久久久久免费相片| 青青草原综合久久大伊人精品优势 | 欧美在线观看一区|