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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Simulando una clave de acceso en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Simulando una clave de acceso en C++  (Leído 25,169 veces)
Dr. H47

Desconectado Desconectado

Mensajes: 12


No que sea mi oficio, así es mi estilo de vida.


Ver Perfil WWW
Simulando una clave de acceso en C++
« en: 9 Enero 2011, 05:43 am »

- Aqui les dejo un pequeño código fuente codificado en ´lenguaje c++.

Código que simula una clave de acceso mediante do…while y define.

- Si no se ingresa la clave correcta el programa no da acceso y pide ingresar la clave cuantas veces sea necesario.

- La clave ha sido declarada en una variable tipo entero (int), por lo que si se ingresa una letra o caracter que no sea numerico, la aplicación sale de su ciclo provocando un error infinito.


Código
  1. // ----------------------------
  2. // DENEGADO.CPP
  3. // Escrito en Turbo C++ 3.0
  4. // Programa que restringe el acceso, si no se teclea la clave correcta.
  5. // utilizando "do..while" y "define".
  6. // ----------------------------
  7.  
  8. #include <iostream.h>
  9. #include <conio.h>
  10.  
  11. #define clavetrue 777
  12.  
  13. int claveacceso;
  14.  
  15. void main (void)
  16. {
  17. clrscr();
  18. do
  19. {
  20. cout<<"Ingrese la clave de acceso: ";
  21. cin>>claveacceso;
  22. if (claveacceso != clavetrue);
  23. }
  24. while (claveacceso != clavetrue);
  25. cout<<"\n\nAcceso concedido.";
  26. getch();
  27. }
  28.  
  29. // Eder A. Lopez
  30. // dr.h47@live.com.mx
  31. // Powered by Dr. H47
  32.  

Ver el código fuente en texto plano.

Bajar source+ejecutable comprimido en .zip


En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Simulando una clave de acceso en C++
« Respuesta #1 en: 9 Enero 2011, 20:36 pm »

Jajaja buen codigo, felicitaciones


En línea

тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: Simulando una clave de acceso en C++
« Respuesta #2 en: 9 Enero 2011, 21:04 pm »

Siempre decepcionando ZERO...

Esta bien la idea, pero te falla el uso de conio.h es una libreria antigua, bueno lo de siempre, leete esto.

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html


En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Simulando una clave de acceso en C++
« Respuesta #3 en: 10 Enero 2011, 19:14 pm »

Sumado a que no es recomendable utilizar conio, "main" debe declararse "int main". La declaración de "iostream.h" es obsoleta, debe declararse "iostream". Cuidado con las variables globales innecesarias; son una mala practica.

Por otro lado, el código es bastante inseguro:

1) La forma en la que implementas el valor correcto es insegura. Es fácilmente accesible ya sea leyendo el proceso o debuggeando el ejecutable.

2) No limitas los intentos, por lo tanto en ultima instancia se podría hacer fuerza bruta.

Saludos

En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Dr. H47

Desconectado Desconectado

Mensajes: 12


No que sea mi oficio, así es mi estilo de vida.


Ver Perfil WWW
Re: Simulando una clave de acceso en C++
« Respuesta #4 en: 27 Enero 2011, 03:40 am »

Gracias por el aviso, servira para tomarlo en cuenta en mis otras practicas.

Saludos.
En línea

.mokk.

Desconectado Desconectado

Mensajes: 177



Ver Perfil
Re: Simulando una clave de acceso en C++
« Respuesta #5 en: 27 Enero 2011, 09:27 am »

Pues si he visto el codigo y veo algo que no entiendo aun, porque un if dentro del do while de comparacion que no hace nada ? hehe

Sobre el codigo aqui te lo dejo un poco mejorado, acepta letras pero mostrara mensaje diciendo que solo numeros, por lo que es mejor asi tu programa no crashea, bueno aqui te dejo el codigo y tambien leido lo de LittleHorse intente hacerlo de la mejor forma posible

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. #define clavetrue 777
  7.  
  8. int claveacceso, intento=0, total = 5;
  9. char buffer[100];
  10.  
  11. int main(int argc, char *argv[])
  12. {
  13.     do
  14.     {
  15.      if(intento>total) {
  16.                     cout << "Has sobrepasado el numero de intentos disponibles el programa cerrara";
  17.                     cin.get();
  18.                     return 0;
  19.                        }
  20.  
  21.  
  22.      cout<<"Ingrese la clave de acceso: ";
  23.      fgets(buffer, 99, stdin);
  24.      if(sscanf(buffer, "%d", &claveacceso) != 1)
  25.                        cout << "Error solo numeros porfavor" << endl;
  26.  
  27.  
  28.  
  29.      if(claveacceso != clavetrue)
  30.                     cout<<"Intento numero: " << intento << " - Intentos restantes: " << (total-intento) << endl;
  31.      intento++;
  32.     }
  33.     while (claveacceso != clavetrue);
  34.     cout<<"\n\nAcceso concedido.";
  35.     cin.get();
  36. }
  37.  


1) La forma en la que implementas el valor correcto es insegura. Es fácilmente accesible ya sea leyendo el proceso o debuggeando el ejecutable.


He visto este tema en el cual nose si sea buenoa forma de asegurar mejor nuestra contraseña,
http://gaussianos.com/criptografia-cifrado-de-clave-publica-ii/
Ahi tambien si podrias dar alguna sugerencia en eso seria de gran ayuda mas para proyectos en los que deceemos usar una contraseña y sea mas dificil el poder crackear el programa.
« Última modificación: 27 Enero 2011, 09:31 am por .mokk. » En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Simulando una clave de acceso en C++
« Respuesta #6 en: 27 Enero 2011, 17:25 pm »

Es un tema bastante amplio, se pueden hacer muchas cosas. Ofuscar el código agregando operaciones basura, packers, ofuscación mediante VM, cifrados de distintos tipos para el password etc.

Realmente depende del propósito principal del programa (si realiza o no conexiones) pero la regla básica es no almacenar la contraseña en texto plano en ningún lugar del sistema.

En el caso del código, al utilizar un define le pones la tarea muy facil al que debuggea ya que puede ver el valor de la constante a comparar muy fácilmente. Es decir vería algo similar a:

Código
  1. cmp [xxxxxx],00000309

donde 309 en hexadecimal es 777 en decimal.

Saludos
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: Simulando una clave de acceso en C++
« Respuesta #7 en: 27 Enero 2011, 19:02 pm »

Código
  1. /*
  2. Eder A. Lopez
  3. dr.h47@live.com.mx
  4. Powered by Dr. H47
  5. ++++++++++++
  6. Code in C : Sagrini 2010 : elhacker.net
  7. */
  8. #include <stdio.h>
  9.  
  10. int main (int argc, char *argv [])
  11. {
  12. int clave, OK = atoi (argv [1]);
  13. do
  14. {
  15. printf( "Ingrese la clave de acceso: ");
  16. scanf ("%d", &clave);
  17. }
  18. while (clave != OK)
  19. printf ("Acceso concedido !!!\n\n");
  20. return 0;
  21. }
  22.  

He visto este tema en el cual nose si sea buenoa forma de asegurar mejor nuestra contraseña,
http://gaussianos.com/criptografia-cifrado-de-clave-publica-ii/
Pues no, eso es para otra cosa  :P. Criptografía, comunicaciones seguras, pero se podría usar algo como
Código
  1. #define OK 111*7
Evidentemente más entrevesado, para liar a un atacante inexperto...
Otra forma sería guardar la pass en un archivo con privilegios unicamente del que ejecuta el prog... Hay formas de sobra, solo es pensar.

Es un tema bastante amplio, se pueden hacer muchas cosas. Ofuscar el código agregando operaciones basura, packers, ofuscación mediante VM, cifrados de distintos tipos para el password etc.
Realmente depende del propósito principal del programa (si realiza o no conexiones) pero la regla básica es no almacenar la contraseña en texto plano en ningún lugar del sistema.
En el caso del código, al utilizar un define le pones la tarea muy facil al que debuggea ya que puede ver el valor de la constante a comparar muy fácilmente. Es decir vería algo similar a:
Código
  1. cmp [xxxxxx],00000309
donde 309 en hexadecimal es 777 en decimal.
Saludos
De acuerdo, mucho mejor jeje... Ahí esta lo de arriba...

Sumado a que no es recomendable utilizar conio, "main" debe declararse "int main". La declaración de "iostream.h" es obsoleta, debe declararse "iostream". Cuidado con las variables globales innecesarias; son una mala practica.
Por otro lado, el código es bastante inseguro:
1) La forma en la que implementas el valor correcto es insegura. Es fácilmente accesible ya sea leyendo el proceso o debuggeando el ejecutable.
2) No limitas los intentos, por lo tanto en ultima instancia se podría hacer fuerza bruta.
Saludos
Lo de la fuerza bruta se podría hacer de todas formas, solo ejecutar varias veces el programa, aunque sería más lento evidentemente...
Lo demás que se dice en el code...
http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Suerte!
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
clave de acceso *.mov quicktime
Multimedia
jdiredtor 0 964 Último mensaje 9 Febrero 2006, 16:23 pm
por jdiredtor
Introducción a microcontroladores PIC [simulando nuestro programas en ASM y C] « 1 2 »
Electrónica
Casidiablo 14 49,823 Último mensaje 20 Agosto 2008, 13:48 pm
por Meta
Clave de acceso Photoshop CS2
Diseño Gráfico
Sra.Cullen 2 4,899 Último mensaje 11 Noviembre 2008, 18:07 pm
por Axus
Ayuda Borrado CLAVE acceso BLUETOOTH
Hacking Mobile
mirelapasora 2 3,072 Último mensaje 31 Mayo 2011, 16:10 pm
por mirelapasora
Control relés con una bombilla simulando motor lavadora
Electrónica
Meta 0 1,348 Último mensaje 1 Enero 2016, 23:33 pm
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines