Ayuda a leer y modificar Bytes de un Archivo

Iniciado por adan-2994, 3 Agosto 2011, 21:26 PM

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

adan-2994

Saludos

He estado practikando algo cn VB NET y logre modificar los bytes de un archivo por los que yo quise
(&HFF a todos los bytes del archivo, despues lo elimino http://www.elguille.info/colabora/2008/lobosoft_Borrado_Seguro.htm)

bueno pues con ese metodo logro borrar un archivo de manera segura, sobreEscribiendo el valor que tiene por otro y despues eliminandolo.

Lo que yo busko es cifrar el archivo
Por ejemplo
Obtener los  Bytes de el archivo ciframe.txt
Luego a esos agregarle o editarle algunos para que de esa manera el archivo quede distinto
Pero despues (mediante el programa mismo) permitir volver a leerloen su estado original

Por donde puedo empezar
...ella tiene flow, tremendo ranqueo, tu la vez pasar con su nebuleo (Blam Blam blin blin)

Keyen Night

#1
Al principio parece del tema parece que lo que quieres hacer es una utilidad para borrado seguro de datos pero luego me confundes con ese "Por Ejemplo"

"Obtener los  Bytes de el archivo ciframe.txt
Luego a esos agregarle o editarle algunos para que de esa manera el archivo quede distinto
Pero despues (mediante el programa mismo) permitir volver a leerloen su estado original"


Si estás borrando los datos de forma segura se supone que es para no recuperarlos jamás entonces por qué dices?:

"Pero despues (mediante el programa mismo) permitir volver a leerloen su estado original"
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

adan-2994

Cita de: Keyen Night en  4 Agosto 2011, 05:02 AM
Si estás borrando los datos de forma seguro se supone que es para no recuperar los jamás entonces por que dices:

"Pero despues (mediante el programa mismo) permitir volver a leerloen su estado original"

si , mira estaba haciendo la aplikacion para un borrado seguro (lo cual ya lo hize),
pero luego pense que si pudiera cambiar los bytes de un archivo (sabiendo el orden de estos)
Podria cifrarlo
http://en.pudn.com/downloads82/sourcecode/windows/dotnet/detail316414_en.html

bueno pero para no confundirlos mas, lo que quiero lograr es leer los bytes del archivo uno por uno  (hasta hora se obtener la cantidad de bytes por FileInfo)


...ella tiene flow, tremendo ranqueo, tu la vez pasar con su nebuleo (Blam Blam blin blin)

Keyen Night

Entiendo usa Rijndael, AES o cualquiera de estos algorítmos, las clases ya están hechas en System.Security.Cryptography y todos funcionan igual, la forma de leer los archivos byte a byte o en array de byte() es System.IO.Stream Aquí te traigo un ejemplo de una función de la Clase Rijndael que hice cuando la necesite:

Este es un ejemplo muy básico tendrás que editarlo un poco porque yo me salte el vector de inicialización usando el MD5 de la llave y otras configuraciones las deje por defecto, te coloco el código como ejemplo porque lo tengo a la mano pero al menos tomate la molestía de ver como funciona :silbar:

Código (vb.net) [Seleccionar]
#Region " Algoritmo Rijndael "

        Public Function MD5(ByVal InputStr As String) As String
            Dim MD5_Hasher As Cryptography.MD5 = Cryptography.MD5.Create()

            Dim [DATA] As Byte() = MD5_Hasher.ComputeHash(Encoding.Default.GetBytes(InputStr))
            Dim StrBuild As New StringBuilder()

            For x As Integer = 0 To ([DATA].Length - 1)
                StrBuild.Append([DATA](x).ToString("x2"))
            Next

            Return StrBuild.ToString()
        End Function

        Public Enum RijndaelAction
            Crypt
            Decrypt
        End Enum

        Public Function Rijndael(ByVal [Data] As Byte(), ByVal Key As Byte(), ByVal Action As RijndaelAction) As Byte()
            Rijndael = New Byte() {}

                Dim R As [Rijndael] = Cryptography.Rijndael.Create

                With Encoding.Default

                    R.Key = Key
                    R.IV = .GetBytes(MD5(.GetString(R.Key)).Substring(0, 16))

                    Dim ResultStream As New MemoryStream

                    Dim CryptStream As CryptoStream = Nothing

                    Select Case Action
                        Case RijndaelAction.Crypt
                            CryptStream = New CryptoStream(ResultStream, R.CreateEncryptor, CryptoStreamMode.Write)
                        Case RijndaelAction.Decrypt
                            CryptStream = New CryptoStream(ResultStream, R.CreateDecryptor, CryptoStreamMode.Write)
                    End Select

                    CryptStream.Write([Data], 0, [Data].Length)

                    CryptStream.FlushFinalBlock()

                    Return ResultStream.ToArray

                End With

        End Function

#End Region
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

adan-2994

Mucissimas gracias por la molestia que te tomaste en ayudarme
el codigo lo estoy estudiando.
...ella tiene flow, tremendo ranqueo, tu la vez pasar con su nebuleo (Blam Blam blin blin)