Gracias de antemano a quienes me ayuden con este gran problema que tengo, primero les contare que es lo que necesito hacer, me dieron unos archivos cifrados que me serviran para unos servidores de juegos, los archivos son pdf unicos, son guias, pero solo se pueden leer en un software y este me los coloca como una imagen, para que los pueda ver pero solo con ese software.
Las guias son bastante completas y serviran para muchas cosas mas en servidores de juegos propios, antes aclaro, el software es de mi propiedad ya que era usado en los servidores, pero no fui yo quien lo diseño sino un amigo, quien fue asesinado hace 2 meses y lamentablemente no me dejo copia de los proyectos, en otro foro explique esto y aun asi me banearon la cuenta y bloquearon todo espero que aqui no sea asi, con net reflector decodifique el codigo de la aplicacion exe y me dio algunos codigos clave, ahi verifique que los archivos estan cifrados, por lo tanto me di a la tarea de tratar de entender el codigo, pero al final tengo dos errores, que marcare a continuacion junto con mi codigo
clase1
Código:
Código:
Public Class descifrar
Public Shared Function DecryptFile(ByVal inFs As Security.Cryptography.CryptoStream, ByVal RijndaelPrivateKey As Security.Cryptography.Rijndael) As Byte()
Dim buffer As Byte() = New Byte(1 - 1) {}
Using managed As Security.Cryptography.Rijndael = New Security.Cryptography.RijndaelManaged()
managed.KeySize = &H100
managed.BlockSize() = &H80
managed.Mode = Security.Cryptography.CipherMode.CBC
Dim buffer2 As Byte() = New Byte(4 - 1) {}
Dim buffer3 As Byte() = New Byte(4 - 1) {}
inFs.Seek(0, IO.SeekOrigin.Begin)
inFs.Seek(0, IO.SeekOrigin.Begin)
inFs.Read(buffer2, 0, 3)
inFs.Seek(4, IO.SeekOrigin.Begin)
inFs.Read(buffer3, 0, 3)
Dim count As Integer = BitConverter.ToInt32(buffer2, 0)
Dim num2 As Integer = BitConverter.ToInt32(buffer3, 0)
Dim num3 As Integer = ((count + num2) + 8)
Dim num4 As Integer = (CInt(inFs.Length) - num3)
Dim buffer4 As Byte() = New Byte(count - 1) {}
Dim buffer5 As Byte() = New Byte(num2 - 1) {}
inFs.Seek(8, IO.SeekOrigin.Begin)
inFs.Read(buffer4, 0, count)
inFs.Seek(CLng((8 + count)), IO.SeekOrigin.Begin)
inFs.Read(buffer5, 0, num2)
Dim rgbKey As Byte() = rsaPrivatekey.decryptor(buffer4, False)
[color=red]Using transform As Security.Cryptography.ICryptoTransform = managed.CreateDecryptor(rgbKey, buffer5)[/color]
Using stream As IO.MemoryStream = New IO.MemoryStream
Dim num5 As Integer = 0
Dim num6 As Integer = 0
Dim num7 As Integer = (managed.BlockSize / 8)
Dim buffer7 As Byte() = New Byte(num7 - 1) {}
inFs.Seek(CLng(num3), IO.SeekOrigin.Begin)
Using stream2 As Security.Cryptography.CryptoStream = New Security.Cryptography.CryptoStream(stream, transform, Security.Cryptography.CryptoStreamMode.Write)
Do
num5 = inFs.Read(buffer7, 0, num7)
num6 = (num6 + num5)
stream2.Write(buffer7, 0, num5)
Loop While (num5 > 0)
stream2.FlushFinalBlock()
stream2.Close()
End Using
Return stream.ToArray
End Using
End Using
End Using
End Function
End Class
Public Shared Function DecryptFile(ByVal inFs As Security.Cryptography.CryptoStream, ByVal RijndaelPrivateKey As Security.Cryptography.Rijndael) As Byte()
Dim buffer As Byte() = New Byte(1 - 1) {}
Using managed As Security.Cryptography.Rijndael = New Security.Cryptography.RijndaelManaged()
managed.KeySize = &H100
managed.BlockSize() = &H80
managed.Mode = Security.Cryptography.CipherMode.CBC
Dim buffer2 As Byte() = New Byte(4 - 1) {}
Dim buffer3 As Byte() = New Byte(4 - 1) {}
inFs.Seek(0, IO.SeekOrigin.Begin)
inFs.Seek(0, IO.SeekOrigin.Begin)
inFs.Read(buffer2, 0, 3)
inFs.Seek(4, IO.SeekOrigin.Begin)
inFs.Read(buffer3, 0, 3)
Dim count As Integer = BitConverter.ToInt32(buffer2, 0)
Dim num2 As Integer = BitConverter.ToInt32(buffer3, 0)
Dim num3 As Integer = ((count + num2) + 8)
Dim num4 As Integer = (CInt(inFs.Length) - num3)
Dim buffer4 As Byte() = New Byte(count - 1) {}
Dim buffer5 As Byte() = New Byte(num2 - 1) {}
inFs.Seek(8, IO.SeekOrigin.Begin)
inFs.Read(buffer4, 0, count)
inFs.Seek(CLng((8 + count)), IO.SeekOrigin.Begin)
inFs.Read(buffer5, 0, num2)
Dim rgbKey As Byte() = rsaPrivatekey.decryptor(buffer4, False)
[color=red]Using transform As Security.Cryptography.ICryptoTransform = managed.CreateDecryptor(rgbKey, buffer5)[/color]
Using stream As IO.MemoryStream = New IO.MemoryStream
Dim num5 As Integer = 0
Dim num6 As Integer = 0
Dim num7 As Integer = (managed.BlockSize / 8)
Dim buffer7 As Byte() = New Byte(num7 - 1) {}
inFs.Seek(CLng(num3), IO.SeekOrigin.Begin)
Using stream2 As Security.Cryptography.CryptoStream = New Security.Cryptography.CryptoStream(stream, transform, Security.Cryptography.CryptoStreamMode.Write)
Do
num5 = inFs.Read(buffer7, 0, num7)
num6 = (num6 + num5)
stream2.Write(buffer7, 0, num5)
Loop While (num5 > 0)
stream2.FlushFinalBlock()
stream2.Close()
End Using
Return stream.ToArray
End Using
End Using
End Using
End Function
End Class
Dim rgbKey As Byte() = rsaPrivatekey.decryptor(buffer4, False)
El error que me da es el siguiente No se ha declarado el nombre 'rsaPrivatekey'. entiendo que el rsa es otra forma de decodificar pero tratando de resolver el codigo me he dado cuenta que por el metodo rsa no lo podre resolver y por eso lo hice con rijndael.
Boton que ejecutara la desencriptacion del archivo seleccionado
Código:
Código:
Imports System.Diagnostics
Imports BitMiracle.Docotic.Pdf
Public Class frmprincipal
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim path As String = "c:\prueba.epp"
Dim document As New PdfDocument
Using reader As IO.StreamReader = New IO.StreamReader(path)
[color=red] Dim buffer As Byte() = descifrar.DecryptFile(reader.BaseStream, me.cp2)[/color]
document.Open(buffer)
End Using
Using stream As IO.MemoryStream = New IO.MemoryStream
document.Images.Item(0).Save(stream)
Me.imgAutoImage.Image = Image.FromStream(stream)
Me.imgAutoImage.Update()
End Using
document.Dispose()
End Sub
Private Sub frmprincipal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
Imports BitMiracle.Docotic.Pdf
Public Class frmprincipal
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim path As String = "c:\prueba.epp"
Dim document As New PdfDocument
Using reader As IO.StreamReader = New IO.StreamReader(path)
[color=red] Dim buffer As Byte() = descifrar.DecryptFile(reader.BaseStream, me.cp2)[/color]
document.Open(buffer)
End Using
Using stream As IO.MemoryStream = New IO.MemoryStream
document.Images.Item(0).Save(stream)
Me.imgAutoImage.Image = Image.FromStream(stream)
Me.imgAutoImage.Update()
End Using
document.Dispose()
End Sub
Private Sub frmprincipal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
Dim buffer As Byte() = descifrar.DecryptFile(reader.BaseStream, me.cp2)
Aqui el error es que dice la linea, Me.cp2 cuando busco que es el objeto en el formulario que decodifique Me.cp2 me topo que lo unico que tengo es lo siguiente Private cp2 As RSACryptoServiceProvider.
si de algo sirve, el net reflector lanza el codigo de esta forma decodificado
Código:
Código:
NET REFLECTOR
Private Sub tvImagenes_AfterSelect(ByVal sender As Object, ByVal e As TreeViewEventArgs)
If Not Me.tvImagenes.SelectedNode.Tag.ToString.StartsWith("cejilla:") Then
Dim path As String = Me.tvImagenes.SelectedNode.Tag.ToString
LicenseManager.AddLicenseData("768EE-1R9O0-VHMLX-5Q57C-1Y0MG")
Dim document As New PdfDocument
Using reader As StreamReader = New StreamReader(path)
[color=red] Dim buffer As Byte() = VisorDocumentos.DecryptFile(reader.BaseStream, Me.cp2)[/color]
document.Open(buffer)
End Using
Using stream As MemoryStream = New MemoryStream
document.Images.Item(0).Save(stream)
Me.imgAutoImage.Image = Image.FromStream(stream)
Me.imgAutoImage.Update
End Using
document.Dispose
End If
End Sub
Private Shared Function DecryptFile(ByVal inFs As Stream, ByVal rsaPrivateKey As RSACryptoServiceProvider) As Byte()
Dim buffer As Byte() = New Byte(1 - 1) {}
Using managed As AesManaged = New AesManaged
managed.KeySize = &H100
managed.BlockSize = &H80
managed.Mode = CipherMode.CBC
Dim buffer2 As Byte() = New Byte(4 - 1) {}
Dim buffer3 As Byte() = New Byte(4 - 1) {}
inFs.Seek(0, SeekOrigin.Begin)
inFs.Seek(0, SeekOrigin.Begin)
inFs.Read(buffer2, 0, 3)
inFs.Seek(4, SeekOrigin.Begin)
inFs.Read(buffer3, 0, 3)
Dim count As Integer = BitConverter.ToInt32(buffer2, 0)
Dim num2 As Integer = BitConverter.ToInt32(buffer3, 0)
Dim num3 As Integer = ((count + num2) + 8)
Dim num4 As Integer = (CInt(inFs.Length) - num3)
Dim buffer4 As Byte() = New Byte(count - 1) {}
Dim buffer5 As Byte() = New Byte(num2 - 1) {}
inFs.Seek(8, SeekOrigin.Begin)
inFs.Read(buffer4, 0, count)
inFs.Seek(CLng((8 + count)), SeekOrigin.Begin)
inFs.Read(buffer5, 0, num2)
[color=red]Dim rgbKey As Byte() = rsaPrivateKey.Decrypt(buffer4, False)[/color]
Using transform As ICryptoTransform = managed.CreateDecryptor(rgbKey, buffer5)
Using stream As MemoryStream = New MemoryStream
Dim num5 As Integer = 0
Dim num6 As Integer = 0
Dim num7 As Integer = (managed.BlockSize / 8)
Dim buffer7 As Byte() = New Byte(num7 - 1) {}
inFs.Seek(CLng(num3), SeekOrigin.Begin)
Using stream2 As CryptoStream = New CryptoStream(stream, transform, CryptoStreamMode.Write)
Do
num5 = inFs.Read(buffer7, 0, num7)
num6 = (num6 + num5)
stream2.Write(buffer7, 0, num5)
Loop While (num5 > 0)
stream2.FlushFinalBlock
stream2.Close
End Using
Return stream.ToArray
End Using
End Using
End Using
End Function
Private Sub tvImagenes_AfterSelect(ByVal sender As Object, ByVal e As TreeViewEventArgs)
If Not Me.tvImagenes.SelectedNode.Tag.ToString.StartsWith("cejilla:") Then
Dim path As String = Me.tvImagenes.SelectedNode.Tag.ToString
LicenseManager.AddLicenseData("768EE-1R9O0-VHMLX-5Q57C-1Y0MG")
Dim document As New PdfDocument
Using reader As StreamReader = New StreamReader(path)
[color=red] Dim buffer As Byte() = VisorDocumentos.DecryptFile(reader.BaseStream, Me.cp2)[/color]
document.Open(buffer)
End Using
Using stream As MemoryStream = New MemoryStream
document.Images.Item(0).Save(stream)
Me.imgAutoImage.Image = Image.FromStream(stream)
Me.imgAutoImage.Update
End Using
document.Dispose
End If
End Sub
Private Shared Function DecryptFile(ByVal inFs As Stream, ByVal rsaPrivateKey As RSACryptoServiceProvider) As Byte()
Dim buffer As Byte() = New Byte(1 - 1) {}
Using managed As AesManaged = New AesManaged
managed.KeySize = &H100
managed.BlockSize = &H80
managed.Mode = CipherMode.CBC
Dim buffer2 As Byte() = New Byte(4 - 1) {}
Dim buffer3 As Byte() = New Byte(4 - 1) {}
inFs.Seek(0, SeekOrigin.Begin)
inFs.Seek(0, SeekOrigin.Begin)
inFs.Read(buffer2, 0, 3)
inFs.Seek(4, SeekOrigin.Begin)
inFs.Read(buffer3, 0, 3)
Dim count As Integer = BitConverter.ToInt32(buffer2, 0)
Dim num2 As Integer = BitConverter.ToInt32(buffer3, 0)
Dim num3 As Integer = ((count + num2) + 8)
Dim num4 As Integer = (CInt(inFs.Length) - num3)
Dim buffer4 As Byte() = New Byte(count - 1) {}
Dim buffer5 As Byte() = New Byte(num2 - 1) {}
inFs.Seek(8, SeekOrigin.Begin)
inFs.Read(buffer4, 0, count)
inFs.Seek(CLng((8 + count)), SeekOrigin.Begin)
inFs.Read(buffer5, 0, num2)
[color=red]Dim rgbKey As Byte() = rsaPrivateKey.Decrypt(buffer4, False)[/color]
Using transform As ICryptoTransform = managed.CreateDecryptor(rgbKey, buffer5)
Using stream As MemoryStream = New MemoryStream
Dim num5 As Integer = 0
Dim num6 As Integer = 0
Dim num7 As Integer = (managed.BlockSize / 8)
Dim buffer7 As Byte() = New Byte(num7 - 1) {}
inFs.Seek(CLng(num3), SeekOrigin.Begin)
Using stream2 As CryptoStream = New CryptoStream(stream, transform, CryptoStreamMode.Write)
Do
num5 = inFs.Read(buffer7, 0, num7)
num6 = (num6 + num5)
stream2.Write(buffer7, 0, num5)
Loop While (num5 > 0)
stream2.FlushFinalBlock
stream2.Close
End Using
Return stream.ToArray
End Using
End Using
End Using
End Function
Agradezco a todo aquel que pueda darme una mano y orientarme un poco con esto ya que de momento me urge resolverlo, tengo dias investigando y aprendiendo pero no logro resolver este problema, gracias si alguien me orienta, quiza no me regale la solucion, pero con que me explique que es lo que esta mal para que yo pueda analizar y obtener una solucion lo agradecere mucho.