[ERLEDIGT] Registry Key Verschlüsseln

  • VB.NET

Es gibt 40 Antworten in diesem Thema. Der letzte Beitrag () ist von Lingo.

    [ERLEDIGT] Registry Key Verschlüsseln

    Hallo Zusammen

    Ich schreibe einige Reg Keys in meine Registry:

    VB.NET-Quellcode

    1. Dim RegKey As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\Microsoft\Windows NT\CurrentVersion\Winlogon", True) ' True gibt an, dass im Key geschrieben wird
    2. RegKey.SetValue("AutoAdminLogon", 1, RegistryValueKind.DWord)
    3. RegKey.SetValue("DefaultDomainName", "Domaine", RegistryValueKind.String)
    4. RegKey.SetValue("DefaultUserName", Me.tb_username.Text, RegistryValueKind.String)
    5. RegKey.SetValue("DefaultPassword", Me.tb_password.Text, RegistryValueKind.String)
    6. RegKey.Close()


    Nun möchte ich den letzten Key:

    RegKey.SetValue("DefaultPassword", Me.tb_password.Text, RegistryValueKind.String)
    verschlüsselt hinterlegen. D.h. wenn man die Registry bis zu diesem Key aufmacht , dass man diesen nicht einfach so auslesen kann.

    Würde mich über Hilfe & Anstösse freuen.

    Freundliche Grüsse

    Lingo

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lingo“ ()

    Schau dir mal die RSA Klasse an, die kann Verschlüßeln. Bzw. kann ich dir gerne den Code mal Posten

    MD-5 ist keine Verschlüsselung, sondern ein Hash, denn du nicht wieder umwandeln kannst, RSA Verschlüßwelungen jedoch schon.
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    backtothetoast schrieb:

    MD-5?

    Bitte Hash und Verschlüsselung nicht durcheinander werfen.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Nein ist es NICHT.
    Er will die Anmeldedaten von WINDOWS hinterlegen... Und da bringt ihm nen Hash 0,garnix...
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    ok, müsstest aber ein wenig umbauen. Habe mal so einen String Verschlüßelt und fehlerhaft als Signatur Angesehen. Aber der String wurde dort verschlüßelt und Entschlüßelt.

    VB.NET-Quellcode

    1. Structure keyset
    2. Dim open As String
    3. Dim privat_key As String
    4. End Structure
    5. Public Shared Function createkeys() As keyset
    6. Dim rsaKey As keyset
    7. Dim rsacrypto As New RSACryptoServiceProvider
    8. rsaKey.privat_key = rsacrypto.ToXmlString(True)
    9. rsaKey.open = rsacrypto.ToXmlString(False)
    10. rsacrypto.Dispose()
    11. Return rsaKey
    12. End Function
    13. Public Shared Sub createSignu(path As String, private_Key As String, md5hash As String)
    14. Dim rsacrypto As New RSACryptoServiceProvider
    15. Dim signuByte() As Byte
    16. Dim outstring As String
    17. signuByte = System.Text.Encoding.UTF8.GetBytes(md5hash)
    18. ' Privaten Key Zuweisen
    19. rsacrypto.FromXmlString(private_Key)
    20. ' Signieren
    21. outstring = Convert.ToBase64String(rsacrypto.SignData(signuByte, GetType(SHA1)))
    22. ' Daten Freigeben
    23. rsacrypto.Dispose()
    24. ' Signatur anlegen
    25. Dim writer As New IO.StreamWriter(path & "\signatur.fsx")
    26. writer.WriteLine(outstring)
    27. writer.Close()
    28. 'msg Ausgeben
    29. MsgBox("Signatur Hinzugefügt")
    30. End Sub
    31. Public Shared Function valdiateSignu(path As String, public_key As String, md5hash As String) As Boolean
    32. Dim rsacrypto As New RSACryptoServiceProvider
    33. Dim DataString As String
    34. Dim datavalue As Byte()
    35. Dim SignaturByte As Byte()
    36. Dim valdiate As Boolean
    37. 'Datei Einlesen
    38. Dim fr As New StreamReader(path & "\signatur.fsx")
    39. DataString = fr.ReadToEnd()
    40. fr.Close()
    41. ' md5 in Bytes Umwandeln
    42. datavalue = Encoding.UTF8.GetBytes(md5hash)
    43. ' Signatur in byte Umwandeln
    44. SignaturByte = Convert.FromBase64String(DataString)
    45. ' RSA den Key Zuweisen
    46. rsacrypto.FromXmlString(public_key)
    47. ' Prüfen
    48. valdiate = rsacrypto.VerifyData(datavalue, GetType(SHA1), SignaturByte)
    49. Return valdiate
    50. End Function


    Wobei md5 hash, ein einfacher string ist. Hat in deinem Fall nichts mit md5 zu tuhen.

    Edit:

    Hier mal ein nützlicher link, da wird genau das gemacht was du suchst

    activevb.de/tipps/vbnettipps/tipp0099.html
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    @Andy16823

    Hab mir das Beispiel Projekt welches bei deinem Link hinterlegt war gedownloadet und fom Sting "Test" einen Schlüssel gemacht.


    Weisst du jedoch welchen von diesen 3 SChlüsseln ich verwenden muss damit WINDOWS dies beim einloggen erkennt?
    Ich bezweifle dass Windows einen verschlüsselten String als Passwort anerkennt oO
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Mich würde interessieren, was dich auf die Idee gebracht hat, dass sowas gehen KÖNNTE...
    Wie schaffst du es denn dich mit einen NICHT-verschlüsselten PW bei Windows anzumelden?!
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    1. Ich hab hier ein Programm rumliegen welches das kann^^ (Natürlich nicht von mir programmiert-von einer Firma)


    Zu 2. du benötigst nur diese Registry Einträge in HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\

    VB.NET-Quellcode

    1. RegKey.SetValue("AutoAdminLogon", 1, RegistryValueKind.DWord)
    2. RegKey.SetValue("DefaultDomainName", "Domaine", RegistryValueKind.String)
    3. RegKey.SetValue("DefaultUserName", Me.tb_username.Text, RegistryValueKind.String)
    4. RegKey.SetValue("DefaultPassword", Me.tb_password.Text, RegistryValueKind.String)
    Also so wie ich das sehe wirst da nix mit verschlüsseln machen können. oO
    Zumal das ab Windows Vista anders gelöst wird...
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Hab dir nun eine Klasse Geschrieben die das umwandlen übernimmt. Erstelle einfach eine Neue DLL und Bennene die Klasse um zu crypto.vb und füge den Code ein

    VB.NET-Quellcode

    1. Imports System.Security.Cryptography
    2. Public Class Crypto
    3. Public Structure Keys
    4. Dim Open_Key As String
    5. Dim Private_Key As String
    6. End Structure
    7. ''' <summary>
    8. ''' Erstellt ein Neues Schlüßel Paar.
    9. ''' </summary>
    10. ''' <returns></returns>
    11. ''' <remarks></remarks>
    12. Public Function generate_Keys() As Keys
    13. Dim rsaKey As Keys
    14. Dim rsacrypto As New RSACryptoServiceProvider
    15. rsaKey.Private_Key = rsacrypto.ToXmlString(True)
    16. rsaKey.Open_Key = rsacrypto.ToXmlString(False)
    17. rsacrypto.Dispose()
    18. Return rsaKey
    19. End Function
    20. ''' <summary>
    21. ''' Funktion für das Verschlüßeln
    22. ''' </summary>
    23. ''' <param name="Value">Der String der zu verschlüsseln ist</param>
    24. ''' <param name="keys">Das Key Paar</param>
    25. ''' <returns></returns>
    26. ''' <remarks></remarks>
    27. Public Function crypt(Value As String, keys As Keys) As String
    28. ' Service Provider Erstellen
    29. Dim rsa As New RSACryptoServiceProvider()
    30. rsa.FromXmlString(keys.Open_Key)
    31. ' Umwandlen des Values in Bytes
    32. Dim vBytes As Byte() = System.Text.Encoding.UTF8.GetBytes(Value)
    33. ' Erstellen der Verschlüßelungs Bytes
    34. Dim Bytes As Byte() = rsa.Encrypt(vBytes, True)
    35. ' Umwandlend der Bytes zu base64
    36. Return Convert.ToBase64String(Bytes)
    37. End Function
    38. ''' <summary>
    39. ''' Funktion das einen Verschlüßelten String umwandelt zu Klartext
    40. ''' </summary>
    41. ''' <param name="Value">Der Verschlüßelte String</param>
    42. ''' <param name="keys">Das Key Paar</param>
    43. ''' <returns></returns>
    44. ''' <remarks></remarks>
    45. Public Function encrypt(Value As String, keys As Keys) As String
    46. ' Service Provider Erstellen
    47. Dim rsa As New RSACryptoServiceProvider()
    48. rsa.FromXmlString(keys.Private_Key)
    49. ' Umwandeln des Values in Bytes
    50. Dim vBytes As Byte() = Convert.FromBase64String(Value)
    51. ' Entcrypten
    52. Dim Bytes() As Byte = rsa.Decrypt(vBytes, True)
    53. ' ausgeben
    54. Return System.Text.Encoding.Default.GetString(Bytes)
    55. End Function
    56. End Class


    und dann einfach in deiner Anwendung nutzen. Von @jakob1410: habe ich das System.Text.Encoding.Default.GetString(Bytes) das die bytes zu dem String umwandelt.

    Speicher aber die Schlüßel ab, die musst du behalten für das entsclüsseln. Also am besten in eine TXT Datei schreiben lassen. :!:
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener