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

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

?? icmpaddrmask.c

?? tcp ip 網絡協議代碼 download download
?? C
字號:
/* * Issue an ICMP address mask request and print the reply. * * This program originated from the public domain ping program written * by Mike Muuss. * * You must be superuser to run this program (or it must be suid to root) * since it requires a raw socket. */#include <sys/types.h>#include <sys/param.h>#include <sys/socket.h>#include <sys/file.h>#include <sys/time.h>#include <sys/signal.h>#include <netinet/in_systm.h>#include <netinet/in.h>#include <netinet/ip.h>#include <netinet/ip_icmp.h>#include <netinet/ip_var.h>#include <netdb.h>#include <unistd.h>#include <stdio.h>#include <ctype.h>#include <errno.h>#include <string.h>#define	DEFDATALEN	(12)	/* default data length */#define	MAXIPLEN	60#define	MAXICMPLEN	76#define	MAXPACKET	(65536 - 60 - 8)/* max packet size */struct sockaddr	whereto;	/* who to send request to */int		datalen = DEFDATALEN;int		s;u_char		outpack[MAXPACKET];char		*hostname;u_long		inet_addr();char		*inet_ntoa();void		sig_alrm(int);int		response = 0;main(argc, argv)int	argc;char	**argv;{	int			i, ch, fdmask, hold, packlen, preload;	extern int		errno;	struct hostent		*hp;	struct sockaddr_in	*to;	struct protoent		*proto;	u_char			*packet;	char			*target, hnamebuf[MAXHOSTNAMELEN], *malloc();	if (argc != 2)		exit(1);	target = argv[1];	bzero((char *)&whereto, sizeof(struct sockaddr));	to = (struct sockaddr_in *)&whereto;	to->sin_family = AF_INET;		/* try to convert as dotted decimal address,		   else if that fails assume it's a hostname */	to->sin_addr.s_addr = inet_addr(target);	if (to->sin_addr.s_addr != (u_int)-1)		hostname = target;	else {		hp = gethostbyname(target);		if (!hp) {			fprintf(stderr, "unknown host %s\n", target);			exit(1);		}		to->sin_family = hp->h_addrtype;		bcopy(hp->h_addr, (caddr_t)&to->sin_addr, hp->h_length);		strncpy(hnamebuf, hp->h_name, sizeof(hnamebuf) - 1);		hostname = hnamebuf;	}	packlen = datalen + MAXIPLEN + MAXICMPLEN;	if ( (packet = (u_char *)malloc((u_int)packlen)) == NULL) {		fprintf(stderr, "malloc error\n");		exit(1);	}	if ( (proto = getprotobyname("icmp")) == NULL) {		fprintf(stderr, "unknown protocol icmp\n");		exit(1);	}	if ( (s = socket(AF_INET, SOCK_RAW, proto->p_proto)) < 0) {		perror("socket");	/* probably not running as superuser */		exit(1);	}	/*	 * We send one request, then wait 5 seconds, printing any	 * replies that come back.  This lets us send a request to	 * a broadcast address and print multiple replies.	 */	signal(SIGALRM, sig_alrm);	alarm(5);	/* 5 second time limit */	sender();	/* send the request */	for (;;) {		struct sockaddr_in	from;		int			cc, fromlen;		fromlen = sizeof(from);		if ( (cc = recvfrom(s, (char *)packet, packlen, 0,		    		    (struct sockaddr *)&from, &fromlen)) < 0) {			if (errno == EINTR)				continue;			perror("recvfrom error");			continue;		}		procpack((char *)packet, cc, &from);	}}/* * Send the ICMP address mask request. */sender(){	int		i, cc;	struct icmp	*icp;	icp = (struct icmp *)outpack;	icp->icmp_type = ICMP_MASKREQ;	icp->icmp_code = 0;	icp->icmp_cksum = 0;	/* compute checksum below */	icp->icmp_seq = 12345;	/* seq and id must be reflected */	icp->icmp_id = getpid();	icp->icmp_mask = 0;	cc = ICMP_MASKLEN;	/* 12 = 8 bytes of header, 4 bytes of mask */		/* compute ICMP checksum here */	icp->icmp_cksum = in_cksum((u_short *)icp, cc);	i = sendto(s, (char *)outpack, cc, 0, &whereto,	    				sizeof(struct sockaddr));	if (i < 0 || i != cc)  {		if (i < 0)			perror("sendto error");		printf("wrote %s %d chars, ret=%d\n", hostname, cc, i);	}}/* * Process a received ICMP message. */procpack(buf, cc, from)char			*buf;int			cc;struct sockaddr_in	*from;{	int		i, hlen;	struct icmp	*icp;	struct ip	*ip;	struct timeval	tvdelta;		/* Check the IP header */	ip = (struct ip *)buf;	hlen = ip->ip_hl << 2;	if (cc < hlen + ICMP_MINLEN) {		fprintf(stderr, "packet too short (%d bytes) from %s\n", cc,			  inet_ntoa(*(struct in_addr *)&from->sin_addr.s_addr));		return;	}		/* Now the ICMP part */	cc -= hlen;	icp = (struct icmp *)(buf + hlen);		/* With a raw ICMP socket we get all ICMP packets that		   come into the kernel. */	if (icp->icmp_type == ICMP_MASKREPLY) {		if (cc != ICMP_MASKLEN)			printf("cc = %d, expected cc = 12\n", cc);		if (icp->icmp_seq != 12345)			printf("received sequence # %d\n", icp->icmp_seq);		if (icp->icmp_id != getpid())			printf("received id %d\n", icp->icmp_id);		printf("received mask = %08x, from %s\n",			ntohl(icp->icmp_mask),			inet_ntoa(*(struct in_addr *) &from->sin_addr.s_addr));		response++;	}	/* We ignore all other types of ICMP messages */}/* * in_cksum -- *	Checksum routine for Internet Protocol family headers (C Version) */in_cksum(addr, len)	u_short *addr;	int len;{	register int nleft = len;	register u_short *w = addr;	register int sum = 0;	u_short answer = 0;	/*	 * Our algorithm is simple, using a 32 bit accumulator (sum), we add	 * sequential 16 bit words to it, and at the end, fold back all the	 * carry bits from the top 16 bits into the lower 16 bits.	 */	while (nleft > 1)  {		sum += *w++;		nleft -= 2;	}	/* mop up an odd byte, if necessary */	if (nleft == 1) {		*(u_char *)(&answer) = *(u_char *)w ;		sum += answer;	}	/* add back carry outs from top 16 bits to low 16 bits */	sum = (sum >> 16) + (sum & 0xffff);	/* add hi 16 to low 16 */	sum += (sum >> 16);			/* add carry */	answer = ~sum;				/* truncate to 16 bits */	return(answer);}voidsig_alrm(int signo){	if (response == 0) {		printf("timeout\n");		exit(1);	}	exit(0);	/* we got one or more responses */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
777xxx欧美| 天堂精品中文字幕在线| 91精品国产综合久久精品麻豆| 不卡区在线中文字幕| 精品一区二区三区不卡| 极品少妇xxxx精品少妇偷拍| 久久精品国产99久久6| 美女免费视频一区| 激情久久久久久久久久久久久久久久| 久久99精品一区二区三区三区| 美女mm1313爽爽久久久蜜臀| 免费观看在线综合| 久久97超碰色| 国产精品伊人色| 成人综合激情网| 91免费视频观看| 国产高清精品网站| 精品一区二区免费看| 精品一区二区久久| 国产精品 日产精品 欧美精品| 国产呦精品一区二区三区网站| 国产乱理伦片在线观看夜一区| 国产福利91精品一区| 国产成a人亚洲| 91美女视频网站| 欧美日韩国产高清一区二区三区 | 国产欧美精品一区二区色综合| 久久夜色精品国产噜噜av| 日韩精品自拍偷拍| 26uuu国产日韩综合| 国产精品私人影院| 亚洲欧美视频在线观看视频| 亚洲一区二区三区四区不卡| 日本中文字幕不卡| 国产夫妻精品视频| 91在线精品秘密一区二区| 欧美日韩五月天| 欧美zozo另类异族| 亚洲三级理论片| 日本不卡一区二区| 本田岬高潮一区二区三区| 欧美军同video69gay| 国产欧美视频一区二区三区| 亚洲激情自拍视频| 精品亚洲porn| 欧美日韩国产综合久久| 久久久久久久久蜜桃| 午夜欧美在线一二页| 国产成人精品亚洲午夜麻豆| 欧美日韩午夜影院| 亚洲国产成人在线| 毛片av中文字幕一区二区| 91国偷自产一区二区三区成为亚洲经典 | 免费成人小视频| aaa欧美色吧激情视频| 欧美电影免费观看高清完整版在线| 亚洲欧美在线高清| 国产一区视频导航| 欧美绝品在线观看成人午夜影视| 国产精品久久久久aaaa| 国产一区二区三区四区五区美女| 欧美日本在线播放| 亚洲男人的天堂一区二区| 国产成人一区二区精品非洲| 91精品国产综合久久久久久久久久| 国产精品高潮久久久久无| 国产91丝袜在线观看| 精品福利av导航| 久久国产尿小便嘘嘘| 日韩美女视频在线| 午夜精品免费在线| 欧美日韩一区二区不卡| 一区在线观看视频| 91蝌蚪porny成人天涯| 国产精品免费丝袜| 国产成人99久久亚洲综合精品| 日本一区二区免费在线| 国产成人自拍网| 久久九九影视网| 国产乱人伦偷精品视频免下载| 久久久www成人免费毛片麻豆 | 亚洲精品成人精品456| 国产精品 日产精品 欧美精品| 久久免费电影网| 国产盗摄女厕一区二区三区| 国产免费观看久久| 9i看片成人免费高清| 亚洲欧美综合色| 欧美日韩另类一区| 日本不卡123| 精品少妇一区二区三区视频免付费| 久草中文综合在线| 久久尤物电影视频在线观看| 国产乱码精品一区二区三区五月婷| 久久久久一区二区三区四区| www..com久久爱| 亚洲黄色性网站| 3d成人h动漫网站入口| 久国产精品韩国三级视频| 欧美国产精品v| 色婷婷综合五月| 性做久久久久久免费观看 | 国产日产欧产精品推荐色 | 久久伊人中文字幕| 成人av高清在线| 午夜久久久久久久久| 精品乱码亚洲一区二区不卡| 成人国产一区二区三区精品| 亚洲大尺度视频在线观看| 精品欧美一区二区三区精品久久| 成人18视频日本| 亚洲h在线观看| 日本一区二区免费在线| 欧美亚洲综合久久| 国产在线播精品第三| 亚洲影院在线观看| 久久久综合九色合综国产精品| 色综合天天综合狠狠| 久久99国产精品尤物| 欧美成人性福生活免费看| 成人免费的视频| 奇米影视一区二区三区小说| 亚洲图片欧美激情| 欧美电影免费观看高清完整版在线 | 91婷婷韩国欧美一区二区| 青青国产91久久久久久| 日韩理论片中文av| 久久久久久夜精品精品免费| 欧美一区二区三区日韩| 91日韩一区二区三区| 国产麻豆9l精品三级站| 亚洲黄一区二区三区| 日本一区二区综合亚洲| 精品日韩在线观看| 欧美日韩美女一区二区| 91在线视频免费91| 国产成人在线免费| 青椒成人免费视频| 丝袜美腿亚洲色图| 伊人夜夜躁av伊人久久| 欧美国产禁国产网站cc| 26uuu亚洲| 精品国产乱码91久久久久久网站| 欧美日韩一区二区三区四区| 色狠狠av一区二区三区| 91社区在线播放| av不卡免费电影| av亚洲精华国产精华| 成人一区二区三区在线观看| 国产美女视频91| 精品一区二区三区视频| 肉肉av福利一精品导航| 性做久久久久久免费观看| 亚洲自拍偷拍欧美| 一区二区三区.www| 亚洲二区在线观看| 亚洲小说欧美激情另类| 洋洋成人永久网站入口| 一区二区三区日韩在线观看| 亚洲在线中文字幕| 亚洲一区二区五区| 亚洲777理论| 全部av―极品视觉盛宴亚洲| 九色综合国产一区二区三区| 黄色资源网久久资源365| 久久69国产一区二区蜜臀| 国产伦精品一区二区三区视频青涩| 国产精品一区二区男女羞羞无遮挡 | 亚洲综合小说图片| 男女性色大片免费观看一区二区 | 精品午夜久久福利影院| 国内精品写真在线观看| 国产福利不卡视频| 91女神在线视频| 欧美日韩一区二区欧美激情| 欧美唯美清纯偷拍| 日韩一级免费一区| 国产日产欧产精品推荐色| 亚洲欧美影音先锋| 亚洲最大色网站| 韩国精品主播一区二区在线观看 | 久久99精品久久久| 成人av免费在线播放| 欧美精品v国产精品v日韩精品| 精品欧美一区二区久久| 亚洲特黄一级片| 免费的国产精品| 99久久精品情趣| 欧美日韩黄色影视| 国产日韩精品一区二区三区| 亚洲一区二区三区四区的| 国产麻豆日韩欧美久久| 在线观看成人免费视频| www久久精品| 一片黄亚洲嫩模| 国产91精品免费| 在线成人av影院| 亚洲日本丝袜连裤袜办公室| 精品一区二区三区在线观看| 在线观看日韩电影|