Anmeldung bei OpenVPN automatisieren

  • Hallo!

    Ich habe heute zum ersten Mal seit langem wieder mit AutoIt experimentiert, weil ich die für mich sehr häufig notwendige Eingabe von Benutzernamen und Passwort in den OpenVPN GUI automatisieren möchte.
    Mit den Beispielen und Google bin ich nun zu einem Skript gekommen, das meiner Meinung nach funktionieren müsste - tut es aber nicht.

    Code
    while true 
    if WinExists("OpenVPN - User Authentication") then 
    WinActivate("OpenVPN - User Authentication") 
    Send("username{Tab}password{ENTER}") 
    exit 
    endif 
    Sleep(1000) 
    WEnd


    Ich möchte also prüfen, ob das Fenster "OpenVPN - User Authentication" existiert - wenn nicht, 1 Sekußnde Pause und von vorne.
    Wenn das Fenster existiert, soll es aktiviert werden. Da dann - davon gehe ich zumindest aus - schon das Benutzername-Feld aktiv ist (der Cursor steht jedenfalls darin) müsste es ja genügen, Benutzernamen, Tab, Passwort und Enter zu senden.
    So viel zur Theorie. Tatsächlich wird zwar das Fenster aktiviert, doch von meinen Eingaben sehe ich rein garnichts. Es wird weder Benutzername noch Passwort eingegeben, auch die andere Zeile wird nicht angewählt oder Enter gedrückt.
    Kann mir jemand helfen und mir verraten, was ich falsch mache?

    Vielen Dank und Gruß,

    Claudius

    PS: Bin ich der Einzige, dem Opera (10.63 unter Windows 7 64Bit) bei der Beitrags-Vorschau immer abstürzt?

    Einmal editiert, zuletzt von Claudius L (7. Dezember 2010 um 15:20) aus folgendem Grund: Wie kam ich auf die irrsinnige Idee zu schreiben, ich würde Vista benutzen?

  • eigentlich müsste es gehen.

    schau mal ob das beepen kommt. falls nicht liegts nur am send / controlsend... evtl falsche parameter

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

    $windwoname = "OpenVPN - User Authentication"
    Do
    $hwindow = WinExists($windwoname)
    if $hwindow = 1 then
    Beep(3333)
    WinActivate($windwoname)
    ControlSend($windwoname, "", 0, "username{Tab}password{ENTER}")
    ;Send("username{Tab}password{ENTER}")
    endif
    Sleep(1000)
    Until $hwindow = 1

    [/autoit]
  • Danke für deine Antwort!
    Das Beep höre ich, sobald das "gesuchte" Fenster existiert. Eingegeben wird trotzdem nichts ...
    Die (meiner Meinung nach) passende Control-ID anstatt der von dir verwendeten 0 habe ich auch eingetragen.
    Gibt's noch andere Vorschläge? :)

  • :rofl:

    Zitat


    wo finde ich die software ? - ich hab nur den client entdeckt

    Client/Server ist die gleiche Software die config macht den Unterschied.
    Ich würde mir mal Gedanken über Zertifikate machen. Also generieren und nutzen.
    Dann brauchst Du kein Kennwort und alles andere ist eeh Kindergarten.

    imho funktioniert die Kennwort Geschichte nur bei 1:1 Verbindungen, also 1:n erfordert eine komplett andere Config nix mit "static key"

    http://www.linuxforen.de/forums/showpost.php?p=1193434&postcount=4
    http://wiki.openvpn.eu/index.php/Erze…PKI_mit_EasyRSA
    usw.

    Gruß Dietmar

    Des Weiteren ist es keine gute Idee Kennwörter in autoIt Scrikten zu hinterlegen, da man da wieder rankommt ;(
    Gerade dann wenn es (z)um Eingang in das eigene Netz geht. Autostart des Tunnels geht auch als Dienst so weit ich weiß aber nur mit Zertifikaten.
    Das ist auf jeden Fall simpler als man denkt und kann man jedem empfehlen sich die 1/2 Stunde Zeit zu nehmen um das zu verstehen und anzuwenden.

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

    Einmal editiert, zuletzt von Dietmar (7. Dezember 2010 um 14:34)

  • Hallo!
    Das GUI kannst du z.B. bei heise.de herunterladen.
    Allerdings fürchte ich, brauchst du erstmal eine Konfigurationsdatei, damit du nach einem Passwort gefragt wirst. Dafür müsstest du im Installationsverzeichnis\config die Datei test.ovpn erstellen. Dort folgendes einfügen (ist die Konfiguration von mir und vermutlich nur hier lauffähig, aber nach den Zugangsdaten solltest du gefragt werden):

    Spoiler anzeigen


    Danach müsstest du - wenn das GUI läuft in der Systemtray einen Rechtsklick darauf machen können, "test" und dann "Connect" wählen. Dann kommt wenn alles gut läuft das erhoffte Loginfenster.
    Vielen Dank schonmal, dass du versuchst, mir zu helfen!

  • @claudius
    jeder der Dir hilft Dein Problem zu lösen hilft Dir nicht wirklich auch wenn es so scheint.
    Befass Dich da richtig mit und dann geht das alles ohne zutun und sicherer / flexibler obendrein.

    Gruß Dietmar

    btw wenn einer nen Script sucht für gentoo openvpn Installation auf ner Activy o.ä.
    install mit make makeinstall und Zertifikate hinterlegen in 5 Minuten, einfach hier schreien. :D und starten tuts natürlich auch automatisch

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

    Einmal editiert, zuletzt von Dietmar (7. Dezember 2010 um 14:42)

  • Dietmar: Tut mir leid, ich wollte dein Posting vorher nicht übergehen, sondern eigentlich WhiteLion antworten. Wie du vielleicht siehst liegen unsere Posts nur 4 Minuten auseinander - dass du dazwischen noch geschrieben hattest, war mir entgangen.

    Zum Thema: Ob hier nun Zertifikate angebracht wären oder nicht und in welchen Fällen welche Art der Verbindung funktioniert ist hier unerheblich, weil ich daran nichts ändern kann. Das VPN ist nicht von mir eingerichtet und dass das so konfiguriert ist, ist nicht meine Idee - und ich kann nichts daran ändern. Die Sache ist die, dass ich hier in einem Studentenwohnheim sitze und über das Rechenzentrum aufs Internet zugreife. Dafür muss aber - das vom Rechenzentrum administrierte - VPN verwendet werden. Und das Rechenzentrum verlangt nunmal einen static key und Passworteingabe und kein Zertifikat von mir ...
    Dass das Speichern von Passworten in Klartext auf dem eigenen Rechner ein Sicherheitsrisiko darstellt, ist mir bewusst. Allerdings glaube ich, das Risiko einschätzen zu können und nehme es in Kauf.

  • Applaus was sitzen denn da für pseudoadmins in eurem RZ :)
    Aber wieso siehst du denn den Anmeldedialog, dann kannst Du das Kennwort doch auch in die Config schreiben und rufsst openvpn entweder mit dem Profil alas Parameter auf.
    Oder Du benennst die die config so das es die default ist und der Aufruf ohne Paramter funktioniert.
    Ich nutze es eigentlich nur unter Linux also Kommandozeile nix Anmeldedialog.
    Bevor ich die Zertifikate hinterlegt hatte war es auch mit nem static Key konfiguriert und das klappte auch ohne nachfragen/Kennwort anfordern ?(

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Applaus was sitzen denn da für pseudoadmins in eurem RZ :)


    Ja, das könnte ich dir gerne beantworten ...

    Wenn ich dir was von unserer Proxykonfiguration hier erzählen würde, würdest du dir erst recht an den Kopf fassen. Aber damit muss man halt leben. ;)

    Aber wieso siehst du denn den Anmeldedialog, dann kannst Du das Kennwort doch auch in die Config schreiben [...]

    Die Idee hatte ich auch schon, aber: "Tue Dec 07 14:12:11 2010 NOTE: --user option is not implemented on Windows"

    Unter Linux wäre das ja kein Ding, aber ich sitz hier an Windows 7. Deshalb bin ich ja bei AutoIt gelandet.

  • http://openvpn.net/index.php/open…mini-howto.html

    Zitat

    Client configuration file

    remote myremote.mydomain
    dev tun
    ifconfig 10.8.0.2 10.8.0.1
    secret static.key

    so was im Prinzip reicht ja und der Key sthet in einer sep .Datei.
    Das sollte auch unter Windows klappen.
    Unter Linux braucht man das hier zusätzlich..

    Zitat

    Run OpenVPN as a daemon (Linux/BSD/Solaris/MacOSX only)

    Run OpenVPN as a daemon and drop privileges to user/group nobody.

    Add to configuration file (client and/or server):

    user nobody
    group nobody
    daemon

    Das sollte man unter Win eigentlich weglassen können.

    Zitat

    Windows

    The Windows installer will set up a Service Wrapper, but leave it turned off by default. To activate it, go to Control Panel / Administrative Tools / Services, select the OpenVPN service, right-click on properties, and set the Startup Type to Automatic. This will configure the service for automatic start on the next reboot.

    When started, the OpenVPN Service Wrapper will scan the \Program Files\OpenVPN\config folder for .ovpn configuration files, starting a separate OpenVPN process on each file.

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Hallo!
    Danke dir für deine Bemühungen, aber das ist keine Alternative. Ganz egal, was mit OpenVPN im Prinzip möglich ist, es ist ganz klar, welches Prozedere vom Rechenzentrum von mir gefordert wird. Die brauchen meinen Nutzernamen um mich zuordnen zu können und eine Authentifikation per Passwort. Da unter Windows der OpenVPN GUI die -user Option nicht unterstützt, kann ich den Benutzernamen nicht in der Konfiguration hinterlegen. Und das Hinterlegen eines Passworts in der Konfiguration ist soweit ich weiß aus Sicherheitsgründen prinzipiell nicht möglich.
    Daher - suche ich eine Lösung mit AutoIt (oder etwas vergleichbares, falls nötig).

    Schönen Abend noch ...

  • So, ich fasse nochmal zusammen - vielleicht fällt ja doch noch jemandem etwas ein ...

    Mein Ziel ist, in zwei Eingabefelder Text (Benutzernamen und Passwort) einzugeben. Das Eingabefeld sieht so aus wie hier unter der Überschrift "Aufbau einer OpenVPN-Verbindung" im dritten Bild zu sehen.
    Andere Möglichkeiten zur Autentifizierung (z.B. per Zertifikat oder durch Hinterlegung der Zugangsdaten in der Konfugurationsdatei des Programms) stehen mir nicht zur Verfügung und ich kann an dem Mechanismus auch nichts verändern. Die Sicherheitsrisiken sind mir bewusst.
    Daher versuche ich, mit Hilfe von AutoIT die Zugangsdaten automatisiert in das Login-Fenster zu schreiben. Mein erster Versuch (siehe erstes Posting), der laut WhiteLion eigentlich auch funktionieren müsste, funktioniert in der Praxis nicht; es wird kein Text eingegeben. Auch die Version von WhiteLion habe ich getestet; dort wird das Fenster zwar aktiviert, doch die Eingabe erfolgt nicht.

    Hat vielleicht noch jemand einen Vorschlag, wie ich das Problem lösen könnte?

  • Das Eingabefeld sieht so aus wie hier unter der Überschrift "Aufbau einer OpenVPN-Verbindung" im dritten Bild zu sehen.

    Der Link funktioniert bei mir nicht.
    Kannst du Screenshots des Fensters und der beiden Eingabefelder der mit AU3Info ermittelten Werte einstellen,

    mfg autoBert

  • Der Link funktioniert bei mir nicht.


    Oh, Mist, dann funktioniert der Link nur vom Uninetz aus.

    Kannst du Screenshots des Fensters und der beiden Eingabefelder der mit AU3Info ermittelten Werte einstellen

    Klar; vor dem angehängten Screenshot habe ich das Finder Tool auf das Eingabefeld für Username gezogen. Entsprechend habe ich auch den Parameter für ControlSend gesetzt:

    [autoit]

    ControlSend($windowname, "", 181, "username")

    [/autoit]

    Das komplette Skript sieht so aus:

    Spoiler anzeigen
    [autoit]

    $windowname = "OpenVPN - User Authentication"
    Do
    $hwindow = WinExists($windowname)
    if $hwindow = 1 then
    Beep(3333)
    WinActivate($windowname)
    ControlSend($windowname, "", 181, "username")
    ;ControlSend($windwname, "", 181, "username{Tab}password{ENTER}")
    ;Send("username{Tab}password{ENTER}")
    endif
    Sleep(1000)
    Until $hwindow = 1

    [/autoit]

    Das Beep höre ich, der Text "username" wird nicht eingegeben.

    Gruß,

    Claudius

  • Ich hätte das ganze so probiert:

    Spoiler anzeigen
    [autoit]

    $windowname = "OpenVPN - User Authentication"
    $User = "Nobody"
    $Pwd = "geheim"
    $i = 0
    Do
    $hWnd = WinWaitActive($windowname,"",1000) ;wartet 1 Sekunde bis das Fenster aktiv ist
    if $hwnd <> 0 Then
    Beep(3333)
    ControlSetText($windowname,"",181,$User)
    ControlSetText($windowname,"",182,$Pwd) ;ControlID überprüfen
    ControlClick($windowname,"",183) ;ControlID überprüfen
    EndFunc
    $i += 1
    ConsoleWrite("Versuch: " & $i & @CRLF)
    until $hWnd <> 0 or $i > 10 ;eventuel anpassen

    [/autoit]

    da ich aber keine Fenster zu automatisieren habe, gibt es sicher User mit mehr Erfahrung.

    mfg autoBert

    mfg autoBert

  • oder so

    [autoit]

    $windwoname = "OpenVPN - User Authentication"
    Do
    $hwindow = WinExists($windwoname)
    if $hwindow = 1 then
    Beep(3333)
    WinActivate($windwoname)
    ControlSend($windwoname, "", "Edit1", "username{Tab}")
    ControlSend($windwoname, "", "Edit2", "123456{ENTER}")
    endif
    Sleep(1000)
    Until $hwindow = 1

    [/autoit]