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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Código fuente de Lynx
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Código fuente de Lynx  (Leído 7,663 veces)
lapras

Desconectado Desconectado

Mensajes: 140



Ver Perfil WWW
Re: Código fuente de Lynx
« Respuesta #10 en: 26 Mayo 2013, 20:25 pm »

Pues mírate el manual que te he dicho. Lo bueno que tiene es que la primera parte va "al grano", sockets TCP sin opciones ni cosas que compliquen el objetivo. El resto explica todos los detalles de los socket incluso los que no son TCP.


En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Código fuente de Lynx
« Respuesta #11 en: 26 Mayo 2013, 20:34 pm »

Gracias de nuevo me has echo medio trabajo! Si te puedo ayudar en algo no dudes en pedírmelo  :silbar:


En línea

I like to test things.
lapras

Desconectado Desconectado

Mensajes: 140



Ver Perfil WWW
Re: Código fuente de Lynx
« Respuesta #12 en: 26 Mayo 2013, 21:13 pm »

De nada hombre.  ;)
Se me había olvidado que querías programar para win32.
Tengo una mala noticia(tampoco es tan mala), los sockets no están estandarizados y por lo tanto no son multiplataforma.
El manual que te he pasado es estupendo pero tiene la pega de que se centra en entornos Unix(Posix standard).
No te desesperes. En la wiki de elhacker.net hay un tutorial que cubre los sockets Unix y windows.
http://wiki.elhacker.net/programacion/cc/articulos/introducion-a-los-sockets-en-ansi-c

Si quisieras hacer tu navegador multiplataforma tendrias que hacerlo mediante #ifdef's.
Otra alternativa sería usar otras librerías que si que son multiplataforma, como por ejemplo:

-boost -> la famosa boost! concretamente boost::asio
-NetLink Sockets C++ Library

A ver si acabo los exámenes y puedo ponerme a hacer código  >:(
« Última modificación: 26 Mayo 2013, 21:15 pm por tuket » En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Código fuente de Lynx
« Respuesta #13 en: 26 Mayo 2013, 21:31 pm »

Voy a mirarlos multiplataforma mejor a ver si doy echo un navegador portable jajaja.
No te quejes por los exámenes que yo ni tengo el grado medio. :-\ (¿Fijo que de la uni no?)
Suerte con ellos!!
En línea

I like to test things.
lapras

Desconectado Desconectado

Mensajes: 140



Ver Perfil WWW
Re: Código fuente de Lynx
« Respuesta #14 en: 6 Julio 2013, 01:13 am »

He acabado los examenes.
Aquí esta el código:

Código
  1. /*Text based web browser*/
  2.  
  3. #include <string>
  4. #include <iostream>
  5. #include <boost/asio.hpp>
  6.  
  7. using namespace std;
  8.  
  9. string get_formated_web(string);
  10. string getWeb(string);
  11. string getPage(string);
  12.  
  13. int main(int argv, char **argc){
  14.  
  15. if(argv==2){
  16. string web=getWeb(string(argc[1]));
  17. cout<<"web: "<<web<<endl;
  18. string page=getPage(string(argc[1]));
  19. cout<<"page: "<<page<<endl;
  20.  
  21. boost::asio::ip::tcp::iostream stream;
  22. stream.expires_from_now(boost::posix_time::seconds(60));
  23. stream.connect(web, "http");
  24. stream << "GET "<<page<<" HTTP/1.0\r\n";
  25. stream << "Host: "<< web <<"\r\n";
  26. stream << "Accept: */*\r\n";
  27. stream << "Connection: close\r\n\r\n";
  28. stream.flush();
  29.  
  30. stringstream codestream;
  31. codestream<<stream.rdbuf();
  32. string htmlsource( codestream.str() );
  33.  
  34. string formatedweb=get_formated_web(htmlsource);
  35. std::cout << formatedweb;
  36. }
  37. else{
  38. cout<<"Wrong arguments."<<endl
  39. <<"Usage: http www.webpage.com"<<endl;
  40. }
  41. }
  42.  
  43.  
  44. /* given: www.webpage.com/page.html */
  45. /* returns: www.webpage.com */
  46. string getWeb(string a){
  47. string web;
  48. for(int i=0;i<a.size();i++){
  49. if(a[i]==':'){
  50. web+=a[i];
  51. if(i+2<a.size()){
  52. if(a[i+1]=='/' && a[i+2]=='/'){
  53. web+="//";
  54. i+=2;
  55. }
  56. }
  57. }
  58. else if(a[i]=='/'){
  59. return web;
  60. }
  61. else{
  62. web+=a[i];
  63. }
  64. }
  65. return web;
  66. }
  67.  
  68. /* given: www.webpage.com/page.html */
  69. /* returns: /page.html */
  70. string getPage(string a){
  71. string page;
  72. bool found=false;
  73. for(int i=0;i<a.size();i++){
  74. if(found){
  75. page+=a[i];
  76. }
  77. else{
  78. if(a[i]==':'){
  79. if(i+2<a.size()){
  80. if(a[i+1]=='/' && a[i+2]=='/') i+=2;
  81. }
  82. }
  83. else if(a[i]=='/'){
  84. page+='/';
  85. found=true;
  86. }
  87. else{}
  88. }
  89. }
  90.  
  91. if(page=="") return "/";
  92. return page;
  93. }
  94.  
  95.  
  96. /* given: html source code */
  97. /* returns: formatted text webpage */
  98. string get_formated_web(string unformated){
  99. return unformated;
  100. }

No es un navegador completo pero espero que se vea clara la idea principal.
Lo que hacemos es imprimir el código fuente html.
La función get_formated_text() pretende traducir el html a el text legible.

Por ejemplo si le pasas:
Código:
<html>
<body>
<p>hola</p>
</body>
</html>
Te devuelve:
Código:
hola

He usado la libreria no estándar asio la cual es parte de boost.
En g++ se puede compilar así(como no es estándar toca linkear):
Código:
g++ http.cpp -lboost_system

Te animo a que completes el código a tu gusto o que por lo menos te sirva un poco de guía.
En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Código fuente de Lynx
« Respuesta #15 en: 6 Julio 2013, 02:13 am »

Me viene genial! Ahora lo pruebo!
¿Qué tal los exámenes?
En línea

I like to test things.
lapras

Desconectado Desconectado

Mensajes: 140



Ver Perfil WWW
Re: Código fuente de Lynx
« Respuesta #16 en: 6 Julio 2013, 09:51 am »

Bien, todo aprobado ::)
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Código fuente de Lynx
« Respuesta #17 en: 6 Julio 2013, 16:04 pm »

@lapras, por curiosidad, por qué pones los parámetros argv y argc al revés de como se suele hacer?  :xD
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: Código fuente de Lynx
« Respuesta #18 en: 6 Julio 2013, 16:50 pm »

@lapras, por curiosidad, por qué pones los parámetros argv y argc al revés de como se suele hacer?  :xD

Solo son nombres no importa lo que pongas, como si quieres ponerle a y b.

Un saludo.
En línea

lapras

Desconectado Desconectado

Mensajes: 140



Ver Perfil WWW
Re: Código fuente de Lynx
« Respuesta #19 en: 6 Julio 2013, 17:18 pm »

@lapras, por curiosidad, por qué pones los parámetros argv y argc al revés de como se suele hacer?  :xD
Pues por que me equivoqué y luego no tenía ganas de cambiarlo.
Al menos funciona..
En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Codigo Fuente
Ingeniería Inversa
popemonica 1 2,597 Último mensaje 25 Octubre 2005, 01:06 am
por #Borracho.-
Software que analice el código fuente de un proyecto buscando codigo malicioso
Bugs y Exploits
murdock_ 8 9,952 Último mensaje 18 Agosto 2010, 01:14 am
por Erfiug
Extrayendo código fuente de una web (Problema con código generado por JS)
PHP
Littl3 4 7,790 Último mensaje 3 Marzo 2011, 04:13 am
por Nakp
Duda acerda de comando en lynx
Scripting
espn8 0 1,613 Último mensaje 27 Agosto 2017, 05:23 am
por espn8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines