elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  cifrar Carpetas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: cifrar Carpetas  (Leído 10,031 veces)
Tomas1982

Desconectado Desconectado

Mensajes: 48



Ver Perfil
cifrar Carpetas
« en: 5 Octubre 2016, 14:06 pm »

Buenos días ante todo, Estoy tratando de realizar un programa que me organiza los ficheros por extensiones, pero quiero que a terminal este me encripte la carpeta con contraseña para que nadie tenga acceso a ella, e buscado por la red pero no logro encontrar nada que me funcione, si alguien tuviese alguna idea para lograrlo y quisiera compartirlo lo agradecería...


« Última modificación: 5 Octubre 2016, 15:09 pm por Tomas1982 » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: cifrar Carpetas
« Respuesta #1 en: 5 Octubre 2016, 14:17 pm »

Seguro que haz buscado bien? Porque me sale ésto en el 3er resultado de Google How to encrypt and decrypt a file by using Visual C#

Saludos!

PD: Mi búsqueda.


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Tomas1982

Desconectado Desconectado

Mensajes: 48



Ver Perfil
Re: cifrar Carpetas
« Respuesta #2 en: 5 Octubre 2016, 15:11 pm »

Disculpen por no aclararlo antes, pero el lenguaje que estoy utilizando es vb.net
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: cifrar Carpetas
« Respuesta #3 en: 5 Octubre 2016, 15:34 pm »

Bueno, pasar de C# a VB.NET es cuestión de sintaxis solamente.

Incluso, hay herramientas que lo hacen en forma automática.

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: cifrar Carpetas
« Respuesta #4 en: 5 Octubre 2016, 15:43 pm »

Seguro que haz buscado bien? Porque me sale ésto en el 3er resultado de Google How to encrypt and decrypt a file by using Visual C#

Saludos!

PD: Mi búsqueda.

Eso es para archivos no para carpetas... si no me equivoco


Ahora lo miro a ver...  :P



Pues lo que decía ese código es para cifrar el contenido de un archivo.

Código
  1. Imports System.IO
  2. Imports System.Security
  3. Imports System.Security.Cryptography
  4. Imports System.Runtime.InteropServices
  5. Imports System.Text
  6. Public Class Form1
  7.  
  8.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  9.  
  10.    End Sub
  11.  
  12.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  13.        ' Must be 64 bits, 8 bytes.
  14.        ' Distribute this key to the user who will decrypt this file.
  15.        Dim sSecretKey As String
  16.        sSecretKey = CSEncryptDecrypt.Class1.GenerateKey() ' Get the Key for the file to Encrypt.
  17.        Dim gch As GCHandle = GCHandle.Alloc(sSecretKey, GCHandleType.Pinned)                       ' For additional security Pin the key.
  18.        CSEncryptDecrypt.Class1.EncryptFile("C:\Prueba\Texto.txt", "C:\Prueba\TextoEncrypt.txt", sSecretKey)        ' Encrypt the file.        
  19.        CSEncryptDecrypt.Class1.ZeroMemory(gch.AddrOfPinnedObject(), CType(sSecretKey.Length * 2, IntPtr))
  20.        gch.Free()
  21.    End Sub
  22.  
  23.    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  24.        ' Must be 64 bits, 8 bytes.
  25.        ' Distribute this key to the user who will decrypt this file.
  26.        Dim sSecretKey As String
  27.        sSecretKey = CSEncryptDecrypt.Class1.GenerateKey() ' Get the Key for the file to Encrypt.
  28.        Dim gch As GCHandle = GCHandle.Alloc(sSecretKey, GCHandleType.Pinned)
  29.        CSEncryptDecrypt.Class1.DecryptFile("C:\Prueba\TextoEncrypt.txt", "C:\Prueba\Decrypt.txt", sSecretKey)    ' Decrypt the file.
  30.        CSEncryptDecrypt.Class1.ZeroMemory(gch.AddrOfPinnedObject(), CType(sSecretKey.Length * 2, IntPtr)) ' Remove the Key from memory.
  31.        gch.Free()
  32.    End Sub
  33. End Class
  34.  
  35.  
  36. Namespace CSEncryptDecrypt
  37.  
  38.    Class Class1
  39.        <DllImport("kernel32.dll")> _
  40.        Public Shared Sub ZeroMemory(ByVal addr As IntPtr, ByVal size As IntPtr)
  41.        End Sub
  42.        '  Call this function to remove the key from memory after use for security
  43.        '<System.Runtime.InteropServices.DllImport("KERNEL32.DLL", EntryPoint:="RtlZeroMemory")> _
  44.        'Public Shared Function ZeroMemory(Destination As IntPtr, Length As Integer) As Boolean
  45.        'End Function
  46.  
  47.        ' Function to Generate a 64 bits Key.
  48.        Public Shared Function GenerateKey() As String
  49.            ' Create an instance of Symetric Algorithm. Key and IV is generated automatically.
  50.            Dim desCrypto As DESCryptoServiceProvider = DirectCast(DESCryptoServiceProvider.Create(), DESCryptoServiceProvider)
  51.  
  52.            ' Use the Automatically generated key for Encryption.
  53.            Return ASCIIEncoding.ASCII.GetString(desCrypto.Key)
  54.        End Function
  55.  
  56.        Public Shared Sub EncryptFile(sInputFilename As String, sOutputFilename As String, sKey As String)
  57.            Dim fsInput As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)
  58.  
  59.            Dim fsEncrypted As New FileStream(sOutputFilename, FileMode.Create, FileAccess.Write)
  60.            Dim DES As New DESCryptoServiceProvider()
  61.            DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
  62.            DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
  63.            Dim desencrypt As ICryptoTransform = DES.CreateEncryptor()
  64.            Dim cryptostream As New CryptoStream(fsEncrypted, desencrypt, CryptoStreamMode.Write)
  65.  
  66.            Dim bytearrayinput As Byte() = New Byte(CInt(fsInput.Length - 1)) {}
  67.            fsInput.Read(bytearrayinput, 0, bytearrayinput.Length)
  68.            cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length)
  69.            cryptostream.Close()
  70.            fsInput.Close()
  71.            fsEncrypted.Close()
  72.        End Sub
  73.  
  74.        Public Shared Sub DecryptFile(sInputFilename As String, sOutputFilename As String, sKey As String)
  75.            Dim DES As New DESCryptoServiceProvider()
  76.            'A 64 bit key and IV is required for this provider.
  77.            'Set secret key For DES algorithm.
  78.            DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
  79.            'Set initialization vector.
  80.            DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
  81.  
  82.            'Create a file stream to read the encrypted file back.
  83.            Dim fsread As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)
  84.            'Create a DES decryptor from the DES instance.
  85.            Dim desdecrypt As ICryptoTransform = DES.CreateDecryptor()
  86.            'Create crypto stream set to read and do a
  87.            'DES decryption transform on incoming bytes.
  88.            Dim cryptostreamDecr As New CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read)
  89.            'Print the contents of the decrypted file.
  90.            Dim fsDecrypted As New StreamWriter(sOutputFilename)
  91.            fsDecrypted.Write(New StreamReader(cryptostreamDecr).ReadToEnd())
  92.            fsDecrypted.Flush()
  93.            fsDecrypted.Close()
  94.        End Sub
  95.  
  96.  
  97.    End Class
  98. End Namespace


Encontré este código lo he testado y funciona:
Código
  1. Imports System.Security.AccessControl
  2. Imports System.IO
  3.  
  4.  
  5. Public Class Form1
  6.  
  7.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  8.  
  9.  
  10.    End Sub
  11.  
  12.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  13.        Dim FolderBrowserDialog1 As New FolderBrowserDialog
  14.        With FolderBrowserDialog1
  15.            If .ShowDialog() = DialogResult.OK Then
  16.                TextBox1.Text = .SelectedPath
  17.            End If
  18.        End With
  19.  
  20.    End Sub
  21.  
  22.    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  23.        Dim fs As FileSystemSecurity = File.GetAccessControl(TextBox1.Text)
  24.        fs.AddAccessRule(New FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny))
  25.        File.SetAccessControl(TextBox1.Text, CType(fs, FileSecurity))
  26.    End Sub
  27.  
  28.    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
  29.        Dim fs As FileSystemSecurity = File.GetAccessControl(TextBox1.Text)
  30.        fs.RemoveAccessRule(New FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny))
  31.        File.SetAccessControl(TextBox1.Text, CType(fs, FileSecurity))
  32.    End Sub
  33. End Class

FUENTE:
http://burnignorance.com/vb-net-tricks/how-to-lock-and-unlock-a-folder-through-code-in-vb-net/

Esto bloquea el acceso a la carpeta. Lo que no se es si será accesible desde un Linxu Live por ejemplo o algún programa de arranque, o quizás desde el modo seguro.




Lo se la contraseña se me ocurre que la metas cifrada, con el código de arriba por ejemplo dentro de la misma carpeta, desde el programa cuando se quiera desbloquear, el programa desbloquearía la carpeta el tiempo justo para poder acceder a la contraseña descifrarla y compararla con la que introduce el usuario. Se ve un poco, chapuza pero es lo que se me ocurre ahora. Podrías mirarte en ingeniería inversa, a ver.



« Última modificación: 5 Octubre 2016, 16:29 pm por okik » En línea

Tomas1982

Desconectado Desconectado

Mensajes: 48



Ver Perfil
Re: cifrar Carpetas
« Respuesta #5 en: 5 Octubre 2016, 17:35 pm »

Gracias por el aporte..
« Última modificación: 5 Octubre 2016, 17:54 pm por Tomas1982 » En línea

Tomas1982

Desconectado Desconectado

Mensajes: 48



Ver Perfil
Re: cifrar Carpetas
« Respuesta #6 en: 5 Octubre 2016, 18:56 pm »

El código esta muy bueno, pero cuando trato de proteger la carpeta ubicada en una memoria, no me funciona... 
En línea

okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: cifrar Carpetas
« Respuesta #7 en: 5 Octubre 2016, 19:43 pm »

El código esta muy bueno, pero cuando trato de proteger la carpeta ubicada en una memoria, no me funciona...  

Ejecuta como administrador

Imagino que lo sabes pero por si acaso te lo comento.

Para hacer que el programa se ejecute como administrador por defecto. Vas a propiedades del proyecto y clicas en Ver configuración de Windows.

se te abrirá el App.manifest y verás un código XML:
Donde pone
Código
  1. <requestedExecutionLevel level="asInvoker" uiAccess="false" />

quitas asInvoker y pones requireAdministrator

te quedará así:
Código
  1. <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

Guarda y cuando inicies el programa dentro del entorno de programación (f5) Visual studio te preguntará si deseas reiniciar con nuevas credenciales, le dices que sí.  y ahora VS iniciará el programa como administrador, además que el programa quedará compilado con el nuevo manifiesto y cuando lo inicies se iniciará con privilegios de administrador.

Ahora aunque la carpeta esté abierta se podrá cambiar el atributo.





« Última modificación: 5 Octubre 2016, 19:51 pm por okik » En línea

Tomas1982

Desconectado Desconectado

Mensajes: 48



Ver Perfil
Re: cifrar Carpetas
« Respuesta #8 en: 5 Octubre 2016, 21:19 pm »

Mi hermano muy bueno el comentario pero ya lo había probado  y no me resulto, y la idea es poder mover el resultado protegido para cualquier maquina y que no puedan ver el contenido sin mi permiso. Saludos  
« Última modificación: 5 Octubre 2016, 21:21 pm por Tomas1982 » En línea

okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: cifrar Carpetas
« Respuesta #9 en: 6 Octubre 2016, 11:41 am »

@Tomas1982  pues tienes lo razón he bloqueado una carpeta en un pendrive y en otro PC con misma versión de SO y se abre sin problemas.

Cuando dijiste "memoria" creía que te referías que la carpeta estaba en uso, en memoria. En cuyo caso se solucionaba ejecutando como administrador.

Pues se un truquillo, es bastante malo, pero por lo menos un usuario novato no sabrá como abrir la carpeta, a no ser que busque o se informe de como.

Solo conozco una manera "portable" de mantener la carpeta protegida y es usando un archivo Desktop.ini en el interior de la carpeta.

Lo editas con esto:

Código:
[.ShellClassInfo]
CLSID={b8cdcb65-b1bf-4b42-9428-1dfdb7ee92af}

guardas y luego la carpeta la tienes que cambiar el atributo a System. Es decir a carpeta del sistema. Puedes usar API usando SetFileAttributes  y  la constante Const FILE_ATTRIBUTE_SYSTEM = &H4 y para quitarle el atributo FILE_ATTRIBUTE_NORMAL


con Net sería:
Código:
        Dim Attributes As FileAttribute = FileAttribute.System
        FileSystem.SetAttr(strDirectorio, Attributes)

Pero ya ves lo fácil que se puede quitar el atributo. Incluso se puede con la consola y además será accesible desde cualquier sistema que no sea windows.

Lo bueno es que sería portable.

De haber una forma de hacer lo que pides, que yo también estuve buscando hace tiempo, debe ser cambiando el atributo de la carpeta  como hace SetFileAttributes.

Un día lo conseguí, pero no se como lo hice. Hice tantas tonterías que no se que es lo que hizo que una carpeta fuera completamente inaccesible incluso fuera de Windows, no había manera. Pero hice tantos cambios y tantas tonterías que no se que fue lo que cambió la carpeta a ese estado. O sea que poderse se puede.





En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C#] cifrar/descifrar en AES
.NET (C#, VB.NET, ASP)
Mace Windu 4 18,241 Último mensaje 20 Diciembre 2010, 04:56 am
por [D4N93R]
Cifrar
Programación Visual Basic
Archreg 8 4,215 Último mensaje 8 Enero 2011, 14:41 pm
por Archreg
cifrar bat
Scripting
ELVJop 5 10,104 Último mensaje 1 Mayo 2012, 16:43 pm
por ELVJop
¿Cómo mostrar carpetas y sub carpetas en listbox?
.NET (C#, VB.NET, ASP)
Juancho25 0 2,095 Último mensaje 25 Abril 2013, 20:55 pm
por Juancho25
¿cifrar?
.NET (C#, VB.NET, ASP)
CoolTesting 6 3,711 Último mensaje 11 Marzo 2014, 15:03 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines