Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: TheSamux en 20 Diciembre 2014, 12:13 pm



Título: [C#] Bloquear acceso a un archivo.
Publicado por: TheSamux en 20 Diciembre 2014, 12:13 pm
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!


Título: Re: [C#] Bloquear acceso a un archivo.
Publicado por: Eleкtro en 20 Diciembre 2014, 19:26 pm
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
  1. Dim fs As New FileStream("file.exe", FileMode.Open, FileAccess.ReadWrite, FileShare.None)
  2. fs.Lock(0, fs.Length)

Cita de: http://msdn.microsoft.com/en-us/library/system.io.filestream.lock%28v=vs.110%29.aspx
Prevents 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