Encrypt-Funktion macht mir Probleme

  • Hallo Leute,

    ich habe ein PRoblem mit meiner Encrypt-Funktion.
    Ich habe im @ScriptDir eine verschlüsselte GPW.ini, die ich einlese, im Script entschlüssel und dann soll der Inhalt in eine temporäre Datei geschrieben werden, um
    1. eine Kontrolle zu haben
    2. weiter mit den Daten arbeiten zu können.

    Das Encrypttool bastelt mit aber die entschlüsselte INI immer in den übergeordneten Ordner mit folgendem Dateinamen: Skin_Installer_NEU_480x272_SkinV21GPW.ini
    Dieser Name setzt sich aus dem @ScriptDir und GPW.ini zusammen.... und ich habe keine Ahnung warum... ?(

    Hier ist die betreffende au3:

    Spoiler anzeigen
    [autoit]


    Local $chars, $text, $text1, $inifile, $inifile_1, $i_EncryptLevel, $s_EncryptPassword, $text, $file

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

    TraySetState(4)
    GUICtrlDelete($Install)
    GUICtrlDelete($Abbruch)
    GUICtrlDelete($label6)

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

    If FileExists(@ScriptDir & "\dummy.txt") Then
    MsgBox(0, "ACHTUNG", "Es wird mit den Daten der DUMMY.TXT gearbeitet", 5)

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

    FileCopy(@ScriptDir & "\dummy.txt", $pfad & "hardware.txt", 1)
    Else
    $progress = GUICtrlCreateProgress(144, 296, 470, 29, BitOR($PBS_SMOOTH, $WS_BORDER))
    $label6 = GUICtrlCreateLabel("PNA Analysescripte werden kopiert", 144, 248, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    RunWait($pfad & 'rapistart.exe ' & '"' & '\my flash disk\temp\hardware.exe' & '"', @ScriptDir, @SW_HIDE)
    GUICtrlDelete($label6)
    $label6 = GUICtrlCreateLabel("PNA Hard- und Software wird analysiert", 144, 248, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    For $x = 1 To 100 Step 1
    GUICtrlSetData($progress, $x)
    Sleep(90)
    Next

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

    RunWait($pfad & 'cecopy.exe /s ' & '"' & 'dev:\temp\hardware.txt' & '"' & ' ' & '"' & $pfad & 'hardware.txt' & '"', @TempDir, @SW_HIDE)
    EndIf

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

    If FileExists($pfad & 'hardware.txt') Then
    $hardware1 = FileRead($pfad & 'hardware.txt')
    GUICtrlDelete($progress)
    GUICtrlDelete($label6)
    $hardware = StringSplit($hardware1, "|")

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

    $file = FileOpen(@ScriptDir & "\GPW.ini", 0)
    If $file = -1 Or "" Then
    MsgBox(0, "ACHTUNG", "GPW.ini fehlt oder ist leer " & @CRLF & "oder beschädigt. " & @CRLF & " Bitte die INI erneut downloaden " & @CRLF & "und in den Install-Ordner legen!", 10)
    endscript()
    Exit
    EndIf
    $chars = FileRead($file)
    FileClose($file)

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

    ;~ Encrypt-Funktion der INI
    $sEncryptPassword = 'test'
    $iEncryptLevel = '2'

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

    $text = _StringEncrypt(0, $chars, $sEncryptPassword, $iEncryptLevel)
    $inifile = FileOpen(@ScriptDir & "\GPW_1.ini", 2)
    FileWrite($inifile, $text)
    FileClose($inifile)
    ;~ Encrypt-Ende

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

    $var = IniReadSection(@ScriptDir & "\GPW_1.ini", "version_path")
    $ini = IniReadSection(@ScriptDir & "\GPW_1.ini", "version_size")

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

    For $i = 1 To $ini[0][0]
    If $ini[$i][1] = $hardware[4] Then
    $version = $ini[$i][0]
    ExitLoop
    FileClose($inifile)
    Else
    $version = "----"
    EndIf
    Next

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

    If $version = "----" Then
    $fh = MsgBox(64, "Update", "Das Programm hat die GoPal-Version" & @CRLF & "nicht erkannt!" & @CRLF & '' & @CRLF & "Möchten Sie Online auf ein Update prüfen?")
    If $fh = 1 Then
    ;~ ###################### Neue Funktion zum Update der GPW.INI
    ;~####### FTP-Daten
    $server = 'testserver.de'
    $username = 'tester'
    $pass = 'test'
    $path = '/skin_ini_updater/'

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

    $version_file = (@ScriptDir & "\Update.txt")
    $version_line = FileReadLine($version_file, 2)

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

    $DownloadFile_1 = (@ScriptDir & "\1Update.txt") ;~ dito
    $Ftp_FileName_1 = "Update.txt" ;~ Dateiname in Var schreiben
    $Open = _FTP_Open('MyFTP Control') ;~ Öffne FTP
    If @error=1 Then ftperror() ;~ Wenn kein FTP möglich, dann gehe in Fehler
    $label4 = GUICtrlCreateLabel("FTP wird geöffnet...", 144, 200, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Sleep(500)
    $Conn = _FTP_Connect($Open, $server, $username, $pass) ;~ Verbinden mit dem FTP
    If @error=1 Then ftperror() ;~ Wenn kein FTP möglich, dann gehe in Fehler
    GUICtrlDelete($label4)
    $label4 = GUICtrlCreateLabel("Anmelden am Server....", 144, 200, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Sleep(500)
    $FtpDir = _FTP_DirSetCurrent($Conn, $path) ;~ Wechseln des Standart-Verzeichnisses
    If @error=1 Then ftperror() ;~ Wenn kein FTP möglich, dann gehe in Fehler
    GUICtrlDelete($label4)
    Local $Ftpd_1 = _FTP_ProgressDownload($Conn, $DownloadFile_1, $Ftp_FileName_1) ;~ Download mit Progressbar
    If $Ftpd_1 = 1 Then ;~ Kontrolle, ob File da ist
    Local $Ftpc = _FTP_Close($Open) ;~ FTP wieder schliessen
    If FileExists($DownloadFile_1) Then ;~ Wenn File da ist
    $version_line_1 = FileReadLine($DownloadFile_1, 2) ;~ Lese Zeile 2
    EndIf
    If $version_line = $version_line_1 Then ;~ Vergleiche Original-Update.txt mit neuer
    $version = "----"
    $goGPW = MsgBox(36, " Fehler", "Ihre Gopal-Version wird nicht unterstützt." & @CRLF & "Sie haben die Möglichkeit dem GopalWorld-Skin-Team durch einen Klick auf YES ihre Gopal-Version mitzuteilen. Das Goaplworld-Skin-Team wird daraufhin ihre Version kompatibel machen." & @CRLF & @CRLF & "Möchten Sie uns Ihre Gopal-Version mitteilen?")
    If $goGPW = 6 Then
    ShellExecute("http://dingsbums.de/gopal.php?size=" & $hardware[4] & "&pna=" & $hardware[5] & "&version=" & $hardware[6] & "&installer= GPW-Skin-Installer V2.1_470x272")
    endscript()
    Exit
    Else
    MsgBox(4096, " Fehler", "Diese Gopal Version " & @CRLF & "ist nicht mit diesem Skin kompatibel." & @CRLF & "Programm wird beendet.")
    endscript()
    Exit
    EndIf
    Else
    MsgBox(64, "Update!", "Es ist eine Neue Version verfügbar!")
    $fg = MsgBox(4, "Updaten?", "Möchten Sie jetzt Updaten?")
    If $fg = 6 Then
    $DownloadIniFile = ("\GPW_1.ini") ;~ Pfad in Var schreiben
    $Ftp_IniName = "GPW.ini" ;~ Dateiname in Var schreiben
    $Open = _FTP_Open('MyFTP Control') ;~ Öffne FTP
    If @error=1 Then ftperror()
    $label4 = GUICtrlCreateLabel("FTP wird geöffnet...", 144, 200, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Sleep(500)
    $Conn = _FTP_Connect($Open, $server, $username, $pass) ;~ Verbinden mit dem FTP
    If @error=1 Then ftperror() ;~ Wenn kein FTP möglich, dann gehe in Fehler
    GUICtrlDelete($label4)
    $label4 = GUICtrlCreateLabel("Anmelden am Server....", 144, 200, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Sleep(500)
    $FtpDir = _FTP_DirSetCurrent($Conn, $path) ;~ Wechseln des Standart-Verzeichnisses
    If @error=1 Then ftperror() ;~ Wenn kein FTP möglich, dann gehe in Fehler
    GUICtrlDelete($label4)
    Local $Ftpd_2 = _FTP_ProgressDownload($Conn, $DownloadIniFile, $Ftp_IniName) ;~ Download mit Progressbar
    If $Ftpd_2 = 1 Then ;~ Kontrolle, ob File da ist
    Local $Ftpc = _FTP_Close($Open) ;~ FTP wieder schliessen
    Else
    $label4 = GUICtrlCreateLabel("DATEI WURDE NICHT GELADEN!", 144, 200, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Local $Ftpc = _FTP_Close($Open) ;~ FTP wieder schliessen
    Sleep(3000)
    endscript()
    Exit
    EndIf
    Sleep(200)
    $file_1 = FileOpen("\GPW_1.ini", 0)
    If $file_1 = -1 Or "" Then
    MsgBox(0, "ACHTUNG", "GPW.ini fehlt oder ist leer " & @CRLF & '' & @CRLF & "oder beschädigt." & @CRLF & "Bitte den Skin erneut downloaden " & @CRLF & "und in den Install-Ordner legen!", 10)
    endscript()
    Exit
    EndIf
    $chars_1 = FileRead($file_1)
    FileClose($file_1)

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

    ;~ Encrypt-Funktion der INI
    $sEncryptPassword_1 = 'test'
    $iEncryptLevel_1 = '2'

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

    $text_1 = _StringEncrypt(0, $chars_1, $sEncryptPassword_1, $iEncryptLevel_1)

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

    $inifile_1 = FileOpen("\GPW_1.ini", 2)
    FileWrite($inifile_1, $text_1)
    FileClose($inifile_1)
    ;~ Encrypt-Ende

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

    $var = ''
    $ini = ''

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

    Sleep(100)
    $var = IniReadSection("\GPW_1.ini", "version_path")
    $ini = IniReadSection("\GPW_1.ini", "version_size")
    If @error=1 Then
    MsgBox(0, "ACHTUNG", "GPW.ini ist leer " & @CRLF & "oder beschädigt. " & @CRLF & " Bitte den Skin erneut downloaden " & @CRLF & "und in den Install-Ordner legen!", 10)
    endscript()
    Exit
    EndIf

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

    For $i = 1 To $ini[0][0]
    If $ini[$i][1] = $hardware[4] Then
    $version = $ini[$i][0]
    ExitLoop
    FileClose($inifile_1)
    Else
    $version = "----"
    EndIf
    Next
    FileClose($inifile_1)
    If $version = "----" Then
    fehler()
    EndIf
    Else
    fehler()
    EndIf
    EndIf
    Else
    ftperror()
    EndIf
    EndIf
    EndIf
    ;~ ######################Ende der neuen Funktion

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

    $version_type = StringLeft($version, StringLen($version) - 3)
    $version_number = StringRight($version, 3)

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

    AdlibUnRegister()

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

    GUICtrlDelete($label2)

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

    If $hardware[6] = "-" Then
    MsgBox(16, "ACHTUNG", " Keine Speicher-Karte vorhanden " & @CRLF & "oder Speicher-Karte voll!" & @CRLF & '' & @CRLF & " Bitte Karte einsetzen und Programm neu starten.", 10)
    endscript()
    Exit
    EndIf

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

    $pfad1 = $pfad & '\' & 'GoPalWorld-Skin'
    $dirsize = (DirGetSize($pfad1, 0))
    $dirsizeround = Round($dirsize / 1024 / 1024, 2)
    $installsize = ($dirsizeround - 4.00)
    $speicher = Round($hardware[7] / 1024 / 1024, 2)
    If $speicher <= 0 Then
    $speicher = ($speicher * - 1)
    EndIf
    $bedarf = ($installsize - $speicher)

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

    If $speicher <= $installsize Then
    MsgBox(16, "ACHTUNG", "Zu wenig Speicherplatz auf der Speicherkarte!" & @CRLF & '' & @CRLF & "Es sind nur " & $speicher & "MB statt benötigter " & $installsize & "MB frei!" & @CRLF & "Bitte Speicher-Karte um " & $bedarf & "MB bereinigen, " & @CRLF & "oder grössere Karte einsetzen und Programm neu starten!", 10)
    endscript()
    Exit
    EndIf

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

    GUICtrlDelete($label2)
    $label2 = GUICtrlCreateLabel("Das Gerät ist ein ----> " & $hardware[5], 144, 152, 470, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))

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

    If StringLeft(StringRight($hardware[5], 4), 1) = 5 Then

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

    $hardware[1] = "Sirf"
    EndIf

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

    GUICtrlDelete($label3)
    GUICtrlDelete($label4)
    GUICtrlDelete($label5)
    GUICtrlDelete($label6)
    $label3 = GUICtrlCreateLabel("Das System arbeitet mit einem " & $hardware[1] & " Prozessor. ", 144, 176, 470, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    $label4 = GUICtrlCreateLabel("Folgende GoPal-Software ist installiert: " & $version_type & " " & $version_number, 144, 200, 470, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    ConsoleWrite("Ordner= " &'GoPalWorld-Skin\' & $version_type & '' & $version_number & '\Atlas')
    If $hardware[2] == "mfd" And $hardware[3] = "sd" Then
    $label5 = GUICtrlCreateLabel("POIObserver-Sourcen gefunden, PoiObs anpassen ->", 144, 224, 420, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    $poibs_ins = GUICtrlCreateCombo("", 560, 224, 50, 50)
    GUICtrlSetData(-1, "--|mfd|sd", "mfd")
    ElseIf $hardware[2] == "mfd" And $hardware[3] = "-" Then
    $label6 = GUICtrlCreateLabel("POIObserver-Sourcen gefunden, PoiObs anpassen ->", 144, 224, 420, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    $poibs_ins = GUICtrlCreateCombo("", 560, 224, 50, 50)
    GUICtrlSetData(-1, "--|mfd", "mfd")
    ElseIf $hardware[2] == "-" And $hardware[3] = "sd" Then
    $label6 = GUICtrlCreateLabel("POIObserver-Sourcen gefunden, PoiObs anpassen ->", 144, 224, 420, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    $poibs_ins = GUICtrlCreateCombo("", 560, 224, 50, 50)
    GUICtrlSetData(-1, "--|sd", "sd")
    Else
    $label6 = GUICtrlCreateLabel("Keine POIOBServer-Sourcen gefunden", 144, 224, 470, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    EndIf

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

    TraySetIcon()

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

    $Install = GUICtrlCreateButton("", 504, 352, 101, 69, $BS_BITMAP)
    GUICtrlSetImage(-1, $pfad & "\go.bmp", 0)
    _GUICtrl_SetOnhover(-1, "_hover_Proc", "_Leave_hover_Proc", "PrimaryDown_Proc", "PrimaryUp_Proc")
    $Abbruch = GUICtrlCreateButton("", 392, 352, 101, 69, $BS_BITMAP)
    GUICtrlSetImage(-1, $pfad & "\stop.bmp", 0)
    _GUICtrl_SetOnhover(-1, "_hover_Proc", "_Leave_hover_Proc", "PrimaryDown_Proc", "PrimaryUp_Proc")

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

    If $hardware[7] = "-" Then
    GUICtrlDelete($Install)
    MsgBox(4096, " Fehler", "Keine Speicherkarte gefunden " & @CRLF & " Programm wird beendet")
    endscript()
    Exit
    EndIf

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    endscript()
    ExitLoop
    Case $msg = $Install
    #include "GPWs_func_3.au3"
    ExitLoop
    Case $msg = $Abbruch
    endscript()
    ExitLoop
    EndSelect
    WEnd
    EndIf

    [/autoit]

    Wie kriege ich es hin, dass der encrytper mir das in die gewünschte Datei schreibt, nämlich als 1_GPW.ini in den Ordner @ScriptDir????

    Gruß
    Pitter

    2 Mal editiert, zuletzt von Pitter (9. Mai 2010 um 17:01)

  • Was ich im groben shen konnte ist das bei

    [autoit]

    $file_1, $inifile_1

    [/autoit]


    Das Verzeichniss fehlt, das FileOpen weiss was und wo geöffnet wird.

    Edit: bei IniReadSection auch !

    LG Kleienr

  • Zitat

    Die INI liegt doch im @ScriptDir drin, oder stehe ich mir gerade selber auf der Leitung?

    JA :P !

    Bei jeder ausleseoperation solten die FUnktionen schon wissen wo ligt die datei und wie heißt sie.


    LG Kleiner

  • [autoit]

    @ScriptDir & "\Datei.ini"

    [/autoit]

    wäre ein korrketer pfad ;)

    mfg Ubuntu

  • Hallo zusammen,

    hab den Fehler gefunden und fixen können.
    Selbstverständlich hattet Ihr beide Recht. ;)

    Dazu kam aber, dass beim Dekodieren die Datei nicht überschrieben wurde. Hab das jetzt so umgebaut, dass das Script erst eine temp-Datei schreibt und danach dann erst rüber kopiert und überschreibt.

    Gruß
    Pitter