elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 00:43  


Tema destacado: Últimos eventos sobre seguridad/inseguridad

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Cabecera HTTP + Winsock + strcat()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cabecera HTTP + Winsock + strcat()  (Leído 728 veces)
Riki_89D


Desconectado Desconectado

Mensajes: 848


BCN CITY


Ver Perfil
Cabecera HTTP + Winsock + strcat()
« en: 4 Octubre 2011, 15:58 »

Hola que tal?

solo tengo una pequeña duda,quiro usar sockets para interacturr con webs,cosas como inicar sesion entre otras cosas,mi pregunta es si para enviar las acbeceras HTTP tengo k acer varias variables i ir concatenandolas con strcat() o hay alguna otra forma mas facil?¿



gracias


En línea
madpitbull_99
Moderador Global
***
Desconectado Desconectado

Mensajes: 1.898



Ver Perfil WWW
Re: Cabecera HTTP + Winsock + strcat()
« Respuesta #1 en: 5 Octubre 2011, 15:12 »

Los más sencillo sería utilizar alguna librería como libcurl, facilitan mucho las tareas.

Deberías leer también sobre CGI. Si estás en Windows puedes usar WinInet.

Para un ejemplo básico de petición GET en la cabecera deberías incluir: GET /index.htm HTTP 1.1\r\n\n. Y en efecto, guardas el string en una variable,
abres un socket y envías el string almacenado anteriormente y luego capturas la respuesta.

Te dejo un ejemplo sacado del foro de MSDN que se loguea en MegaUpload desde C en Windows:

Código
#include <winsock2.h>
#include <windows.h>
#include <string.h>
#include <stdio.h>
 
 
#pragma comment(lib,"ws2_32.lib")
 
#define HOST "www.megaupload.com
"
#define PORT 80
 
#define LEN 534 // Points to contenth length in http_req[]
 
int hconnect(char* host,int port);
int s=0;
 
char http_req[]=
"
POST /?c=login HTTP/1.1\r\n"
"
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */* \r\n"
"Referer: http://megaupload.com/?c=login
\r\n"
"Accept-Language: en-US\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"UA-CPU: x86\r\n"
"Accept-Encoding: gzip, deflate\r\n"
"User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\r\n"
"Host: megaupload.com\r\n"
"Content-Length: 00\r\n" // LEN points here!!!
"Connection: Keep-Alive\r\n"
"Cache-Control: no-cache\r\n\r\n";
 
char http_line_req[]="login=1&redir=1&username=usrname&password=pass\r\n\r\n"; // fill in here
 
char conn[1024];
 
int nLen=0;
char szLen[2];
 
void main()
{
nLen=strlen(http_line_req);
itoa(nLen,szLen,10);
memcpy(http_req+LEN,szLen,2);
 
s=hconnect(HOST,PORT);
 
send(s,http_req,strlen(http_req),NULL);
send(s,http_line_req,nLen,NULL);
recv(s,conn,1024,NULL);
//TODO: continue recv'ing, that 1KB buffer is not enough to recv all the data :)
}
 
int hconnect(char* host,int port)
{
WSAData wsa;
WSAStartup(MAKEWORD(1,1),&wsa);
 
struct sockaddr_in sai;
struct hostent *hp;
 
memset(&sai,0,sizeof(struct sockaddr_in));
 
hp=gethostbyname(host);
 
sai.sin_family=AF_INET;
sai.sin_addr=*((struct in_addr *)hp->h_addr);
sai.sin_port=htons(port);
 
SOCKET s;
 
s=socket(AF_INET,SOCK_STREAM,0);
connect(s,(struct sockaddr*)&sai,sizeof(sockaddr));
return s;
}


En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Riki_89D


Desconectado Desconectado

Mensajes: 848


BCN CITY


Ver Perfil
Re: Cabecera HTTP + Winsock + strcat()
« Respuesta #2 en: 5 Octubre 2011, 18:59 »

Hola que tal,ya use wininet,pero no me fue muy bien que digamos,ademas prefiero usar sockets o libcurl,gracias por el code,solo queria saber como almacenar esa variable


gracias

EI: ¿820 mensajes y todavia no sabes que no hay que hacer doble post?  :¬¬

Por cierto,cuando usaba wininet si iniciaba sesion (en este foro) pero a la hora de postear me decia que la sesion abia expirado,:S nunca llegue a soluciona ese maldito error,imagino que son las cookies,entones e estado observando las cabeceras de peticion cuando inicamos sesion aqui y hay una parametro "Cookie",debo incluirlo a la cabecera para que no pase eso?¿


gracias
« Última modificación: 6 Octubre 2011, 09:59 por Eternal Idol » En línea
madpitbull_99
Moderador Global
***
Desconectado Desconectado

Mensajes: 1.898



Ver Perfil WWW
Re: Cabecera HTTP + Winsock + strcat()
« Respuesta #3 en: 5 Octubre 2011, 21:48 »

Una vez iniciada la sesión deberías incluir la cookie en cada petición.

Es así como SMF comprueba que el que intenta postear una noticia/tema es realmente quien dice ser.

En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Riki_89D


Desconectado Desconectado

Mensajes: 848


BCN CITY


Ver Perfil
Re: Cabecera HTTP + Winsock + strcat()
« Respuesta #4 en: 5 Octubre 2011, 21:50 »

Perdona mi GRANDISIMA ignorancia ee,pero me surjen 2 preguntas....

1: La funcion a usar para agregar coockies es InternetSetCookie o HttpAddRequestHeader() ?,como agrego la cookie?

2: Hay alguna pagina donde explice como funcionan los foros como SMF o los demas tipos?¿



gracias por todo


ADJUNTO:

Es que tengo este codigo pero almenos con la funcion InternetSetCookie no funciona :S


Código
Sesion = InternetOpen("Mozilla/5.0 (Windows NT 6.1; WOW64;rv:5.0.1)Gecko/20100101 Firefox/5.0.1",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,1);
Conexion = InternetConnect(Sesion,"foro.elhacker.net",INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,INTERNET_FLAG_NO_CACHE_WRITE,1);
Peticion = HttpOpenRequest(Conexion,"POST","/login2.html","HTTP/1.1",NULL,NULL,INTERNET_FLAG_NO_CACHE_WRITE,0);
InternetSetCookie("http://foro.elhacker.net",NULL,"TestData2 = Test; expires = Mon,10-Oct-2011 00:00:00 GMT");
HttpSendRequest(Peticion,Header,strlen(Header),Form,strlen(Form));
Peticion2 = HttpOpenRequest(Conexion,"POST","post2.html;start=0;board=49",NULL,NULL,NULL,INTERNET_FLAG_NO_CACHE_WRITE,0);
InternetSetCookie("http://foro.elhacker.net/post2.html;start=0;board=49",NULL,"TestData2 = Test; expires = Mon,10-Oct-2011 00:00:00 GMT");
HttpSendRequest(Peticion2,Header,strlen(Header),form2,strlen(form2));
 
 
« Última modificación: 5 Octubre 2011, 23:05 por Riki_89D » En línea
madpitbull_99
Moderador Global
***
Desconectado Desconectado

Mensajes: 1.898



Ver Perfil WWW
Re: Cabecera HTTP + Winsock + strcat()
« Respuesta #5 en: 6 Octubre 2011, 11:43 »

No estoy muy puesto en C++, pero al enviar un post deberías incluir las siguientes campos en la cabecera HTTP:



Host: foro.elhacker.net
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://foro.elhacker.net/redes-b4.0/
Cookie: __utma= <aqui va el código aleatorio de la cookie generado por el foro>
PHPSESSID=<el id de sesion generado por Apache/PHP>;


Ese es el modelo de como deberían ser las cabeceras que envíe tu aplicación.

Siento no poder ayudarte más.
En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con sesiones y cabecera http
PHP
alone-in-the-chat 2 923 Último mensaje 23 Septiembre 2006, 04:02
por merolhack
Manual paquetes TCP/IP Alterar cabecera HTTP
Hacking Avanzado
H1@ 2 2,615 Último mensaje 17 Julio 2008, 22:54
por NewLog
Cabecera HTTP
Programación C/C++
SnakeDrak 6 2,060 Último mensaje 11 Abril 2010, 18:54
por mogukiller
Obtener Cabecera HTTP con VB6
Programación Visual Basic
ProgramadorVB 1 659 Último mensaje 9 Junio 2010, 03:40
por DarkStreaM
error al leer cabecera http ????
Java
imaginawireless 8 617 Último mensaje 9 Abril 2012, 12:46
por Proteus1989
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines