📄 ec.c
字号:
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 + -