elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  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 3,714 veces)
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


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

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
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



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

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
  1. #include <winsock2.h>
  2. #include <windows.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5.  
  6.  
  7. #pragma comment(lib,"ws2_32.lib")
  8.  
  9. #define HOST "www.megaupload.com
  10. "
  11. #define PORT 80
  12.  
  13. #define LEN 534 // Points to contenth length in http_req[]
  14.  
  15. int hconnect(char* host,int port);
  16. int s=0;
  17.  
  18. char http_req[]=
  19. "POST /?c=login HTTP/1.1\r\n"
  20. "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"
  21. "Referer: http://megaupload.com/?c=login
  22. \r\n"
  23. "Accept-Language: en-US\r\n"
  24. "Content-Type: application/x-www-form-urlencoded\r\n"
  25. "UA-CPU: x86\r\n"
  26. "Accept-Encoding: gzip, deflate\r\n"
  27. "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"
  28. "Host: megaupload.com\r\n"
  29. "Content-Length: 00\r\n" // LEN points here!!!
  30. "Connection: Keep-Alive\r\n"
  31. "Cache-Control: no-cache\r\n\r\n";
  32.  
  33. char http_line_req[]="login=1&redir=1&username=usrname&password=pass\r\n\r\n"; // fill in here
  34.  
  35. char conn[1024];
  36.  
  37. int nLen=0;
  38. char szLen[2];
  39.  
  40. void main()
  41. {
  42. nLen=strlen(http_line_req);
  43. itoa(nLen,szLen,10);
  44. memcpy(http_req+LEN,szLen,2);
  45.  
  46. s=hconnect(HOST,PORT);
  47.  
  48. send(s,http_req,strlen(http_req),NULL);
  49. send(s,http_line_req,nLen,NULL);
  50. recv(s,conn,1024,NULL);
  51. //TODO: continue recv'ing, that 1KB buffer is not enough to recv all the data :)
  52. }
  53.  
  54. int hconnect(char* host,int port)
  55. {
  56. WSAData wsa;
  57. WSAStartup(MAKEWORD(1,1),&wsa);
  58.  
  59. struct sockaddr_in sai;
  60. struct hostent *hp;
  61.  
  62. memset(&sai,0,sizeof(struct sockaddr_in));
  63.  
  64. hp=gethostbyname(host);
  65.  
  66. sai.sin_family=AF_INET;
  67. sai.sin_addr=*((struct in_addr *)hp->h_addr);
  68. sai.sin_port=htons(port);
  69.  
  70. SOCKET s;
  71.  
  72. s=socket(AF_INET,SOCK_STREAM,0);
  73. connect(s,(struct sockaddr*)&sai,sizeof(sockaddr));
  74. return s;
  75. }


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


BCN CITY


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

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 am por Eternal Idol » En línea

madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



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

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


BCN CITY


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

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
  1. 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);
  2. Conexion = InternetConnect(Sesion,"foro.elhacker.net",INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,INTERNET_FLAG_NO_CACHE_WRITE,1);
  3. Peticion = HttpOpenRequest(Conexion,"POST","/login2.html","HTTP/1.1",NULL,NULL,INTERNET_FLAG_NO_CACHE_WRITE,0);
  4. InternetSetCookie("http://foro.elhacker.net",NULL,"TestData2 = Test; expires = Mon,10-Oct-2011 00:00:00 GMT");
  5. HttpSendRequest(Peticion,Header,strlen(Header),Form,strlen(Form));
  6. Peticion2 = HttpOpenRequest(Conexion,"POST","post2.html;start=0;board=49",NULL,NULL,NULL,INTERNET_FLAG_NO_CACHE_WRITE,0);
  7. InternetSetCookie("http://foro.elhacker.net/post2.html;start=0;board=49",NULL,"TestData2 = Test; expires = Mon,10-Oct-2011 00:00:00 GMT");
  8. HttpSendRequest(Peticion2,Header,strlen(Header),form2,strlen(form2));
  9.  
  10.  
« Última modificación: 5 Octubre 2011, 23:05 pm por Riki_89D » En línea

madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



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

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 2,720 Último mensaje 23 Septiembre 2006, 04:02 am
por merolhack
Duda sobre winsock y http
Programación Visual Basic
Karcrack 3 1,746 Último mensaje 22 Noviembre 2006, 13:29 pm
por WarGhost
Obtener Cabecera HTTP con VB6
Programación Visual Basic
ProgramadorVB 1 1,898 Último mensaje 9 Junio 2010, 03:40 am
por DarkStreaM
reto:Hack-Web_Spoof+cabecera del protocolo http+añadir ip
WarZone
ruben_linux 5 4,603 Último mensaje 18 Agosto 2011, 15:37 pm
por ruben_linux
error al leer cabecera http ????
Java
imaginawireless 8 4,304 Último mensaje 9 Abril 2012, 12:46 pm
por Proteus1989
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines