Ga naar inhoud

MSNBot


anoniem

Aanbevolen berichten

Hoi, Ik ben bezig om voor iemand een MSNBot te maken, dat gaat goed als ik het eerste request stuur, en daar krijg ik ook antwoord op, maar mijn tweede request blijft hoe dan ook onbeantwoord Ik gebruiken onder unix c++ met low-level io calls Dit is mijn code [code:1:6a31ac5eb0] #include "msnbot.h" /*MSNBot::MSNBot() { } MSNBot::~MSNBot() { }*/ void MSNBot::mkconn() { int len; int result; fd = socket(AF_INET, SOCK_STREAM, 0); hostaddr = gethostbyname(HOST); if(!hostaddr){ cout << "No route to host!!!"; exit(1); } address.sin_family = AF_INET; //address.sin_addr = *(struct in_addr *)hostaddr -> h_addr_list; address.sin_addr.s_addr = inet_addr(HOST); address.sin_port = htons(PORT); len = sizeof(address); result = connect( fd, (struct sockaddr *)&address, len); if(result == -1){ perror("oops: msnbot"); exit(1); } msnwrite("VER 0 MSNP2"); char buffer4[2048]; msnread((char *)&buffer4, 2048);; char buffer2[2048]; msnwrite("INF 1"); msnread((char *)&buffer2, 2048); char buffer3[2048]; msnwrite("USR 2 MD5 I ", true); msnwrite(USER); len = msnread((char *)&buffer3, 2048); buffer3; struct splitarray mysplit; mysplit = split(buffer3, ' ', len); MD5 context; char *array2 = new char(); array2 = mysplit.array[4]; array2 = strcat(array2, " " PASSWD); context.update((unsigned char *)&mysplit.array[4], strlen((unsigned char *)&mysplit.array[4]) ); context.finalize(); char buffer[2048]; msnwrite("USR 3 MD5 S ", true); msnwrite(context.hex_digest() ); if (wait(0) == true){ len = msnread((char *)&buffer, 2048); } close(fd); } int MSNBot::msnwrite(char *buffer, bool raw) { int len =0; len = write(fd, buffer, strlen(buffer)); if(len == -1) return -1; if(!raw) len =+ write(fd, " \r\n", 4); cout << "Sent: " << buffer; if(!raw) cout << " -CRLF"; cout << " " << endl; return len; } int MSNBot::msnread(char *buffer, int length) { int len; len = read(fd, buffer, length); buffer[len +1] = '\0'; cout << "Received: " << buffer << endl; return len; } struct splitarray MSNBot::split(char string[1024], char sep, int len) { int i; int e=0; int n; struct splitarray retval; char array[1024][1024]; cout << array[1]; // cout << "boe"; for(i = 0; i < len; i++){ if(string[i] == sep){ e++; n = 0; } else{ array[e][n] = string[i]; n++; } } retval.count = e; retval.array = array; return retval; } bool MSNBot::wait(int timeout) // Wait for the filediscriptor to become ready { fd_set waitfd; FD_ZERO(&waitfd); FD_SET(fd, &waitfd); int result; struct timeval waittimeout; waittimeout.tv_sec = 0; waittimeout.tv_usec = timeout * 1000; result = select(FD_SETSIZE, &waitfd, NULL, NULL, &waittimeout); switch(result){ case 0: // timeout return false; case -1: // error cerr << "Plib::pStream::wait::Select error!\n"; return false; default: // fd ready return true; } return false; [/code:1:6a31ac5eb0] Dit is de output: [quote=bash] Sent: VER 0 MSNP2 -CRLF Received: VER 0 MSNP2 Sent: INF 1 -CRLF Received: Sent: USR 2 MD5 I Sent: Robbert_van_den_Berg@hotmail.com -CRLF Received: Sent: USR 3 MD5 S Sent: 752b34f7a0474ed17a1a7065a9174883 -CRLF Received: [/quote] Help! Barry
Link naar reactie
  • 5 maanden later...

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...