Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Kaxperday en 24 Octubre 2014, 19:42 pm



Título: Iniciar sesion en facebook con cpp
Publicado por: Kaxperday 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:

Citar
<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.com
pass->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:

Código:
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:

Citar
HTTP/1.0 302 Moved Temporarily
Location: http://www.facebook.com/unsupportedbrowser
Content-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.


Título: Re: Iniciar sesion en facebook con cpp
Publicado por: ivancea96 en 24 Octubre 2014, 20:24 pm
Probaste a ponerle el campo de navegador con Chrome, por ejemplo?


Título: Re: Iniciar sesion en facebook con cpp
Publicado por: Kaxperday 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.php (http://www.useragentstring.com/pages/useragentstring.php)

Pero no entiendo cada sistema operativo tiene su agente de navegación, he probado con uno así:

Código:
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


Título: Re: Iniciar sesion en facebook con cpp
Publicado por: ivancea96 en 25 Octubre 2014, 17:37 pm
El User Agent es un campo más, no influye para nada en el programa. Sólo es para que lo sepa el servidor (que a lo mejor envía un html diferente)