Steam Decrypten?

  • Wie kann ich die Steam Daten auslesen und decrypten?
    Mein bisheriges Wissen: zum Decrypten braucht man


    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid
    • HKEY_CURRENT_USER\Software\Valve\Half-Life\Settings\io
    • ClientRegistry.blob


    Nur: Wo sind die Daten (Login und Passwort) genau gespeichert (und in welchem Format) und wie muss ich das verschlüsselte Passwort entschlüsseln?


    MfG l0l.l0l

  • In welcher Sprache programmierst du denn? Deine angegebenen Registry-Paths brauch man nicht zwingend. Schau dir mal die Steam.dll genauer an, dort gibt es eine Funktion welche das aktuelle Passwort aus der ClientRegistry.blob decrypten kann. Ist halt um einiges einfacher als erst die ProductID, MachineGuid etc. aus der Registry auszulesen und damit dann den Key zu decrypten..

  • Du brauchst nur das Encryptet PW aus registry.blob und mit der SteamDecryptDataForThisMachine API kannst du das automatisch lösen :D




    Du sagst, du spürst die Ohnmacht, denn der Feind ist ach so stark
    Und er will dich niederhalten mit Geschrei durch Bein und Mark
    Mit Verboten und Zensur kann er zwar den Kampf erschweren
    Doch niemals wird ein Richterspruch den freien Geist bekehren.


    Fürchte lieber Deutschlands Untergang als die Reden der Vasallen
    Derer, die der Lüge dienen, denn schon bald werden sie fallen.

  • Ich programmier in Delphi.
    Und wie find ich das encryptete PW in der ClientRegistry.blob?


    Btw: Diese SteamDecryptDataForThisMachine-Funktion scheint ja einen Parameter als StringBuilder zu erwarten. Bislang hab ich diesen Typ in Delphi nicht gefunden, nur in Delphi.NET... Gibts sowas in Delphi auch?


    MfG l0l.l0l

  • Das hier scheint die Syntax für SteamDecryptDataForThisMachine zu sein (.NET Syntax):
    Public Function SteamDecryptDataForThisMachine(ByVal encryptedData As String, ByVal encryptedDataSize As Integer, ByVal decryptedBuffer As StringBuilder, ByVal decryptedBufferSize As Integer, ByRef decryptedDataSize As Integer) As Integer
    Hab ich auf OpenSC gefunden ;)


    MfG l0l.l0l

  • Das hab ich auch schon gefunden aber ich hab mich nie mit anderen Sprachen als Delphi befasst. Ich check nicht mal was für einen Typ die Funktion zurückgibt xD müsste ja wohl ein string sein^^ ich peils einfach nich

  • Delphi-Syntax wär so ungefähr:
    function SteamDecryptDataForThisMachine(encryptedData:string; encryptedDataSize:integer; decryptedBuffer:StringBuilder; decryptedBufferSize:integer; decryptedDataSize:integer):integer;
    Gibt also einen Integerwert zurück ;)


    MfG l0l.l0l

  • Zitat von l0l.l0l;17011

    Delphi-Syntax wär so ungefähr:
    function SteamDecryptDataForThisMachine(encryptedData:string; encryptedDataSize:integer; decryptedBuffer:StringBuilder; decryptedBufferSize:integer; decryptedDataSize:integer):integer;
    Gibt also einen Integerwert zurück ;)


    MfG l0l.l0l


    Dann check ich nicht was man damit soll.
    Muss ich dann gucken welchen wert DecryptedBuffer hat?

  • Exakt. Und der Rückgabewert gibt an, ob es Fehler gab, soweit ich das jetzt verstanden hab... Wenn die Funktion 0 zurückgibt, ist alles in Ordnung ;)


    Aber mein Problem ist nachwievor, dass ich nicht weiss, wo das Passwort und der Login gespeichert werden. Gibt es in der ClientRegistry.blob sowas ähnliches wie ein Keywort (wie bei der Owner.mdb von ICQ6 das "StoredPassword")?


    MfG l0l.l0l

  • Code
    1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId
    2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography \MachineGuid
    3. HKEY_CURRENT_USER\Software\Valve\Half-Life\Settings\io


    Das hier hast du doch schon geschrieben.
    Diese Werte hängst du in der Reihenfolge aneinander.
    Das ist dann EncryptedData. EncryptedDataSize ist dann ja klar.


    Mit der SteamDecryptDataForThisMachine kann man das auch ohne die Registry lösen also direkt aus der blob datei hab aber kein plan wie das geht.