Bloquear programa en c# con password

Iniciado por Pablo Videla, 25 Febrero 2009, 18:19 PM

0 Miembros y 2 Visitantes están viendo este tema.

Foxy Rider

en el caso del while para ir leyendo tenés AppendChar en SecureString ...
anyways, si el programa está comprimido, también se puede descomprimir ;) (depende cómo esté comprimido claro, totalmente relativo a eso) ...

la compresión se puede ver como una primera capa en lo que es cifrar, pero no como cifrado en sí xP

Saludos, Alex~

Noskcire

Hola Amigo.. En verdad soy nuevo Aqui.. pero me ha yamado la atencion esta pagina , pues ese mismo problema tengo .. quiero realizar un paswolrd protected en C#

pero mi problema no es ese sino es cuando el usuario intenta tres veces quiero que ese proceso se controle y salga un mensaje que diga:

"Lo Siento , tres intentos"
Application.Exit();

Mira Mi Codigo:

solo tienen que poner dos textbox
uno para usuario y uno para passwolrd

todo este codigo pertenece al evento del boton1 que es OK

private void button1_Click(object sender, EventArgs e)
       {
           string user = "erick";
           string pass = "clave";
           user = textBox1.Text;
           pass = textBox2.Text;

           if (user == "erick" && pass == "clave")
           {
               //llamada al formulario numero 2
               frm2.Show();

           }
           else
           {
               MessageBox.Show("Clave/Usuario, Erroneo");
               Application.Exit();
           }
             //Aqui quiero que me controle las veces que el usuario intente
             //tres veces y salga con un mensaje: Lo siento, tres intentos
           //Ayuda por favor si alguien save!!!
       }

Las Intenciones Secretas son como aguas profundas
per quien sabe descubrilas , es inteligente...

Pablo Videla

#22
Cita de: Noskcire en  3 Marzo 2009, 23:42 PM
Hola Amigo.. En verdad soy nuevo Aqui.. pero me ha yamado la atencion esta pagina , pues ese mismo problema tengo .. quiero realizar un paswolrd protected en C#

pero mi problema no es ese sino es cuando el usuario intenta tres veces quiero que ese proceso se controle y salga un mensaje que diga:

"Lo Siento , tres intentos"
Application.Exit();

Mira Mi Codigo:

solo tienen que poner dos textbox
uno para usuario y uno para passwolrd

todo este codigo pertenece al evento del boton1 que es OK





Código (csharp) [Seleccionar]

int intentos =3;
private void button1_Click(object sender, EventArgs e)

        {

            string user = "erick";
            string pass = "clave";
            user = textBox1.Text;
            pass = textBox2.Text;


            if (user == "erick" && pass == "clave")
            {
                //llamada al formulario numero 2
                frm2.Show();

            }
            else
            {
intentos--;
MessageBox.Show("Clave/Usuario, Erroneo");
               if(intentos ==0)
{
                MessageBox.show("Superaste la cantidad de intentos , chao");
                Application.Exit();
}
            }
              //Aqui quiero que me controle las veces que el usuario intente
              //tres veces y salga con un mensaje: Lo siento, tres intentos
            //Ayuda por favor si alguien save!!!
        }



Eso deberia servirte , cualquier error me avisan  :xD

Noskcire

 ;-) Hey eso fue super ese funcionamiento

Gracias BadDevil en verdad me funcionó perfecto

mi error era que declaraba la variable intentos dentro del evento del botom OK

Estaré aqui compartiendo mis conocimientos tambien

Gracias !!! Bye
Las Intenciones Secretas son como aguas profundas
per quien sabe descubrilas , es inteligente...

Pablo Videla

Cita de: Noskcire en  4 Marzo 2009, 19:00 PM
;-) Hey eso fue super ese funcionamiento

Gracias BadDevil en verdad me funcionó perfecto

mi error era que declaraba la variable intentos dentro del evento del botom OK

Estaré aqui compartiendo mis conocimientos tambien

Gracias !!! Bye
Cuando hice el mio tambien tuve el mismo problemaj ajaja despues me di cuenta  :xD :xD cometiendo errores se aprende , saludos

Noskcire

Las Intenciones Secretas son como aguas profundas
per quien sabe descubrilas , es inteligente...

Skeletron

Ten encuenta, que puede decompilarlo...

Yo suplico ayuda...
necesito por favor un tutorial de algun programa para compilar el codigo .net de un .exe mioo..

En fin..

Lo que te queria decir, es que no tienes que recordar el codigo... sino aprender la logica, y todo se acaba...
No te recomiendo en lo absoluto hacer eso:

string user = "erick";
            string pass = "clave";
            user = textBox1.Text;
            pass = textBox2.Text;


Te pueden "leer" desde la ram los valores de las varibles... (si es que no estoy equivocado)

Yo te recomiendo algo mas interesante:

en las 2 varibles, escribes los valores cifrados y luego pides que se ingresen los datos..
Encriptas los datos ingresados, y comparas las 4 cadenas encriptadas...
Si fueron encriptadas de la misma manera, (con el mismo key e IV), las cadenas encriptadas darán el mismo valor, y tendrá acceso..
Pero nunca sabran cual es el valor "base" de las variables para poder entrar...

El problema es que tienes que guardar la KEY y la IV en 2 variables, pero tambien corres el riesgo de que te las lean desde la ram... AUNQUE.. si las guardas en un objeto (por ejemplo).. una vez que terminas de usarlas, le das al objeto un .Dispose, y se borran los valores :)
Aunque siempre estarán escritos los valores en la clases...
Pero si tienes bien ofuscado el codigo de tu -exe, no habrá problemas...

Pablo Videla

Cita de: Skeletron en  6 Marzo 2009, 04:16 AM
Ten encuenta, que puede decompilarlo...

Yo suplico ayuda...
necesito por favor un tutorial de algun programa para compilar el codigo .net de un .exe mioo..

En fin..

Lo que te queria decir, es que no tienes que recordar el codigo... sino aprender la logica, y todo se acaba...
No te recomiendo en lo absoluto hacer eso:

string user = "erick";
            string pass = "clave";
            user = textBox1.Text;
            pass = textBox2.Text;


Te pueden "leer" desde la ram los valores de las varibles... (si es que no estoy equivocado)

Yo te recomiendo algo mas interesante:

en las 2 varibles, escribes los valores cifrados y luego pides que se ingresen los datos..
Encriptas los datos ingresados, y comparas las 4 cadenas encriptadas...
Si fueron encriptadas de la misma manera, (con el mismo key e IV), las cadenas encriptadas darán el mismo valor, y tendrá acceso..
Pero nunca sabran cual es el valor "base" de las variables para poder entrar...

El problema es que tienes que guardar la KEY y la IV en 2 variables, pero tambien corres el riesgo de que te las lean desde la ram... AUNQUE.. si las guardas en un objeto (por ejemplo).. una vez que terminas de usarlas, le das al objeto un .Dispose, y se borran los valores :)
Aunque siempre estarán escritos los valores en la clases...
Pero si tienes bien ofuscado el codigo de tu -exe, no habrá problemas...

PEcompact2 se llama el programa con el cual comprimi mi exe y no pude descompilarlo

KJD

Devido a que la plataforma .net es codigo nativo, cuando un crea el ejecutable, lo que crea es codigo intermedio, por lo que con cualquier decompilador puedes abtener el codigo fuente original del programa, y me refiero a todo el programa completo. Como decia un companiero por ahi, los demas lenguajes como c++ o delphi no se pueden decompilar, si ver el assmebler pero no el codigo con el que fue programado.

Cabe aclarar que por mas que quieras tu programa no sera 100% decompilable, ya que si no se puede obtrener el codigo fuente, puedes obtener el codigo intermrdio.

Lo mejor que puedes hacer es tratar de evitar que decompilen el codigo o hacercelo mas dificil. lo que uso yo es el Skater .NET Obfuscator , que ofusca el codigo he impide la decompilacion con herramientas como el Salamander o Reflector.

Espero que te sirva.
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

"Keyboard not Found, press F1 To Continue" WTF???

Foxy Rider

CitarDevido a que la plataforma .net es codigo nativo,
administrado o managed, como quieras ....
pero no es nativo ...
JIT Compile, te suena ?

---

Si hablamos de compresión ...
todo algoritmo de compresión tiene el de descompresión...
por eso digo, la compresión no es encripción ....

un buen debugger y al carajo todo ...

por eso el PEOR ERROR es almacenar (donde fuese) contraseñas en plain text ...
o algoritmos reversibles .... (dependiendo del caso)

cabe aclarar que en algunos casos la ofuscación arruina la performance (en el caso de la compresión es obvio, hay que tenerlo en cuenta) como en otros puede mejorarla ...

Anyways, si mal no recuerdo, con el Visual Studio viene el Dotfuscator =P
Igual, hay miles, de todos los colores y sabores, basta fijarse aquí

Alex~