wie bekommt das Programm den Schlüssel?

  • Allgemein

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Agent.

    wie bekommt das Programm den Schlüssel?

    Hallo,
    mit diesem Code entschlüsselt ein Programm eine XML Datei. Mich würde jetzt interessieren wie das Programm den Schlüssel rausfindet.

    Quellcode

    1. Imports Microsoft.VisualBasic.CompilerServices
    2. Imports System
    3. Imports System.Collections
    4. Imports System.Collections.Specialized
    5. Imports System.IO
    6. Imports System.Security.Cryptography
    7. Imports System.Text
    8. Imports System.Xml
    9. Namespace Plugin
    10. Public Class Settings
    11. Inherits NameValueCollection
    12. ' Methods
    13. Public Shared Function Load(ByVal name As String) As Object
    14. Dim salt As Byte() = Encoding.ASCII.GetBytes(Settings._key)
    15. Dim bytes As DeriveBytes = New Rfc2898DeriveBytes(Settings._key, salt)
    16. Dim managed As New RijndaelManaged
    17. managed.Key = bytes.GetBytes(&H20)
    18. managed.IV = bytes.GetBytes(&H10)
    19. Dim settings As New Settings
    20. settings.File = String.Format("settings/{0}", name)
    21. Dim settings2 As New XmlReaderSettings
    22. Dim settings3 As XmlReaderSettings = settings2
    23. settings3.IgnoreComments = True
    24. settings3.IgnoreProcessingInstructions = True
    25. settings3.IgnoreWhitespace = True
    26. settings3 = Nothing
    27. Try
    28. Using stream As FileStream = New FileStream(settings.File, FileMode.Open, FileAccess.Read, FileShare.Read)
    29. Using stream2 As CryptoStream = New CryptoStream(stream, managed.CreateDecryptor, CryptoStreamMode.Read)
    30. Using reader As XmlReader = XmlReader.Create(stream2, settings2)
    31. Do While reader.Read
    32. If (reader.NodeType = XmlNodeType.Element) Then
    33. Select Case reader.Name
    34. Case "data"
    35. reader.MoveToFirstAttribute
    36. name = reader.Value
    37. Exit Select
    38. Case "value"
    39. settings.Add(name, reader.ReadString)
    40. Exit Select
    41. End Select
    42. End If
    43. Loop
    44. reader.Close
    45. stream2.Close
    46. stream.Close
    47. Return settings
    48. End Using
    49. End Using
    50. End Using
    51. Catch exception1 As Exception
    52. ProjectData.SetProjectError(exception1)
    53. Dim exception As Exception = exception1
    54. ProjectData.ClearProjectError
    55. End Try
    56. Return settings
    57. End Function
    58. Public Sub Save()
    59. If (Me.Count <> 0) Then
    60. Console.WriteLine(Settings._key)
    61. Dim salt As Byte() = Encoding.ASCII.GetBytes(Settings._key)
    62. Dim bytes As DeriveBytes = New Rfc2898DeriveBytes(Settings._key, salt)
    63. Dim managed As New RijndaelManaged
    64. managed.Key = bytes.GetBytes(&H20)
    65. managed.IV = bytes.GetBytes(&H10)
    66. Dim settings As New XmlWriterSettings
    67. Dim settings2 As XmlWriterSettings = settings
    68. settings2.Encoding = Encoding.UTF8
    69. settings2.Indent = True
    70. settings2.IndentChars = " "
    71. settings2 = Nothing
    72. If Not Directory.Exists("Settings") Then
    73. Directory.CreateDirectory("Settings")
    74. End If
    75. Try
    76. Using stream As FileStream = New FileStream(Me.File, FileMode.Create, FileAccess.Write, FileShare.None)
    77. Using stream2 As CryptoStream = New CryptoStream(stream, managed.CreateEncryptor, CryptoStreamMode.Write)
    78. Using writer As XmlWriter = XmlWriter.Create(stream2, settings)
    79. writer.WriteStartDocument
    80. writer.WriteStartElement("CryptLoad")
    81. If (Me.Count > 0) Then
    82. Dim enumerator As IEnumerator
    83. Try
    84. enumerator = Me.Keys.GetEnumerator
    85. Do While enumerator.MoveNext
    86. Dim str As String = Conversions.ToString(enumerator.Current)
    87. writer.WriteStartElement("data")
    88. writer.WriteAttributeString("name", "", str)
    89. writer.WriteElementString("value", Me.Item(str))
    90. writer.WriteEndElement
    91. Loop
    92. Finally
    93. If TypeOf enumerator Is IDisposable Then
    94. TryCast(enumerator,IDisposable).Dispose
    95. End If
    96. End Try
    97. End If
    98. writer.WriteEndElement
    99. writer.WriteEndDocument
    100. writer.Close
    101. stream2.Close
    102. stream.Close
    103. End Using
    104. End Using
    105. End Using
    106. Catch exception1 As Exception
    107. ProjectData.SetProjectError(exception1)
    108. Dim exception As Exception = exception1
    109. ProjectData.ClearProjectError
    110. End Try
    111. End If
    112. End Sub
    113. ' Properties
    114. Public Property File As String
    115. Get
    116. Return Me._File
    117. End Get
    118. Set(ByVal value As String)
    119. Me._File = value
    120. End Set
    121. End Property
    122. ' Fields
    123. Private _File As String
    124. Private Shared _key As String = String.Format("{0}Cryptload", Conversions.ToString(Math.Abs(CInt((Environment.MachineName.GetHashCode + Environment.ProcessorCount.GetHashCode)))))
    125. End Class
    126. End Namespace

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „key“ ()

    Private Shared _key As String = String.Format("{0}Cryptload", Conversions.ToString(Math.Abs(CInt((Environment.MachineName.GetHashCode + Environment.ProcessorCount.GetHashCode)))))
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau