Protocolo HTTP, un dolor de cabeza...

Iniciado por Vaagish, 1 Abril 2014, 02:45 AM

0 Miembros y 2 Visitantes están viendo este tema.

Eternal Idol

No, yo en el primer mensaje del hilo veo esto seguido:
Content-Length: 2
-----------------------------78302333330941

y tiene que ser asi:
Content-Length: 2

-----------------------------78302333330941

¿Copiaste y pegaste la cadena, o no?
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Vaagish

#11
CitarNo, yo en el primer mensaje del hilo veo esto seguido:
Content-Length: 2
-----------------------------78302333330941

y tiene que ser asi:
Content-Length: 2

-----------------------------78302333330941

Haa,, ok.. ahi lo vi.. ya lo había probado igual.. la cadena la copie literalmente sep, ahora en el codigo que pongo uso esa misma cadena,, ya lo subo..

EDITO

Bueno, al diablo.. el servidor mediocre este gratuito me da errores por todos lados ahora... aca dejo el codigo tal cual lo uso yo, con el servidor..

MAIN.CPP

Código (cpp) [Seleccionar]

#include "main.h"
#include <Windows.h>
#include <iostream>

using namespace std;

WSADATA WSA;
SOCKET Socket;
SOCKADDR_IN Server;

SOCKET Connection;

char recvbuf[DEFAULT_BUFLEN];
int  recvbuflen = DEFAULT_BUFLEN;

int main()
{
Connection = StartUpSocket();
SendRequest(Connection, HTTP);
ReadSocket();
cin.get();
return 0;
}

SOCKET StartUpSocket()
{
int rtn;

if ((rtn = WSAStartup(MAKEWORD(2, 2), &WSA)) != 0) return 1;
if ((Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) return 1;

HOSTENT *host = gethostbyname("www.montevideoaldia.com");

if (!host) return -1;

char *hostip = inet_ntoa(*(struct in_addr*)(host->h_addr_list[0]));

Server.sin_family = AF_INET;
Server.sin_port = htons(PUERTO);
Server.sin_addr.s_addr = inet_addr(hostip);

if ((rtn = connect(Socket, (struct sockaddr*) &Server, sizeof(Server))) == SOCKET_ERROR) return 1;

return Socket;
}

int SendRequest(SOCKET s, char *data1) // -> Se puede pasar por aca la cadena, o no
{
FILE *file;
file = fopen ( "DUMP.txt", "wb+" );

fputs(data1, file);
fclose(file);

cout << data1 << endl;

send(s, data1, strlen(data1), 0);

return 0;
}

int ReadSocket()
{
int iResult;

do {
iResult = recv(Socket, recvbuf, recvbuflen, 0);
cout << recvbuf << endl;
} while (iResult > 0);

return 0;
}


MAIN.H
Código (cpp) [Seleccionar]

#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")

#define PUERTO 80
#define DEFAULT_BUFLEN 512

SOCKET StartUpSocket();
int SendRequest(SOCKET s, char *data1);
int ReadSocket();

static TCHAR HTTP[] = "POST /php/core2.php HTTP/1.1\r\n"
 "Host: www.montevideoaldia.com\r\n"
 "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0\r\n"
 "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"
 "Accept-Language: es-ar,es;q=0.8,en-us;q=0.5,en;q=0.3\r\n"
 "Referer: http://www.montevideoaldia.com/php/coso.html\r\n"
 "Connection: keep-alive\r\n"
 "Content-Type: multipart/form-data; boundary=---------------------------78302333330941\r\n"
 "Content-Length: 2\r\n\r\n"
 "-----------------------------78302333330941\r\n"
 "Content-Disposition: form-data; name=\"VAR\"\r\n"
 "TS\r\n"
 "-----------------------------78302333330941--\r\n";

Vaagish

#12
Y el php

Código (php) [Seleccionar]

<?php
if(isset($_POST["VAR"])){
$Var $_POST["VAR"];
echo "Este es el dato: ".$Var;
}
?>



Quien es Morcilla? Jaja eso si llego a los Logs de Apache, y tambien otro que dice:
http://www.elhost.com/php/coso.html" "Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0
Ahora el referer es el mismo host..

PD: Gracias por la ayuda!




CitarEternal Idol que no entiende este server etc, etc
Jajajaja

Si, esta crudo.. no entiendo por que no funciona.. Queres el arbol de directorios?

Eternal Idol

#13
Bueno, la conclusion es que el Live HTTP Headers NO es confiable.

Despues de Content-Length van 2 CRLF y el Content-Length hay que calcularlo bien, es todo lo que va despues de Content-Length.

PD. ¿Vos estabas caliente? Yo termine abriendo el WinDbg y poniendo un breakpoint en ws2_32!send  ;D




static TCHAR HTTP[] = "POST /php/core2.php HTTP/1.1\r\n"
 "Host: www.montevideoaldia.com\r\n"
 "User-Agent: Aleluya\r\n"
 "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"
 "Accept-Language: es-ar,es;q=0.8,en-us;q=0.5,en;q=0.3\r\n"
 "Referer: http://www.montevideoaldia.com/php/coso.html\r\n"
 "Connection: keep-alive\r\n"
 "Content-Type: multipart/form-data; boundary=---------------------------78302333330941\r\n"
 "Content-Length: 142\r\n\r\n"
 "-----------------------------78302333330941\r\n"
 "Content-Disposition: form-data; name=\"VAR\"\r\n\r\n"
 "TS\r\n"
 "-----------------------------78302333330941--\r\n";
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Vaagish

NAA! SOS EL MEJOR!! Hoy conseguí entrada para ver al Indio en gualeguaychu, y ahora esto!

CitarPD. ¿Vos estabas caliente? Yo termine abriendo el WinDbg y poniendo un breakpoint en ws2_32!send  ;D

Jajaja re desconfiado... yo no podía mas, hace meses que empece con esto..

Mil Gracias EI! Si precisas un server me avisas jaja

Saludos!

Eternal Idol

Cita de: Vaagish en  1 Abril 2014, 22:58 PMNAA! SOS EL MEJOR!! Hoy conseguí entrada para ver al Indio en gualeguaychu, y ahora esto!

Esto seguro fue mas barato  ;D

Cita de: Vaagish en  1 Abril 2014, 22:58 PMJajaja re desconfiado... yo no podía mas, hace meses que empece con esto..

Y es que no era confiable al final, asi copie identico, con los dos datos que mandaba y vi que funcionaba, despues saque el segundo y me avive de que el tamaño estaba mal al principio pero el doble CRLF despues de Content-Length no se ve en el GUI ni se graba en el archivo que genera el Live HTTP Headers.

Cita de: Vaagish en  1 Abril 2014, 22:58 PMMil Gracias EI! Si precisas un server me avisas jaja

De nadas y se agradece la oferta.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Vaagish

Si, maldito Live HTTP Headers, si hay algo que odio mas igual, es el mismo protocolo HTTP, es una bosta!

CitarEsto seguro fue mas barato  ;D
La solución si, el dolor de cabeza que me dio.. mmm.. no se.. jajaja

Salu2!