⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ec.c

📁 一个非常强大的库
💻 C
📖 第 1 页 / 共 2 页
字号:
	struct sockaddr_in revr;	int sasz = sizeof(sans);	int sock;	int bred;	char *pack;	FILE *logf;	struct iphdr *iphd;	int numb = 1;	if(n != 4){		fail("Usage: ./ec snip <file> <size>\n   Launch ./ec i"		     "nfo to see more information");		return(-1);	}	if(!(pack = (char *)malloc(atoi(optn[3])))){		fail("Couldn't allocate memory");		return(-1);	}	if((sock = socket(17, 3, htons(0x0003))) == -1){		fail("Couldn't open socket");		free(pack);		return(-1);	}	while(bred != -1){		bred = recvfrom(sock, pack, atoi(optn[3]), 0, &sans,		                &sasz);		iphd = (struct iphdr *)pack;		logf = fopen(optn[2], "a");		fprintf(logf, "[+] Packet number           < %d\n",		        numb);		fprintf(logf, " |-[+] Header               < IP\n");		fprintf(logf, " |  |- Version              < %d\n",		        iphd->version);		fprintf(logf, " |  |- Header length        < %d\n",		        iphd->ihl);		fprintf(logf, " |  |- Type of service      < %d\n",		        iphd->tos);		fprintf(logf, " |  |- Total length         < %d\n",		        htons(iphd->tot_len));		fprintf(logf, " |  |- Identificator        < %d\n",		        htons(iphd->id));		fprintf(logf, " |  |- Fragmentation offset < %x\n",		        htons(iphd->frag_off));		fprintf(logf, " |  |- Time to live         < %d\n",		        iphd->ttl);		fprintf(logf, " |  |- Protocol             < %d\n",		        iphd->protocol);		fprintf(logf, " |  |- Checksum             < %x\n",		        htons(iphd->check));		revr.sin_addr.s_addr = iphd->saddr;		fprintf(logf, " |  |- Source address       < %s\n",		        inet_ntoa(revr.sin_addr));		revr.sin_addr.s_addr = iphd->daddr;		fprintf(logf, " |  |- Destination address  < %s\n",		        inet_ntoa(revr.sin_addr));		fprintf(logf, "[+] Data                    <\n");		fwrite(pack + ipsz, bred - ipsz, 1, logf);		fprintf(logf, "\n\n");		fclose(logf);		numb++;	}	shutdown(sock, 1);	free(pack);	return(0);}int snap(int n, char **optn){	struct sockaddr sans;	struct sockaddr_in revr;	int sasz = sizeof(sans);	int sock;	int bred;	char *pack;	FILE *logf;	struct iphdr *iphd;	struct icmphdr *_ihd;	struct udphdr *_uhd;	struct tcphdr *_thd;	int numb = 1;	if(n != 4){		fail("Usage: ./ec snap <file> <size>\n   Launch ./ec i"		     "nfo to see more information");		return(-1);	}	if(!(pack = (char *)malloc(atoi(optn[3])))){		fail("Couldn't allocate memory");		return(-1);	}	if((sock = socket(17, 3, htons(0x0003))) == -1){		fail("Couldn't open socket");		free(pack);		return(-1);	}	while(bred != -1){		bred = recvfrom(sock, pack, atoi(optn[3]), 0, &sans,		                &sasz);		iphd = (struct iphdr *)pack;		_ihd = (struct icmphdr *)(pack + ipsz);		_uhd = (struct udphdr *)(pack + ipsz);		_thd = (struct tcphdr *)(pack + ipsz);		logf = fopen(optn[2], "a");		fprintf(logf, "[+] Packet number           < %d\n",		        numb);		fprintf(logf, " |-[+] Header               < IP\n");		fprintf(logf, " |  |- Version              < %d\n",		        iphd->version);		fprintf(logf, " |  |- Header length        < %d\n",		        iphd->ihl);		fprintf(logf, " |  |- Type of service      < %d\n",		        iphd->tos);		fprintf(logf, " |  |- Total length         < %d\n",		        htons(iphd->tot_len));		fprintf(logf, " |  |- Identificator        < %d\n",		        htons(iphd->id));		fprintf(logf, " |  |- Fragmentation offset < %x\n",		        htons(iphd->frag_off));		fprintf(logf, " |  |- Time to live         < %d\n",		        iphd->ttl);		fprintf(logf, " |  |- Protocol             < %d\n",		        iphd->protocol);		fprintf(logf, " |  |- Checksum             < %x\n",		        htons(iphd->check));		revr.sin_addr.s_addr = iphd->saddr;		fprintf(logf, " |  |- Source address       < %s\n",		        inet_ntoa(revr.sin_addr));		revr.sin_addr.s_addr = iphd->daddr;		fprintf(logf, " |  |- Destination address  < %s\n",		        inet_ntoa(revr.sin_addr));		if(iphd->protocol == 1){			fprintf(logf, " |-[+] Header               < I"			        "CMP\n");			fprintf(logf, " |  |- Type                 < "			        "%d\n", _ihd->type);			fprintf(logf, " |  |- Code                 < "			        "%d\n", _ihd->code);			fprintf(logf, " |  |- Checksum             < "			        "%x\n", htons(_ihd->checksum));			fprintf(logf, " |  |- Identificator        < "			        "%d\n", htons(_ihd->un.echo.id));			fprintf(logf, " |  |- Sequence number      < "			        "%d\n", htons(_ihd->un.echo.sequence));			revr.sin_addr.s_addr = _ihd->un.gateway;			fprintf(logf, " |  |- Gateway address      < "			        "%s\n", inet_ntoa(revr.sin_addr));			fprintf(logf, " |  |- Unused               < "			        "%d\n", htons(_ihd->un.frag.__unused));			fprintf(logf, " |  |- MTU                  < "			        "%d\n", htons(_ihd->un.frag.mtu));			fprintf(logf, "[+] Data                    <\n"			        "");			fwrite(pack + ipsz + _isz, bred - ipsz - _isz,			       1, logf);			fprintf(logf, "\n\n");		}		else if(iphd->protocol == 17){			fprintf(logf, " |-[+] Header               < U"			        "DP\n");			fprintf(logf, " |  |- Source port          < "			        "%d\n", htons(_uhd->source));			fprintf(logf, " |  |- Destination port     < "			        "%d\n", htons(_uhd->dest));			fprintf(logf, " |  |- Length               < "			        "%d\n", htons(_uhd->len));			fprintf(logf, " |  |- Checksum             < "			        "%x\n", htons(_uhd->check));			fprintf(logf, "[+] Data                    <\n"			        "");			fwrite(pack + ipsz + _usz, bred - ipsz - _usz,			       1, logf);			fprintf(logf, "\n\n");		}		else if(iphd->protocol == 6){			fprintf(logf, " |-[+] Header               < T"			        "CP\n");			fprintf(logf, " |  |- Source port          < "			        "%d\n", htons(_thd->source));			fprintf(logf, " |  |- Destination port     < "			        "%d\n", htons(_thd->dest));			fprintf(logf, " |  |- Sequence number      < "			        "%d\n", htonl(_thd->seq));			fprintf(logf, " |  |- Acknowledge number   < "			        "%d\n", htonl(_thd->ack_seq));			fprintf(logf, " |  |- Data offset          < "			        "%d\n", _thd->doff);			fprintf(logf, " |  |- Reserved 1           < "			        "%d\n", _thd->res1);			fprintf(logf, " |  |- Reserved 2           < "			        "%d\n", _thd->res2);			fprintf(logf, " |  |- URG flag             < "			        "%d\n", _thd->urg);			fprintf(logf, " |  |- ACK flag             < "			        "%d\n", _thd->ack);			fprintf(logf, " |  |- PSH flag             < "			        "%d\n", _thd->psh);			fprintf(logf, " |  |- RST flag             < "			        "%d\n", _thd->rst);			fprintf(logf, " |  |- SYN flag             < "			        "%d\n", _thd->syn);			fprintf(logf, " |  |- FIN flag             < "			        "%d\n", _thd->fin);			fprintf(logf, " |  |- Window               < "			        "%d\n", htons(_thd->window));			fprintf(logf, " |  |- Checksum             < "			        "%x\n", htons(_thd->check));			fprintf(logf, " |  |- Urgent pointer       < "			        "%d\n", htons(_thd->urg_ptr));			fprintf(logf, "[+] Data                    <\n"			        "");			fwrite(pack + ipsz + _tsz, bred - ipsz - _tsz,			       1, logf);			fprintf(logf, "\n\n");		}		else{			fprintf(logf, " |-[+] Header               < U"			        "NKNOWN\n");			fprintf(logf, "[+] Data                    <\n"			        "");			fwrite(pack + ipsz, bred - ipsz, 1, logf);			fprintf(logf, "\n\n");		}		fclose(logf);		numb++;	}	shutdown(sock, 1);	free(pack);	return(0);}int sdpk(int n, char **optn){	struct sockaddr_in sans;	int sock;	int bred;	char *pack;	FILE *pkfl;	if(n != 8){		fail("Usage: ./ec sdpk <file> <size> <prot> <targ> <po"		     "rt> <intr>\n   Launch ./ec info to see more info"		     "rmation");		return(-1);	}	if(!(pack = (char *)malloc(atoi(optn[3])))){		fail("Couldn't allocate memory");		return(-1);	}	pkfl = fopen(optn[2], "r");	fread(pack, atoi(optn[3]), 1, pkfl);	fclose(pkfl);	sans.sin_family = 2;	sans.sin_addr.s_addr = inet_addr(optn[5]);	sans.sin_port = htons(atoi(optn[6]));	if((sock = socket(2, 3, atoi(optn[4]))) == -1){		fail("Couldn't open socket");		free(pack);		return(-1);	}	while(bred != -1){		bred = sendto(sock, pack, atoi(optn[3]), 0, (struct		              sockaddr *)&sans, sizeof(sans));		usleep(atoi(optn[7]) * 1000);	}	shutdown(sock, 1);	free(pack);	return(0);}int scpr(int n, char **optn){	struct sockaddr_in sans;	int sock;	int port;	FILE *pkfl;	if(n != 6){		fail("Usage: ./ec scpr <file> <targ> <stpr> <sppr>\n  "		     " Launch ./ec info to see more information");		return(-1);	}	pkfl = fopen(optn[2], "a");	fprintf(pkfl, "[+] Host IP                 < %s\n", optn[3]);	fclose(pkfl);	for(port = atoi(optn[4]); port <= atoi(optn[5]); port++){		sans.sin_family = 2;		sans.sin_addr.s_addr = inet_addr(optn[3]);		sans.sin_port = htons(port);		if((sock = socket(2, 1, 6)) == -1){			fail("Couldn't open socket");			return(-1);		}		if(connect(sock, (struct sockaddr *)&sans, sizeof		           (sans)) == 0){			pkfl = fopen(optn[2], "a");			fprintf(pkfl, " |- Opened                  < "			        "%d\n", port);			fclose(pkfl);		}		else{			pkfl = fopen(optn[2], "a");			fprintf(pkfl, " |- Closed                  < "			        "%d\n", port);			fclose(pkfl);		}		shutdown(sock,1);	}	pkfl = fopen(optn[2], "a");	fprintf(pkfl, "\n\n");	fclose(pkfl);	return(0);}int main(int n, char **optn){	printf("\n");	if(n < 2){		eror:		fail("Usage: ./ec <parm> ([optn]: ...)\n   Launch ./ec"		     " info to see more information");		printf("\n");		return(-1);	}	if(strcmp(optn[1], "info") == 0)		printf("%s", info);	else if(strcmp(optn[1], "mkip") == 0)		mkip(n, optn);	else if(strcmp(optn[1], "mk_i") == 0)		mk_i(n, optn);	else if(strcmp(optn[1], "mk_u") == 0)		mk_u(n, optn);	else if(strcmp(optn[1], "mk_t") == 0)		mk_t(n, optn);	else if(strcmp(optn[1], "mksm") == 0)		mksm(n, optn);	else if(strcmp(optn[1], "snrp") == 0)		snrp(n, optn);	else if(strcmp(optn[1], "snip") == 0)		snip(n, optn);	else if(strcmp(optn[1], "snap") == 0)		snap(n, optn);	else if(strcmp(optn[1], "sdpk") == 0)		sdpk(n, optn);	else if(strcmp(optn[1], "scpr") == 0)		scpr(n, optn);	else		goto eror;	printf("\n");	return(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -