Bloquear programa en c# con password

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

0 Miembros y 1 Visitante están viendo este tema.

Noskcire

hey muy interesante eso de que me pueden ver los datos que almaceno en las variables
pero el caso esta en como hago eso de las INCRIPTACIONES , varias veces he escuchado de eso ,pero nunca lo he hecho y ya que ustedes lo comentan ahora tengo miedo de sacar mi aplicacion de esa manera , osea sin la INCRIPTACION de la clave de usuario.

Pues como lo haria en verdad no tengo ni idea, solo se que si no lo hago estaria en peligro por algun malisioso..

bueno espero su resp.
Las Intenciones Secretas son como aguas profundas
per quien sabe descubrilas , es inteligente...

Foxy Rider

Buena decisión, un buen paso para hacer una aplicación un poco más segura, o lammerproof ....
mirá, es cifrado, y .... depende ...

te dejo lo mismo que 12 posts atrás : https://foro.elhacker.net/net/como_elimino_de_la_ram_un_valor-t246895.0.html

cualquier duda, postea o acudí a la msdn ;P

Alex~

Meta

Si dejan el pasword y login tal como está. Se puede ver con el www.winhex.com
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

KJD

Cita de: The Queen Of Ice en  6 Marzo 2009, 23:07 PM
CitarDevido a que la plataforma .net es codigo nativo,
administrado o managed, como quieras ....
pero no es nativo ...
JIT Compile, te suena ?

Si perdon, tienes razon no se poruqe puse nativo  :silbar:

Si quieres lo que puedes hacer para protegerlo con serial, es o bien, generarlo en base a la placa Mother, o Hard Disk, obteniendo los hardware id, y de ahi hacer algun algoritmo simple que genere el seria como por ejemplo md5 o algun otro.
Pero como Alex, no almacenes el serial en texto plano, osea string, sino en memoria o tambien podria ser en un array de strings.
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

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

Amerikano|Cls

Cita de: BadDevil en 25 Febrero 2009, 18:19 PM
Una duda compañeros , necesito negar el acceso al programa atravez de una contraseña , sin usuario ni nada , es como una palabra clave , onda por ejemplo , si la password es hola , que se carge el form , si no , entonces que desactive todos los botones y los textbox , no puedo poner codigo , pero si me orientan un poquito quedaria feliz , gracias de ante mano  ;D


Código (csharp) [Seleccionar]

private void Form1_Load(object sender, EventArgs e)
        {
            String palabra = "hola";
            if (palabra == "hola")
            {
                MessageBox.Show("Programa cargado correctamente");
            }
            else
            {
                MessageBox.Show("Progama bloqueado Ingrese password");
                Application.Exit();
            }
        }



algo así estoy haciendo , es una prueba pero estoy trabajando en ello , diganme ideas y las leo gracias :D
---

hay una forma que se abra un textbox para ingresar la clave?

---

se me ocurrio otra idea :D , luego les cuento  :P
lo hice , gracias por su lectura  ;D

---

a todo esto me pueden crackear el programa para ver la cadena de password , no esta protegida ni nada  :xD

No es por nada pero en este ejemplo que pusistes la condicion siempre se realizara, ya que declaras una variable palabra a la que le asignas "hola" y luego la comparas con "hola", de manera que siempre sera ejecutada la instrucción.

Como te han dicho usa protecciones como cifrado, obfuscacion de code y demas  :-*, no quiero decir con esto que no se pueda de esta forma, pero deberia ser algo así.

var palabra=campo.ObtenerTexto()

si(palabra="clave")
       imprimir "correcto"
else
       imprimir "incorrecto"


Salu2




Mi blog:
http://amerikanocls.blogspot.com

Meta

#35
Puedes guardar el password en fomato binario.

Código (csharp) [Seleccionar]

short agno = 2005;
decimal ingresos = 46762993;
bool anotado = true;
StreamWriter Texto = new StreamWriter("Archivo.txt");
Texto.Write(agno);
Texto.Write(ingresos);
Texto.Write(anotado);
Texto.Close();
FileStream Archivo = new FileStream("Archivo.txt", FileMode.Append);
BinaryWriter Binario = new BinaryWriter(Archivo);
Binario.Write(agno);
Binario.Write(ingresos);
Binario.Write(anotado);
Archivo.Close();





Código (csharp) [Seleccionar]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Alarma_01
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        short agno = 2005;
        decimal ingresos = 46762993;
        bool anotado = true;

        private void Form1_Load(object sender, EventArgs e)
        {
            String palabra = "hrtola";
            if (palabra == "hola")
            {
                StreamWriter Texto = new StreamWriter("Archivo.txt");
                Texto.Write(agno);
                Texto.Write(ingresos);
                Texto.Write(anotado);
                Texto.Close();
                MessageBox.Show("Programa cargado correctamente", "Información:",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                FileStream Archivo = new FileStream("Archivo.txt", FileMode.Append);
                BinaryWriter Binario = new BinaryWriter(Archivo);
                Binario.Write(agno);
                Binario.Write(ingresos);
                Binario.Write(anotado);
                Archivo.Close();
                MessageBox.Show("Progama bloqueado Ingrese password", "Para:",
                    MessageBoxButtons.OK, MessageBoxIcon.Stop);
                Application.Exit();
            }
        }
    }
}
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Noskcire

 ;-)Muy bien , pero es que quiero hacerlo conectado a una tabla base de datos SQL que le pondré por nombre: Usuarios y esta tendrá los campos de  Nombre y Contraseña..

Con la logica y el codigo antes tratado solo me faltaria incriptar el nombre de usuario y la contraseña ..por favor disculpeme pero necesito la ayuda y por eso digo que no seeeeeeeeeeeeee hacerlooooooo  :huh:

Crear la tabla no tendria problema pero hacer lo anterior que dije si y que esa tabla sea evaluada por el nombre de usuario y la clave que se iserten en los textbox : Nombre , Clave
Las Intenciones Secretas son como aguas profundas
per quien sabe descubrilas , es inteligente...

Pablo Videla

Cita de: Noskcire en 23 Marzo 2009, 21:48 PM
;-)Muy bien , pero es que quiero hacerlo conectado a una tabla base de datos SQL que le pondré por nombre: Usuarios y esta tendrá los campos de  Nombre y Contraseña..

Con la logica y el codigo antes tratado solo me faltaria incriptar el nombre de usuario y la contraseña ..por favor disculpeme pero necesito la ayuda y por eso digo que no seeeeeeeeeeeeee hacerlooooooo  :huh:

Crear la tabla no tendria problema pero hacer lo anterior que dije si y que esa tabla sea evaluada por el nombre de usuario y la clave que se iserten en los textbox : Nombre , Clave

Tendrias que cifrar con md5 por que la mayoria de las veces la encriptacion de las contraseñas en la tabla estan en md5...yo no tengo conocimiento de ello en programacion ...

Foxy Rider

o con SHA512, por lo que me comentaron, está mejor que MD5 (que es vulnerable a colisiones) ...
pero alguien que sepa más de criptografía te sabrá decir (además, valga la diferencia de 128 a 512 bits ...)

El usuario no se suele cifrar, ya que necesitás mostrar algo estilo "Hola [Usuario]" ("Hola Pepe") y como estos algoritmos son irreversibles, entonces el usuario se pierde forever and ever ....

el asunto es tan simple como cifrar lo que se ingresó y guardarlo en una variable, hacés un "SELECT Usuario,Pass FROM LaTablaDondeEsteEsto WHERE Usuario='LoqueElusuarioIngresoy a lo que previamente filtraste de comillas y demás' "

en el caso de la password "Prueba" sería (en SHA-512) el digest:

Citar0ba7c1f753b174aa04d3aea086c8fd27a99fc16da1705bbde09c1cb3cba565c1a1cdb93afb06d7b147eb0203440a0bfcf2f943834a2bc3f41059a8fbd44dba92

que estaría guardado en la tabla, si el usuario existe, obtenés el registro con el usuario tal que se haya ingresado, junto con este digest , lo comparás con la variable y si se ingresó correctamente la password, va a concordar el digest ;P

Fijate, .NET tiene la clase SHA512 -> http://msdn.microsoft.com/en-us/library/system.security.cryptography.sha512.aspx

Alex~