Título: Simulando una clave de acceso en C++ Publicado por: Dr. H47 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
Ver el código fuente (http://www.whitesec.com.mx/src/denegado.txt) en texto plano. Bajar source+ejecutable (http://www.whitesec.com.mx/src/Denegado.zip) comprimido en .zip Título: Re: Simulando una clave de acceso en C++ Publicado por: Edu en 9 Enero 2011, 20:36 pm Jajaja buen codigo, felicitaciones
Título: Re: Simulando una clave de acceso en C++ Publicado por: тαптяα 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 Título: Re: Simulando una clave de acceso en C++ Publicado por: Littlehorse 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 Título: Re: Simulando una clave de acceso en C++ Publicado por: Dr. H47 en 27 Enero 2011, 03:40 am Gracias por el aviso, servira para tomarlo en cuenta en mis otras practicas.
Saludos. Título: Re: Simulando una clave de acceso en C++ Publicado por: .mokk. 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) 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. Título: Re: Simulando una clave de acceso en C++ Publicado por: Littlehorse 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 (http://recon.cx/2008/a/craig_smith/Neohapsis-VM-101.pdf), cifrados (https://foro.elhacker.net/criptografia-b56.0/) 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
donde 309 en hexadecimal es 777 en decimal. Saludos Título: Re: Simulando una clave de acceso en C++ Publicado por: Garfield07 en 27 Enero 2011, 19:02 pm Código
He visto este tema en el cual nose si sea buenoa forma de asegurar mejor nuestra contraseña, Pues no, eso es para otra cosa :P. Criptografía, comunicaciones seguras, pero se podría usar algo comohttp://gaussianos.com/criptografia-cifrado-de-clave-publica-ii/ Código 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 (http://recon.cx/2008/a/craig_smith/Neohapsis-VM-101.pdf), cifrados (https://foro.elhacker.net/criptografia-b56.0/) de distintos tipos para el password etc. De acuerdo, mucho mejor jeje... Ahí esta lo de arriba...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 donde 309 en hexadecimal es 777 en decimal. Saludos 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. 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...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 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! |