[C#] Bloquear acceso a un archivo.

Iniciado por TheSamux, 20 Diciembre 2014, 12:13 PM

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

TheSamux

Hola. Muy buenas.

Necesitaria saber como bloquear el acceso a un archivo, estoy trabajando en una aplicacion de seguridad, y lo unico que me falta saber es como poner contraseña a un .exe con C#. He visto de hacerlo con un FileStreamLock, pero no se como ponerlo en practica para seleccionarlo desde un button y un .exe.

Un saludo!
Hacker no significa ciberdelincuente

Eleкtro

#1
Establecer una contraseña para impedir la ejecución de un archivo, y bloquear el acceso a un archivo son dos cosas muy distintas y cada una implca un enfoque muy diferente, ya que windows security no se maneja con Passwords sino con entidades de seguridad, así que deberías aclarar bien lo que pretendes hacer para entendernos, ¿establecer una contraseña a un exe, o eliminar los permisos de lectura para un exe?.

El método FileStream.Lock, como su nombre indica solo sirve para prevenir que otros procesos lean o escriban en el Stream que previamente hayas abierto para su lectura/escritura, este efecto se desvanece cuando temina la ejecución del proceso que utilizó dicho método 'Lock' (incluso aunque mates la aplicación de forma forzosa, ese bloqueo no persistirá).

Su uso es muy sencillo, pero si tu intención es proteger un archivo con contraseña entonces obviamente esta no es la manera:
Código (vbnet) [Seleccionar]
Dim fs As New FileStream("file.exe", FileMode.Open, FileAccess.ReadWrite, FileShare.None)
fs.Lock(0, fs.Length)


Cita de: http://msdn.microsoft.com/en-us/library/system.io.filestream.lock%28v=vs.110%29.aspxPrevents other processes from reading from or writing to the FileStream.

Para proteger un archivo con contraseña, puedes cifrar el archivo original, y a partir de este punto puedes dejar volar la imaginación, ya que hay varias maneras de implementar el decrypter, por ejemplo registrar un servicio+shellExtension que maneje la cifrado/desencriptación, crear una aplicación aparte dedicada a descifrar archivos, o adjuntar el propio decrypter en el Stream del archivo que previamente haya sido cifrado, dando así como resultado un archivo cifrado y auto-desencriptable por si mismo, puedes ver un ejemplo de esto último aquí: http://www.codeproject.com/Articles/696528/Csharp-Password-Protected-File (debes especificar correctamente el tamaño que se debe omitir al escribir el stream del archivo descifrado)

Saludos