ini datei decrypten ohne zu droppen?

  • hallo & guten abend liebe leute,
    ich würde gerne wissen wie ich eine ini-datei decrypten kann, ohne sie zum auslesen auf die festplatte zu droppen.
    hat jemand eine idee ?

    Einmal editiert, zuletzt von WhiteLion (24. Mai 2011 um 09:36)

  • ich möchte meine ini datei crypten (die komplette datei).
    zum lesen der werte brauch ich sie natürlich decrypted.
    ich möchte sie dann natürlich nicht wieder decrypted auf die festplatte droppen, sonst wäre das crypten ja sinnlos.
    wie encrypte ich die ini im ram und lese die werte von dort ?
    oder gibt es andere möglichkeiten ?

  • Wie wärs mit einlesen (FileRead) und dann den Wert entschlüsseln??:
    Grob so:

    [autoit]


    $file=FileRead("crypt.ini")
    $decryptfile=_Crypt_DecryptData($file,"derKEY",...)

    [/autoit]

    Crypt.au3 halt noch includen und starten ;)

  • Zitat

    Übersetzung:
    Ich möchte eine .ini Datei verschlüsselt speichern.
    Um mit den Werten arbeiten zu können, muss ich sie natürlich wieder entschlüsseln. Allerdings will ich es vermeiden, die Datei im entchlüsselten Zustand auf der Festplatte abzulegen, während mein Skript darauf zugreift. Wie entschlüssele ich die Datei im RAM um die Daten von dort auszulesen?
    Oder gibt es Alternativen.

    Verschlüssle nicht die gesammte Datei, sondern Werte und SChlüssel einzelnen.
    _StringEncrypt()

  • du kannst doch mit FileRead die verschlüsselte Datei in den Speicher einlesen.
    Was Du mit dem Inhalt der Variable dann machst bleibt doch Dir überlassen ...

    Decrypten, StringSplit ($var,'='), etc...
    Ini-Funktionen für Dein Vorhaben müsstest Du aber erst noch scripten.
    Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <String.au3>
    FileDelete(@ScriptDir & '\test.ini')
    filewrite(@ScriptDir & '\test.ini', _StringEncrypt(1,'[Testkey]'&@CRLF&'Wert1=blablabla'&@CRLF&'Wert2=blubblubblub', 'meinPasswort',1))

    [/autoit] [autoit][/autoit] [autoit]

    _inicrypt()

    [/autoit] [autoit][/autoit] [autoit]

    Func _inicrypt()
    $var = _StringEncrypt(0,FileRead(@ScriptDir & '\test.ini'), 'meinPasswort',1)
    MsgBox(0, '', $var)
    EndFunc

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Einmal editiert, zuletzt von Schnuffel (22. Mai 2011 um 09:34)

  • okey, mal angenommen ich habe per fileread meine ini im speicher, dann müsste ich die auseinanderpflücken...etc. das wird schwer, weils sehr viele sind. oder gibt es dafür eine udf ?

  • keiner hat gesagt, dass dein Vorhaben leicht ist.
    Wobei ein bischen StringSplit etc ... naja, das ist doch nicht so schwer.

    Zu deiner Frage nach einer UDF...

    Zitat

    Ini-Funktionen für Dein Vorhaben müsstest Du aber erst noch scripten.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Ansonsten wie gesagt, du könntest die Schlüssel und Werte einzeln crypten und dann in die ini Datei schreiben. Da bräuchstes du nichteinmal groß was scripten. Denn niemand kann eine gut, verschlüsselte Datei lesen, außer mit einer Brutforce attack (welche du, indem du verschiedene passwörter benutzt verhindern kannst)

    Meine Werke


    EasyScreen (teilweise Crocoframe): <EasyScreen>
    Spotify2Title: <Spotify2Title> (zur Info, dies ist KEIN Spotify-Downloader! Wer das dachte... :rofl: sowas gibts hier nicht :thumbdown: )

  • Wozu eine Ini verwenden ?

    http://de.wikipedia.org/wiki/Initialisierungsdatei

    Programmeinstellungen für die "Ini"tialisierung eines Programms sollte man, wenn sie in einer Ini stehen grundsätzlich nicht verschlüsseln, falls man mal was manuell ändern möchte.

    Wenn du größere Sachen Speichern willst solltest du einfach eine Eigene Speichermethode entwickeln mit String Split.

    Beispiel


    z.B. eine Leveldatei (vom TD wo ich grade dran sitze) sieht unkomprimiert so aus:

    Code
    DER_ERSTE_KONTAKT,10122194491463361334632674871821,8,3;10;10;0;0.35;17;9;0;30;4|3;10;12;0;0.35;18;11;0;30;7|3;10;15;0;0.35;19;12;0;30;8|3;10;17;0;0.35;18;9;0;30;9|3;11;21;0;0.36;20;11;0;31;11|3;11;24;0;0.37;19;14;0;32;12|3;12;27;0;0.38;21;13;0;33;13|3;12;31;0;0.39;22;16;0;33;16

    Als erstes wird mit einem Komma "," gesplittet.
    Der erste Wert ist so direkt auslesbar: Der Name des Levels
    Im 2ten Wert stecken die wegpunkte für meine Monster (TD eben) Auch direkt zugänglich.
    Im 3ten steht die Anzahl Wellen.
    Im 4ten sind alle Wellen mit ihren Werten gesichert.
    Dazu wird der 4te erst mit "|" getrennt um die einzelnen Wellen zu erhalten und anschließend mit ";" nochmals um alle Werte zu den Wellen zu bekommen.

    Sowas kann man ohne etwas auf der Festplatte zu hinterlassen im Programm nutzen.

    lg