Título: Ayuda en un programa de c++ uso del strcmp :) Publicado por: SilverStun en 3 Noviembre 2014, 03:43 am Buenas noches espero se encuentren bien si alguien me pudiera ayudar con esto aquí mi código fuente :
# include <conio.h> # include <stdio.h> # include <stdlib.h> # include <iostream.h> # include <dos.h> # include <string.h> void leerPasw(char frase[]) { int i=0; cout.flush(); char a; int b=232; a=b; do { frase = (unsigned char)getch(); if(frase!=8) // no es retroceso { cout << ""<<a<<""; // muestra por pantalla i++; } else if(i>0) // es retroceso y hay caracteres { cout << (char)8 << (char)32 << (char)8; i--; //el caracter a borrar e el backspace } cout.flush(); }while(frase[i-1]!=13); // si presiona ENTER frase[i-1] = NULL; cout <<"\n"; } int fo1=177,fo9=178; int fo2=163,fo3=162,fo10=164; int fo4=201,fo5=205,fo6=187,fo7=188,fo8=200; int main () { char Usuario[16]; char Pass[16]; textbackground(WHITE); clrscr(); gotoxy(8,1);textcolor(BLUE);cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1); gotoxy(8,2);textcolor(BLUE);cprintf("%c %c",fo1,fo1); gotoxy(8,3);textcolor(BLUE);cprintf("%c Rep%cblica Bolivariana de Venezuela %c",fo1,fo2,fo1); gotoxy(8,4);textcolor(BLUE);cprintf("%c Ministerio del Poder Popular para la Defensa %c",fo1,fo1); gotoxy(8,5);textcolor(BLUE);cprintf("%c Universidad Nacional Experimental de la Fuerza Armada Nacional %c",fo1,fo1); gotoxy(8,6);textcolor(BLUE);cprintf("%c Decanato de Investigaci%cn y Postgrado %c",fo1,fo3,fo1); gotoxy(8,7);textcolor(BLUE);cprintf("%c N%ccleo Los Teques %c",fo1,fo2,fo1); gotoxy(8,8);textcolor(BLUE);cprintf("%c %c",fo1,fo1); gotoxy(8,9);textcolor(BLUE);cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1,fo1); gotoxy(38,11);textcolor(BLUE);cprintf("%c%c%c%c%c",fo4,fo5,fo5,fo5,fo6); gotoxy(35,12);textcolor(BLUE);cprintf("%c%c%c%c E %c%c%c%c",fo4,fo5,fo5,fo7,fo8,fo5,fo5,fo6); gotoxy(32,13);textcolor(BLUE);cprintf("%c%c%c%c N F %c%c%c%c",fo4,fo5,fo5,fo7,fo8,fo5,fo5,fo6); gotoxy(29,14);textcolor(BLUE);cprintf("%c%c%c%c U A %c%c%c%c",fo4,fo5,fo5,fo7,fo8,fo5,fo5,fo6); gotoxy(29,15);textcolor(BLUE);cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",fo8,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo5,fo7); gotoxy(26,17);textcolor(BLUE);cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9); gotoxy(26,18);textcolor(BLUE);cprintf("%c Operador: %c",fo9,fo9); gotoxy(26,19);textcolor(BLUE);cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9); gotoxy(40,18);scanf("%c",&Usuario); gotoxy(26,22);textcolor(BLUE);cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9); gotoxy(26,23);textcolor(BLUE);cprintf("%c Contrase%ca: %c",fo9,fo10,fo9); gotoxy(26,24);textcolor(BLUE);cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9,fo9); gotoxy(41,23);leerPasw(Pass); if(strcmp(Usuario,"Administrador") == 0 && strcmp(Pass,"stun")==0) { cout << "\n\nUsuario Acertado" << endl; } else { cout << "\n\nUsuario o Contrasena incorrecta, por favor verifique" << endl; } system("pause > null"); return 0; } mi duda es por que no me acepta la parte del strcmp gracias de antemano :) Título: Re: Ayuda en un programa de c++ uso del strcmp :) Publicado por: crack81 en 3 Noviembre 2014, 05:02 am si estas usando c++ porque no usas string en vez de arreglos de caracter creo es mas apropiado
la verdad no entiendo porque no te anda el strcmp a mi anduvo bien si me haces caso en utilizar string solo has un pequeño cambio al comparar cadenas, utilizando la funcion c_str() porque como strcmp es de c no acepta el objeto string y se tiene que hacer un pequeño casteo como en este ejemplo: Código: #include<iostream> Título: Re: Ayuda en un programa de c++ uso del strcmp :) Publicado por: leosansan en 3 Noviembre 2014, 05:14 am mi duda es por que no me acepta la parte del strcmp gracias de antemano :) En principio funciona bien, como indica crack81. Eso sí, tienes que ajustar las librerías que en C++ no llevan .h e incluir el using: Código
En todo caso dirá, tal como lo tenias, entrada incorrecta porque a la variable usuario no le das entrada, a no ser, tal como hizo crack81 que la declares antes. Y ya que usas conio.h te puedes ahorrar el uso de dos.h para system cambiando ésta por getch, aunque lo que proceda es no usar la librería conio y sus funciones por no ser parte del estándar de C/C++. Y sii como indica crack81 usas string has de incluir #include <string> en lugar de #include <cstring> y la comparación puede ser directa, sin el uso de strcmp: Código
¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Ayuda en un programa de c++ uso del strcmp :) Publicado por: SilverStun en 3 Noviembre 2014, 12:15 pm Muchas gracias ya pruebo a ver cualquier cosa les digo ya lo voy a intentar
:P Título: Re: Ayuda en un programa de c++ uso del strcmp :) Publicado por: dRak0 en 3 Noviembre 2014, 13:21 pm Si utilizas ese codigo tendras muy poca seguridad.Solo bastara con analizar los strings del binario y hacer fuerza bruta al pass.Podrian depurar la aplicacion frenar en el strcmp y devolverle true y listo.
Título: Re: Ayuda en un programa de c++ uso del strcmp :) Publicado por: eferion en 3 Noviembre 2014, 13:28 pm Si utilizas ese codigo tendras muy poca seguridad.Solo bastara con analizar los strings del binario y hacer fuerza bruta al pass.Podrian depurar la aplicacion frenar en el strcmp y devolverle true y listo. ¿Y qué propones para evitar eso? Al final la decisión sobre si un acceso es válido o no la toma un salto condicional en ensamblador... cambiar ese código por su opuesto ( o cambiarlo por un salto incondicional) revienta totalmente el chequeo de usuario y contraseña. Título: Re: Ayuda en un programa de c++ uso del strcmp :) Publicado por: dRak0 en 3 Noviembre 2014, 14:48 pm Hacer todo lo posible para que no se encuentre ese salto.No soy un experto en ingenieria inversa , ni mucho menos en seguridad orientada a la defensa.
Lo primero que se me viene a la mente es: Utilizar criptografia. Añadir un packer. Tecnicas anti-debugging. Remover strings del binario. Tratar de usar funciones que no son muy conocidas.Creo que lo primero que van a buscar es strcmp. En fin como decis vos , siempre se va a poder.El tema es complicar un poco. |