Hallo,
mit diesem Code entschlüsselt ein Programm eine XML Datei. Mich würde jetzt interessieren wie das Programm den Schlüssel rausfindet.
mit diesem Code entschlüsselt ein Programm eine XML Datei. Mich würde jetzt interessieren wie das Programm den Schlüssel rausfindet.
Quellcode
- Imports Microsoft.VisualBasic.CompilerServices
- Imports System
- Imports System.Collections
- Imports System.Collections.Specialized
- Imports System.IO
- Imports System.Security.Cryptography
- Imports System.Text
- Imports System.Xml
- Namespace Plugin
- Public Class Settings
- Inherits NameValueCollection
- ' Methods
- Public Shared Function Load(ByVal name As String) As Object
- Dim salt As Byte() = Encoding.ASCII.GetBytes(Settings._key)
- Dim bytes As DeriveBytes = New Rfc2898DeriveBytes(Settings._key, salt)
- Dim managed As New RijndaelManaged
- managed.Key = bytes.GetBytes(&H20)
- managed.IV = bytes.GetBytes(&H10)
- Dim settings As New Settings
- settings.File = String.Format("settings/{0}", name)
- Dim settings2 As New XmlReaderSettings
- Dim settings3 As XmlReaderSettings = settings2
- settings3.IgnoreComments = True
- settings3.IgnoreProcessingInstructions = True
- settings3.IgnoreWhitespace = True
- settings3 = Nothing
- Try
- Using stream As FileStream = New FileStream(settings.File, FileMode.Open, FileAccess.Read, FileShare.Read)
- Using stream2 As CryptoStream = New CryptoStream(stream, managed.CreateDecryptor, CryptoStreamMode.Read)
- Using reader As XmlReader = XmlReader.Create(stream2, settings2)
- Do While reader.Read
- If (reader.NodeType = XmlNodeType.Element) Then
- Select Case reader.Name
- Case "data"
- reader.MoveToFirstAttribute
- name = reader.Value
- Exit Select
- Case "value"
- settings.Add(name, reader.ReadString)
- Exit Select
- End Select
- End If
- Loop
- reader.Close
- stream2.Close
- stream.Close
- Return settings
- End Using
- End Using
- End Using
- Catch exception1 As Exception
- ProjectData.SetProjectError(exception1)
- Dim exception As Exception = exception1
- ProjectData.ClearProjectError
- End Try
- Return settings
- End Function
- Public Sub Save()
- If (Me.Count <> 0) Then
- Console.WriteLine(Settings._key)
- Dim salt As Byte() = Encoding.ASCII.GetBytes(Settings._key)
- Dim bytes As DeriveBytes = New Rfc2898DeriveBytes(Settings._key, salt)
- Dim managed As New RijndaelManaged
- managed.Key = bytes.GetBytes(&H20)
- managed.IV = bytes.GetBytes(&H10)
- Dim settings As New XmlWriterSettings
- Dim settings2 As XmlWriterSettings = settings
- settings2.Encoding = Encoding.UTF8
- settings2.Indent = True
- settings2.IndentChars = " "
- settings2 = Nothing
- If Not Directory.Exists("Settings") Then
- Directory.CreateDirectory("Settings")
- End If
- Try
- Using stream As FileStream = New FileStream(Me.File, FileMode.Create, FileAccess.Write, FileShare.None)
- Using stream2 As CryptoStream = New CryptoStream(stream, managed.CreateEncryptor, CryptoStreamMode.Write)
- Using writer As XmlWriter = XmlWriter.Create(stream2, settings)
- writer.WriteStartDocument
- writer.WriteStartElement("CryptLoad")
- If (Me.Count > 0) Then
- Dim enumerator As IEnumerator
- Try
- enumerator = Me.Keys.GetEnumerator
- Do While enumerator.MoveNext
- Dim str As String = Conversions.ToString(enumerator.Current)
- writer.WriteStartElement("data")
- writer.WriteAttributeString("name", "", str)
- writer.WriteElementString("value", Me.Item(str))
- writer.WriteEndElement
- Loop
- Finally
- If TypeOf enumerator Is IDisposable Then
- TryCast(enumerator,IDisposable).Dispose
- End If
- End Try
- End If
- writer.WriteEndElement
- writer.WriteEndDocument
- writer.Close
- stream2.Close
- stream.Close
- End Using
- End Using
- End Using
- Catch exception1 As Exception
- ProjectData.SetProjectError(exception1)
- Dim exception As Exception = exception1
- ProjectData.ClearProjectError
- End Try
- End If
- End Sub
- ' Properties
- Public Property File As String
- Get
- Return Me._File
- End Get
- Set(ByVal value As String)
- Me._File = value
- End Set
- End Property
- ' Fields
- Private _File As String
- Private Shared _key As String = String.Format("{0}Cryptload", Conversions.ToString(Math.Abs(CInt((Environment.MachineName.GetHashCode + Environment.ProcessorCount.GetHashCode)))))
- End Class
- End Namespace
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „key“ ()