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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [24] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ... 77
231  Seguridad Informática / Seguridad / Re: Seguridad en pagina web en: 11 Noviembre 2015, 09:42 am
Usa TOR mejor.
232  Programación / Programación C/C++ / Conexión HTTPS con openssl C++ en: 10 Noviembre 2015, 10:03 am
Hola, estaba probando con openssl a realizar una conexión https visto que no conseguí curl, de hecho no me hace falta si se usar openssl que de momento no es el caso.

Lo primero una duda, cuando me conecto con google.com de la forma:

Código
  1. int sd;
  2. struct hostent *host;
  3. struct sockaddr_in addr;
  4.  
  5. host = gethostbyname("google.com"); /* convert hostname ‡ IP addr */
  6. sd = socket(PF_INET, SOCK_STREAM, 0);  /* create TCP socket */
  7. memset(&addr, 0, sizeof(addr));
  8. addr.sin_family = AF_INET;
  9. addr.sin_port = htons(80);     /* set the desired port */
  10. addr.sin_addr.s_addr = *(long*)(host->h_addr); /* and address */
  11. connect(sd, (struct sockaddr*)&addr, sizeof(addr));/* connect */
  12. //send .. recv..

Los datos que obtengo son descifrados, esto es porque me conecto a el puerto 80 que usa HTTP ¿verdad?, ¿pero google no forzaba a usar https?, no entiendo porque una conexión normal no me la cifra, ¿será que es la primera interacción?.

Me he puesto a probar una conexión https siguiendo un tutorial, que encontré aquí:

http://www.informit.com/articles/article.aspx?p=22078&seqNum=3

Muy bueno por cierto, porque hay poca documentación sobre openssl y ejemplos.

Código
  1. SSL_METHOD *method;
  2. SSL_CTX *ctx;
  3. OpenSSL_add_all_algorithms();   /* load & register cryptos */
  4. SSL_load_error_strings();     /* load all error messages */
  5. method = (SSL_METHOD*)SSLv2_client_method();   /* create client instance */
  6. ctx = SSL_CTX_new(method);         /* create context */
  7. int sd;
  8. struct hostent *host;
  9. struct sockaddr_in addr;
  10.  
  11. host = gethostbyname("google.com"); /* convert hostname ‡ IP addr */
  12. sd = socket(PF_INET, SOCK_STREAM, 0);  /* create TCP socket */
  13. memset(&addr, 0, sizeof(addr));
  14. addr.sin_family = AF_INET;
  15. addr.sin_port = htons(80);     /* set the desired port */
  16. addr.sin_addr.s_addr = inet_addr("216.58.211.238"); /* and address */
  17. connect(sd, (struct sockaddr*)&addr, sizeof(addr));/* connect */
  18. SSL *ssl;
  19. ssl = SSL_new(ctx);    /* create new SSL connection state */
  20. SSL_set_fd(ssl, sd);   /* attach the socket descriptor */
  21. SSL_connect(ssl);          /* perform the connection */
  22. SSL_write(ssl, "ola que ase", 0);
  23. char rec[1000];
  24. SSL_read(ssl, rec, 0);
  25. cout << rec;

Me salta un error en ejecución en SSL_set_fd(ssl, sd);, donde he pasado de segundo argumento un socket, ¿que se supone que tengo que pasar ahí?.

¿Se supone que hago una conexión http y luego paso a https? ¿o como va?.

Seguiré probando, un saludo.

Edito: Bueno he estado probando y resulta que le pasaba el primer argumento null, el segundo argumento creo que es lo que devuelve connect, fui probando porque devolvia null y probando variable a variable hasta que ví que me faltaba una función de inicializar la librería tal que:

SSL_library_init();

Tras ponerlo no dio error, pero devolvió basura, seguiré probando a ver. Creo que es porque nunca he usado write() a ver de que va..

Código
  1. char *post = "POST / HTTP/1.1\r\ncontent-type:application/x-www-form-urlencoded;charset=utf-8\r\nhost: google.com\r\n";
  2.  
  3. SSL_METHOD *method;
  4. SSL_CTX *ctx;
  5. SSL_library_init();
  6. OpenSSL_add_all_algorithms();   /* load & register cryptos */
  7. SSL_load_error_strings();     /* load all error messages */
  8. method = const_cast<SSL_METHOD*>(SSLv2_client_method());   /* create client instance */
  9. ctx = SSL_CTX_new(method);         /* create context */
  10. int sd, server;
  11. sockaddr_in addr;
  12. WSADATA wsa;
  13. WSAStartup(MAKEWORD(2, 0), &wsa);
  14. if (sd = socket(AF_INET, SOCK_STREAM, 0) == SOCKET_ERROR)
  15. cout << "error crear socket";/* create TCP socket */
  16. memset(&addr, 0, sizeof(addr));
  17. addr.sin_family = AF_INET;
  18. addr.sin_port = htons(80);     /* set the desired port */
  19. addr.sin_addr.s_addr = inet_addr("216.58.211.238"); /* and address */
  20. if (server = connect(sd, (struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR){
  21. cout << "error conectar: " << WSAGetLastError();/* connect */
  22. }
  23. cout << "conectado";
  24. SSL *ssl;
  25. ssl = SSL_new(ctx);    /* create new SSL connection state */
  26. SSL_set_fd(ssl, server);   /* attach the socket descriptor */
  27. SSL_connect(ssl);          /* perform the connection */
  28. SSL_write(ssl, post, strlen(post));
  29. char rec[1000];
  30. SSL_read(ssl, rec, 0);
  31. cout << rec;
  32. /*...*/
  33. SSL_free(ssl);              /* release SSL state */
233  Foros Generales / Foro Libre / Re: El Parlament aprueba la declaración de independencia con 72 votos a favor en: 9 Noviembre 2015, 17:05 pm
Respecto al tema de la independencia, es una vergüenza que hayan aprobado la independencia con la mayoría del pueblo para el que gobiernan ha dicho que NO, perdieron la mayoría de votos, los que decían ser demócratas se ve que no respetan el voto de los catalanes, que ignoran a la mayoría de ellos y firman el camino al abismo, sabiendo que están incumpliendo la ley, y que la soberanía del pueblo español está en todos los españoles.

Pero ¿porqué?, porque los que lo han promovido el independentismo en cataluña se han centrado en robar, y estos años que han empezado a estar investigados han acelerado el proceso, en la carta ponía "y sobre todo tener un propio tribunal de justicia...", me saltó la risa cuando lo leí, la verdad le vendría de perlas a Más y a convergencia, el partido más corrupto de España por miembro, cuando todo parecía apuntar a que el PP sería insuperable, llega convergencia (el PP independentista catalán), y cuando lo único bueno que tenía este gobierno parecía ser la unidad nacional, ha demostrado que son lamentables y que siguen sin tomar medidas ante las amenazas catalanas, vergüenza política en cataluña y en españa.


Citar
Día uno:
-Rajoy: "A este gobierno no va le temblará el pulso a la hora de tomar las decisiones...".
+Hechos: "GriGri".
....
Dos meses después:
Rajoy: "Este gobierno usará cuantos instrumentos sean necesarios para que ...".
+Hechos: "GriGri".
......
-Yo: "Rajoy, pero que inútil eres".

PD: podría escribir un libro sobre mil millones de cosas sobre el sin sentido de la independencia, la presión del gobierno catalán a los catalanes que se sienten españoles, las subvenciones al independentismo, televisiones públicas independentistas... la lista de barbaridades que atentan contra el español en cataluña es infinita, tienen superavit con el mercado español, es la comunidad que más usan los españoles para pasar sus vacaciones, el rey les puso un rascacielos en barcelona de 130M, es injustisimo el trato que españa tiene con ellos y que se nos odie de esta manera, mucho apoyo a los que se sienten españoles en cataluña.


Saludos.















234  Programación / Programación General / Re: ¿como conseguir librería estática de curl? en: 9 Noviembre 2015, 00:19 am
¡Hola elektro!, muchas gracias por la respuesta, necesito la librería para C++ no para .NET ya que el proyecto que estoy levando a cabo está en C++, ojalá alguien me pudiera decir donde encontrarlo para C++ o como compilarlo XD, antes de que empiece a tirarme de los pelos.

Y bueno seguiré investigando hasta conseguirla, ¡un saludo socio!.
235  Programación / Programación C/C++ / Re: Pasar de char* a string pérdida de datos en: 8 Noviembre 2015, 17:57 pm
okey ya te comentaré como me va, pero creo que no me escribía lo que le ordenaba, ya probaré de nuevo, gracias.
236  Programación / Programación General / ¿como conseguir librería estática de curl? en: 8 Noviembre 2015, 17:22 pm
Pues eso, he tratado de compilarlo para VS13 pero necesito otras 3 librerías para compilarlo, traté de compilarlas y tuve errores, y pase de hacerlo era mucho lío por una jodida librería y es que no sabía hacerlo.

¿Como puedo conseguir una librería estática de curl descargandola?, y sino se puede ¿que pasos he de seguir para compilarla con sus dependencias?.

Un saludo.
237  Programación / Programación C/C++ / Re: Pasar de char* a string pérdida de datos en: 8 Noviembre 2015, 17:02 pm
El write en un archivo binario, escribe todos los bytes que le envíes. Para más información, consulta los métodos en una referencia de C++.

Escribe char* es lo que recibe como argumento, y al pasar u_char* a char* se corta en el primer \0, luego escribe hasta el primer \0:

Código
  1. void almacen::escribir(datos _datos)
  2. {
  3. ofstream archivo;
  4. archivo.open(directorio, ofstream::app | ofstream::binary);
  5. _datos = encriptador.encriptar_AES(_datos);
  6. archivo.write(reinterpret_cast<char*>(_datos.contenido), _datos.tamaño);
  7. //archivo.write(string((char*)_datos.contenido, _datos.tamaño).c_str(), _datos.tamaño);
  8. archivo.close();
  9. }

Si hay un byte nulo a la mitad, escribe solo la mitad independientemente de el tamaño que ponga en el segundo argumento, ¿me equivoco?.

Saludos.
238  Programación / Programación C/C++ / Re: Pasar de char* a string pérdida de datos en: 8 Noviembre 2015, 12:33 pm
Ah si perdon, se me escapó, pero si la construyo con 2 argumentos (char*, tamaño) pasa lo mismo, pues el c_str() corta al primer \0, aunque le digamos escribe 50 char, cuando el write encuentra el primer \0 deja de escribir ¿no?.

Saludos.
239  Programación / Programación C/C++ / Re: Pasar de char* a string pérdida de datos en: 8 Noviembre 2015, 12:14 pm
Buenas socio, me recomiendas usar fwrite y fread para trabajar con bytes en C++, ¿o conoces algo mejor?.

Por lo que has dicho, ¿esto no se cortaría?:

Código
  1. string cadena = reinterpret_cast<char*>(_datos.contenido);
  2. archivo.write(cadena.c_str(), cadena.size());

?? Saludos.
240  Programación / Programación C/C++ / Re: Pasar de char* a string pérdida de datos en: 7 Noviembre 2015, 18:27 pm
Si pero luego al llamar a c_str() se cortará en el primer \0 ¿no?, luego no habría valido para nada.

Código
  1. struct datos{u_char *contenido; int tamaño;};//vector<u_char>
  2.  
  3. void almacen::escribir(datos _datos)
  4. {
  5. ofstream archivo;
  6. archivo.open(directorio, ofstream::app | ofstream::binary);
  7. _datos = encriptador.encriptar_AES(_datos);
  8. archivo.write(reinterpret_cast<char*>(_datos.contenido), _datos.tamaño);
  9. //archivo.write(string((char*)_datos.contenido, _datos.tamaño).c_str(), _datos.tamaño);
  10. archivo.close();
  11. }

Ahí dejo el code problemático.

Saludos.

Edito: lo que dice ivancea es verdad gracias por la informacion del constructor, pero al pasar a c_str() se corta en la primera \0 como es de esperar, luego para escribir bytes con ofstream.write() no podemos hacerlo, puesto que necesitamos char* y si hay algun byte nulo se nos cortara la cadena.

Seguramente pase a fwrite.

Saludos.
Páginas: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [24] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ... 77
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines