1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Moombas

Beiträge von Moombas

  • cfg datei im XML Format Werte prüfen und ggf. anpassen

    • Moombas
    • 1. November 2023 um 12:33

    Warum nicht einfach Default config als backup speichern und ggf. Rücksichern?

    Falls du dennoch ddie Werte prüfen willst. Schau dir das mal an: https://www.autoitscript.com/forum/files/fi…mlwrapperexau3/

    Wobei du auch dabei idealerweise eine default config hast, deren Werte du ausließt und dann mit der aktuellen im Spieleordner vergleichst und ggf. dann anpasst.

  • SSH Passwort falsch

    • Moombas
    • 1. November 2023 um 12:08

    Ich hatte das auch mal rausgesucht, das man die Domäne auslesen kann:

    AutoIt
    if FriendlyRootDSE(GetRootDSE()) = 'Your.Domain.Name' then Exit ; Exit nur als Beispiel
    
    Func GetRootDSE()
    Local $RootDSE = ObjGet("LDAP://RootDSE")
        If IsObj($RootDSE) Then Return $RootDSE.get( "DefaultNamingContext" )
    EndFunc
    
    Func FriendlyRootDSE($strRootDSE)
        $strRootDSE = StringReplace($strRootDSE,"DC=","")
        $strRootDSE = StringReplace($strRootDSE,",",".")
        Return $strRootDSE
    EndFunc
    Alles anzeigen

    Leider habe ich die autoren davon nicht mehr vorliegen, stammt aber nicht von mir aber funktioniert bisher einwandfrei.

  • DriveMapAdd verlangt Netzwerkanmeldung

    • Moombas
    • 1. November 2023 um 12:01

    Stimmt Schnuffel das ist mir auch mal eben vollkommen entgangen :rtfm: :saint:

    Natürlich wäre es eher z.B. DriveMapAdd("Z:", '\\Server\Share$\Unterordner')

  • SSH Passwort falsch

    • Moombas
    • 13. Oktober 2023 um 08:32

    Der Reg-Ex Ansatz hat den Vorteil, das du, ohne das eigentliche Server-Passwort zu ändern, das Login-Passwort ändern kannst.

    Und das ganz einfach indem du das eigentliche Passwort mit einem neuen Crypt key verschlüsselst und das entsprechend neu in die ini oder registry schreibst.

    Ab dem Moment wird das neue Passwort benötigt aber Serverseitig bleibt es gleich und AES256 verschlüsselte Passwörter sind faktisch aktuell nicht zu knacken ohne den richtigen CryptKey zu kennen (https://www.backup.ch/wie-sicher-ist…rschluesselung/).

    Du könntest damit also auch indirekt Benutzerspezifische Logins bauen wobei der eigentliche Server-Login gleich bleibt.

  • DriveMapAdd verlangt Netzwerkanmeldung

    • Moombas
    • 12. Oktober 2023 um 09:35

    Das ist logisch, da du für den Benutzernamen und das Passwort einen leeren String übergibst...

    Auch ist die Übergabe der 0 so eigentlich falsch, da du sie als String übergibst (auch wenn AutoIt intern das wieder "richtig biegt"). Generell kannst du aber alles nach dem Pfad weglassen, da die 0 (bzw. $DMA_DEFAULT) default ist und du ja keine Anmeldedaten übergeben willst.

  • Goggle Accout auslesen

    • Moombas
    • 11. Oktober 2023 um 15:39

    Nicht das ich wüsste aber schau dir mal folgende Datei im Editor an:

    C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Profile 1\Preferences

    Achtung: "Profile 1" kann auch Default oder ein anderer Name sein

    Dort solltest du Informationen dazu finden und Auswerten können.

  • Goggle Accout auslesen

    • Moombas
    • 11. Oktober 2023 um 14:26

    Die Frage ist erst mal wo willst du ihn auslesen?

    Aus Chrome oder ein anderes (mail) Programm?

  • SSH Passwort falsch

    • Moombas
    • 11. Oktober 2023 um 10:37

    Btw.: Füg mal zwischen Zeile 51 und 52 folgendes ein ProcessWaitClose($pid) und teste erneut.

    Ansonsten hier meine angesprochene Variante (mit Testwerten!):

    AutoIt
    Opt('MustDeclareVars', 1)
    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <FileConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <WinAPIFiles.au3>
    #include <Crypt.au3>
    
    ; Datei "log.txt" löschen, falls vorhanden
    FileDelete("C:\log.txt")
    
    ;Variablen gehören an den Anfang und wenn sie nicht in einer Funktion definiert werden, müssen sie Global gesetzt werden, nicht Lokal
    Global $password, $pid, $output, $errorOutput, $line, $tries = 0
    Global $PSCommand           = 'powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "'
    Global Const $maxfails      = 3         ;maximale Anzahl der Versuche
    Global Const $PW_length_min = 8         ;mind. Passwortlänge für RegEx-Prüfung
    Global Const $PW_length_max = ''        ;max Passwortlänge für RegEx-Prüfung, wenn Länge beliebig ist, muss ein leerer String übergeben werden
    Global Const $PW_Chars      = '@$!%*?&' ;zul. Zeichen im Passwort für RegExPrüfung
    Global Const $ServerIP      = "x.x.x.x"
    Global Const $Command2      = 'systemctl start apache2'
    Global Const $test_enc_Password = 'CA260316F9B34763E8FBD199D35CA7104CBBB647A6137012B2E32196C0ADBAB9' ;Nur zum testen, dieser String muss wie angegeben idealerweise aus registry, ini o.ä. ausgelesen werden
    
    While 1
        $output = ""
        $errorOutput = ""
        ; Benutzer zur Eingabe des Passworts auffordern
        $Password = InputBox("Anmeldeinformationen", "Geben Sie Ihr Passwort ein:", "", "*")
        ;Es wurde Abbrechen geklickt
        If @error = 1 then ExitLoop
        ; Stellen Sie sicher, dass ein Passwort eingegeben wurde
        If $Password = "" Then
            MsgBox($IDCONTINUE  + $MB_RETRYCANCEL, "Fehler", "Kein Passwort eingegeben.")
            ExitLoop
        EndIf
        $Password = _DecryptPassword($Password, $test_enc_Password)
        ;Anzahl Versuche hochzählen
        $tries += 1
    
        ;Nur zum Testen: funktionierendes Passwort zum Verschlüsselten in $test_enc_Password :  123Ab!afavcas!!!12321
        If not StringRegExp($Password, '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[' & $PW_Chars & '])[A-Za-z\d' & $PW_Chars & ']{' & $PW_length_min & ',' & $PW_length_max & '}$') then
            MsgBox(16, "Fehler", "Zugriff verweigert. Bitte überprüfen Sie das Passwort.")
            ;Prüfen ob zu viele Fehlversuche erreicht wurden.
            If $tries = $maxfails then ExitLoop
            ContinueLoop
        EndIf
    
        ; Starten Sie PowerShell und übergeben Sie das Passwort
        ;StartSSH
        $PSCommand &= '$Username = \"root\" ; ' ; Hier ist der Benutzername festgelegt
        $PSCommand &= '$Password = ConvertTo-SecureString -String \"' & $Password & '\" -AsPlainText -Force ; '
        $PSCommand &= '$Credential = New-Object System.Management.Automation.PSCredential($Username, $Password) ; '
        $PSCommand &= '$Session = New-SSHSession -ComputerName \"' & $ServerIP & '\" -Credential $Credential -Port 22 ; '
    
        ;SSHcommand
        $PSCommand &= 'Invoke-SSHCommand -SSHSession $Session -Command \"' & $Command2 & '\" ; '
    
        ;SSH Sessioin beenden
        $PSCommand &= 'Remove-SSHSession -SSHSession $Session ; "'
    
        $pid = RunWait($PSCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
        ProcessWaitClose($pid)
        ExitLoop
    WEnd
    
    Func _DecryptPassword($_CryptKey, $s_Password)
    Local $Return
    Local Const $vCryptKey = _Crypt_DeriveKey(StringToBinary($_CryptKey), $CALG_AES_256)
        _Crypt_Startup()
    
        $Return = BinaryToString(_Crypt_DecryptData('0x' & $s_Password, $vCryptKey, $CALG_USERKEY))
    
        _Crypt_DestroyKey($vCryptKey) ; Destroy the cryptographic key.
        _Crypt_Shutdown() ; Shutdown the crypt library.
    
        Return $Return
    EndFunc
    Alles anzeigen
  • SSH Passwort falsch

    • Moombas
    • 11. Oktober 2023 um 08:21

    casi4712: Ein gespeichertes Passwort ist nie sicher. Die Frage wäre eher ob sie "sicher genug" ist. Meine Antwort bliebe bei "nein".

    Aber du könntest das anders lösen, wobei ich das dennoch nicht ideal finden würde:

    1. Du speicherst das Passwort AES-256 verschlüsselt in einer (ini) Datei oder registry. Dafür wird zur ver- und Entschlüsselung ein eindeutiger CryptKey benötigt.

    2. Anstatt also das Passwort zu prüfen, prüfst du ob die Entschlüsselung des Passworts mit dem eingegebenen Key mit Passwortvorgaben passt (ggf. Regex und auf Großbuchstaben, Sonderzeichen, mind. Passwortlänge etc. prüfen).

    Meine bisherigen Tests haben bei falschen Cryptkey immer "ÿÿÿÿ" ergeben (ggf. abweichende Länge), was mit dem Regex als Fehlschlag gelten würde.

    3. Wenn Regex passt, kannst du das entschlüsselte Passwort übergeben, wenn nicht: schon hier abbrechen.

    Beispiel für eine AES-256 Verschlüsselung (ohne die Prüfung per RegEx etc.):

    AutoIt
    Opt('MustDeclareVars', 1)
    #cs ----------------------------------------------------------------------------
    
        AutoIt Version: 3.3.16.0
        Author:         Moombas
    
        Script Function:
    Programm zum Verschlüsseln und Entschlüsseln von Strings z.B. zur sicheren Passwortübermittlung, wenn beide Seiten das Programm haben.
    #ce ----------------------------------------------------------------------------
    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    
    #include <Crypt.au3>
    #include <MsgBoxConstants.au3>
    
    Global $Eingabe, $Richtung
    
    While 1
        $Eingabe  = InputBox('String', 'Type in the string: ', ClipGet(), '')
        If @error Then Exit
        $Richtung = MsgBox($MB_YESNO, 'Encode or Decode', 'Do you want to encode (Yes) or decode (No) the string?')
        If @error Then Exit
        If StringLen($Eingabe) > 0 Then
            Doit()
        Else
            Exit
        EndIf
    WEnd
    
    Func Doit()
    Local Const $vCryptKey = _Crypt_DeriveKey(StringToBinary('DeinCryptKey'), $CALG_AES_256)
        _Crypt_Startup()
        if $Richtung = $IDYES then ;Verschlüsseln
            $Eingabe = _Crypt_EncryptData($Eingabe, $vCryptKey, $CALG_USERKEY)
            $Eingabe = StringTrimLeft($Eingabe, 2)
        ElseIf $Richtung = $IDNO then ;Entschlüsseln
             $Eingabe = BinaryToString(_Crypt_DecryptData('0x' & $Eingabe, $vCryptKey, $CALG_USERKEY))
        EndIf
        ClipPut($Eingabe)
        MsgBox($MB_SYSTEMMODAL, "", "The following data is stored in the clipboard: " & @CRLF & $Eingabe)
    
        _Crypt_DestroyKey($vCryptKey) ; Destroy the cryptographic key.
        _Crypt_Shutdown() ; Shutdown the crypt library.
        Exit
    EndFunc
    Alles anzeigen
  • SSH Passwort falsch

    • Moombas
    • 10. Oktober 2023 um 13:18

    Also auch deine vorher gepostete Variante (nicht meine Überarbeitete)?

    Ich habe oben nochmal eine kleine Änderung bei meinem gemacht.

  • SSH Passwort falsch

    • Moombas
    • 10. Oktober 2023 um 10:30

    Habe das für dich mal ein wenig überarbeitet:

    AutoIt
    Opt('MustDeclareVars', 1)
    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <FileConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <WinAPIFiles.au3>
    
    ; Datei "log.txt" löschen, falls vorhanden
    FileDelete("C:\log.txt")
    
    ;Variablen gehören an den Anfang und wenn sie nicht in einer Funktion definiert werden, müssen sie Global gesetzt werden, nicht Lokal
    Global $PSCommand, $password, $pid, $output, $errorOutput, $line, $tries = 0
    Global Const $maxfails = 3
    Global Const $ServerIP = "x.x.x.x"
    Global Const $Command2 = 'systemctl start apache2'
    
    While 1
        $output = ""
        $errorOutput = ""
        ; Benutzer zur Eingabe des Passworts auffordern
        $Password = InputBox("Anmeldeinformationen", "Geben Sie Ihr Passwort ein:", "", "*")
        ;Es wurde Abbrechen geklickt
        If @error = 1 then ExitLoop
    
        ; Stellen Sie sicher, dass ein Passwort eingegeben wurde
        If $Password = "" Then
            MsgBox(16, "Fehler", "Kein Passwort eingegeben.")
            ExitLoop
        EndIf
    
        ;Anzahl Versuche hochzählen
        $tries += 1
    
        ; Starten Sie PowerShell und übergeben Sie das Passwort
        ;StartSSH
        $PSCommand = 'powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "'
        $PSCommand &= '$Username = \"root\" ; ' ; Hier ist der Benutzername festgelegt
        $PSCommand &= '$Password = ConvertTo-SecureString -String \"' & $Password & '\" -AsPlainText -Force ; '
        $PSCommand &= '$Credential = New-Object System.Management.Automation.PSCredential($Username, $Password) ; '
        $PSCommand &= '$Session = New-SSHSession -ComputerName \"' & $ServerIP & '\" -Credential $Credential -Port 22 ; '
    
        ;SSHcommand
        $PSCommand &= 'Invoke-SSHCommand -SSHSession $Session -Command \"' & $Command2 & '\" ; '
    
        ;SSH Sessioin beenden
        $PSCommand &= 'Remove-SSHSession -SSHSession $Session ; "'
    
        $pid = Run($PSCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
        While 1
            $line = StdoutRead($pid)
            If @error Then ExitLoop
            $output &= $line
        WEnd
    
        While 1
            $line = StderrRead($pid)
            If @error Then ExitLoop
            $errorOutput &= $line
        WEnd
    
        If StringInStr($errorOutput, "Permission denied (keyboard-interactive)") Then
            MsgBox(16, "Fehler", "Zugriff verweigert. Bitte überprüfen Sie das Passwort.")
            ;Prüfen ob zu viele Fehlversuche erreicht wurden.
            If $tries = $maxfails then ExitLoop
        Else
            FileWrite("C:\log.txt", $output)
            MsgBox(0, "Info", "Server wurde neu gestartet. Weitere Informationen finden Sie in C:\log.txt.")
            ExitLoop
        EndIf
    WEnd
    Alles anzeigen
  • SSH Passwort falsch

    • Moombas
    • 9. Oktober 2023 um 14:49

    Ich habe noch dieses Beispiel gefunden:

    Code
    __ExampleA()
    Func __ExampleA()
        Local $o_CmdString = ' -command get-module -listavailable'
        Local $o_powershell = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
        Local $o_Pid = Run($o_powershell & $o_CmdString, '', @SW_Hide, $STDERR_CHILD + $STDOUT_CHILD)
        ProcessWaitClose($o_Pid)
    
        Local $o_Output = StdoutRead($o_Pid)
        ConsoleWrite($o_Output & @CRLF)
    EndFunc

    Quelle: https://www.autoitscript.com/forum/topic/20…rom-powershell/

    Musst du natürlich anpassen und danach das $o_Output auswerten.

  • SSH Passwort falsch

    • Moombas
    • 9. Oktober 2023 um 14:44

    Anstatt dem adb... muss dein Befehl rein, also:

    AutoIt
    Local $iPID = Run(@ComSpec & " /c " & $PSCommand, @SystemDir, @SW_HIDE, $STDERR_MERGED) ; $STDERR_CHILD + $STDOUT_CHILD)
    Local $sOutput = ""
    
    Do
        $sOutput &= StdoutRead($iPID)
    Until @error
    
    Consolewrite($sOutput & @CRLF)

    Bin aber unsicher wie das mit dem Powershellcommand ist, also ob das da mit dem @Comspec etc. auch so funktioniert.

  • SSH Passwort falsch

    • Moombas
    • 9. Oktober 2023 um 14:14

    Kannst du dir nicht die Ausgabe holen per

    AutoIt
    Local $iPID = Run(@ComSpec & " /c " & 'adb tcpip 5555', @SystemDir, @SW_HIDE, $STDERR_MERGED) ; $STDERR_CHILD + $STDOUT_CHILD); hier wäre dein Aufruf
    Local $sOutput = ""
    
    Do
        $sOutput &= StdoutRead($iPID)
    Until @error

    Und dann $stdout auswerten?

  • Variable in Array-Namen möglich?

    • Moombas
    • 2. Oktober 2023 um 15:59

    Ja aber deine Checkbox1 sprichst du ja nicht mit Checkbox 1, sondern mit $CheckBox($x) an.

    Das Gleiche fürs Array:

    Array1 sprichst du mit $Array[$Zeile][1] an, das Array2 mit $Array[$Zeile][2] usw. wobei ich die 1 bzw. die 2 durch eine Variable ersetzt habe die für z.B. den Preis gleich die richtige Spalte anspricht. Natürlich kannst du das auch mit einer zweiten Schleiufe komplett durchgehen, das wurde aber in Beitrag #2 bereits gezeigt wie es geht.

  • Variable in Array-Namen möglich?

    • Moombas
    • 2. Oktober 2023 um 14:57
    Zitat von kilo

    es geht mir nur um den Namen / Bezeichner des Arrays, Ich will kein Array im Array speichern. Ich suche nach einer Möglichkeit wie bei CheckBox($x) auch ein Array($x) mit

    einer Variablen anzusprechen. Ich kann es offensichtlich nicht verständlich genug erklären.

    Du sprichst die Checkbox mit $Checkbox[$x] an und das entsprechende Array-Element mit $aArray[$x][$Preis]. Wobei $x die Zeile, also das x.te Element ist und z.B. $Preis die Spalte definiert wo die Preise zu finden sind (Basis mein bereits geposteter Aufbau).

    AutoIt
    ;Zeile 0 = Anzahl Zeilen und Spalten
    ;Zeile 1 = Überschriften
    For $x = 2 to $A_Test[0][0]
        MsgBox(0, 'Bezahlt' , 'Zeile ' & $x & ' bezahlt: '  & $A_Test[$x][$Bezahlt])
        MsgBox(0, 'Bestellt', 'Zeile ' & $x & ' bestellt: ' & $A_Test[$x][$Bestellt])
        MsgBox(0, 'Preis'   , 'Zeile ' & $x & ' Preis: '    & $A_Test[$x][$Preis])
    Next

    Was passt an dem Zugriff auf die Daten nicht? Der ist equivalent zu deinem Beispiel:

    AutoIt
    For $x = 0 To 10
        If BitAND(GUICtrlRead($Checkbox[$x]),$GUI_CHECKED) Then
        MsgBox(0,"Check on/off","CheckBox " & $x & " ist on")
    Endif
  • Variable in Array-Namen möglich?

    • Moombas
    • 2. Oktober 2023 um 13:56

    Hi @kilo : Das würde einem Array im Array entsprechen (du speicherst bei den Checkboxen ja das Handle dessen in einem Array, ein Array selber hat aber kein Handle).

    Dazu aus der Hilfe:

    "Sie können ein Array in einem Array-Element (item) speichern. Denken Sie daran, dass es zu Problemen kommen kann, wenn Sie ein Array, das Arrays enthält, an eine Funktion übergeben und das eingebettete Array innerhalb dieser Funktion geändert wird. Versuchen Sie also generell, keine Arrays in Arrays einzubetten, es sei denn, Sie müssen dies unbedingt tun und sind bereit, strenge Tests durchzuführen, um sicherzustellen, dass Ihr Code immer wie erwartet funktioniert." (Übersetzung aus dem engl.)

    Daher denke ich ist die Variante mit dem 2D-Array, was ja von Kanashius gleich zu anfang vorgeschlagen wurde und ich weiter ausgearbeitet hatte als Beispiel, die scheinbar beste Lösung.

  • Linux Mint 21.2 "Victoria"

    • Moombas
    • 2. Oktober 2023 um 13:08

    Alina : Hast du dir das hier mal angeschaut: https://wiki.ubuntuusers.de/Archiv/Dell_Inspiron_1525/ ?

  • Variable in Array-Namen möglich?

    • Moombas
    • 2. Oktober 2023 um 13:04

    Das mag sein aber zum finalen Speichern gibt es ja auch _FileWriteFromArray (wenn es eine reine txt Datei sein soll), da bietet sich ein 2D Array durchaus an.

    Aber wie gesagt, da es dazu (noch) keine Infos gibt, wäre erstmal zu schauen wie es mit der Datenbechaffung aussieht. Wenn dann am Ende doch wieder ein XY-Problem sich herausstellt, hat zumindest der TE hoffentlich das ein oder andere noch dazu gelernt ;) (think positive! :D )

  • Variable in Array-Namen möglich?

    • Moombas
    • 2. Oktober 2023 um 10:54

    AspirinJunkie : Indem man dazu Lösungen präsentiert, wo es aktuell noch egal wäre wie er die Daten bekommt ;) Den teil habe ich pers. erstmal komplett übersprungen da ich mir dazu auch bisher keinen Reim machen konnte aber beim Erstellen/Füllen des 2D Arrays mit den entsprechend vorliegenden Daten schon.

    Aber um das Erfassen/Auslesen der Daten wirklich machen zu können, muss (wie von dir und Velted gefordert) ein Beispiel String/PDF (whatever) geliefert werden. Sonst ist ja jede Hilfe ein vermeintlicher Schuss ins Blaue ;)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™