AutoIT zu PHP ?

  • Naja ich möchte
    mit AutoIT Daten,2 Variablen,an mySQL senden...
    Also das Programm is auf dem PC und muss an sone free mySQL Datenbanke (funpic.de) senden ?
    und ich dachte das geht nur mit PHP als zwishcne schrit.
    aber scheinbar geht das auch ander.
    mir ist egal ob mit oder ohne PHP wenns denn geht

    MFG

  • Kommt auf den Server an wenn der übers Internet erreichbar ist dann sollte das gehen wenn nicht musst du halt über PHP gehen.

  • Ich glaube zwar das funpic keine aus dem Internet erreichbaren Server hat, aber für den Test lokal (XAMPP) geht das.

    [autoit]

    #include <Array.au3>
    #include <mysql.au3>

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

    _Login()
    Func _Login()
    ;~ mysql
    $UserName = "root"
    $Password = ""
    $Database = "login"
    $MySQLServerName = "localhost"
    $sColumn = "pw"
    $sColumn2 = "uname"
    $sTable = "user123"
    $SQLInstance = _MySqlConnect($UserName,$Password,$Database,$MySQLServerName)
    $sPrimeKey = 'ID'

    _CreateTable($SQLInstance, $sTable, $sPrimeKey);RUN ONLY ONCE !!! HAS TO BE COMMENTED OUT BEFORE RUNNING THE SECOND TIME
    _CreateColumn($SQLInstance, $sTable, $sColumn);RUN ONLY ONCE !!! HAS TO BE COMMENTED OUT BEFORE RUNNING THE SECOND TIME
    _CreateColumn($SQLInstance, $sTable, $sColumn2);RUN ONLY ONCE !!! HAS TO BE COMMENTED OUT BEFORE RUNNING THE SECOND TIME

    $value1 = 'eins'
    $value2 = 'zwei'
    $sQuery = 'INSERT INTO `' & $Database & '`.`' & $sTable & '` (`' & $sColumn & '`,`' & $sColumn2 & '`) VALUES ("' & $value1 & '","' & $value2 & '")'
    msgbox(0,'', $sQuery)
    _Query($SQLInstance, $sQuery)
    ;~ mysql end
    _MySQLEnd($SQLInstance)
    EndFunc

    [/autoit]
  • Also, wenn du es über funpic machen willst / musst, benötigst du PHP. aus Sicherheitsgründen ist hier der externe Zugriff wie bei den meisten Hostern gesperrt.
    Das ist jetzt eine vollständige sichere? PHP-Datei:

    Spoiler anzeigen


    Der Aufruf in AutOit ist so:

    [autoit]

    #include <inet.au3>
    $benutzer = _INetExplorerCapable("admin")
    $passwort = _INetExplorerCapable("admin")
    $ergebnis = _InetGetSource("http://localhost/benutzertest.php?benutzername=" & $benutzer & "&passwort=" & $passwort)
    $ergebnis = StringSplit($ergebnis,"|")
    If $ergebnis[0] = 1 Then
    MsgBox(0,"Fehler","Keine Antwort")
    ElseIf $ergebnis[1] = 0 Then
    MsgBox(16,"Fehler",$ergebnis[2])
    Else
    MsgBox(0,"OK",$ergebnis[2])
    EndIf

    [/autoit]
  • Ja, man müsste das passwort mit MD5 hashen und dann übertragen. MD5 mit AutoIt
    Das ist dann aber nicht so einfach. Am besten nimmt man auch eine SSL-verschlüsselte Verbindung und ein paar zusätzliche Passworte zum Verschlüsseln.

    Edit: Beim LogIn in Webseiten wird dein Passwort auch im Klartext übertragen, nur als POST. Das könnte der Proxy auch auslesen.)
    POST ist mit dem PHP-Skript auch möglich, nur im AutoIt-Skript wird das dann etwas aufwändiger, man müsste eine _InetGetSourcePost verwenden. (lässt sich am besten mit WinHTTP machen)

  • hm wenn man nen lokalen Webserver laufen hat könnte man von Autoit zum lokalen Get machen (weil einfach) und auf dem liegt dann ein PHP-Script das die Daten per Post ins Netz schickt (OK Proxy kanns lesen aber immerhin der DNS-Spoofer nicht mehr denk ich)

  • So, mit POST für AutoIt: Fehlerabfragen in der Funktion bitte noch einbauen. Das mach ich nicht mehr.

    Spoiler anzeigen
    [autoit]

    #include "WinHTTP.au3"

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

    #include <inet.au3>
    $benutzer = _INetExplorerCapable("admin")
    $passwort = _INetExplorerCapable("admin")
    $ergebnis = _INetGetSourcePost("http://localhost/benutzertest.php","benutzername=" & $benutzer & "&passwort=" & $passwort)
    $ergebnis = StringSplit($ergebnis,"|")
    If $ergebnis[0] = 1 Then
    MsgBox(0,"Fehler","Keine Antwort")
    ElseIf $ergebnis[1] = 0 Then
    MsgBox(16,"Fehler",$ergebnis[2])
    Else
    MsgBox(0,"OK",$ergebnis[2])
    EndIf

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

    ; Prog@ndy
    Func _INetGetSourcePost($URL,$PostData)
    $URL = _WinHttpCrackUrl($URL)
    Local $hw_open = _WinHttpOpen()
    Local $hw_connect = _WinHttpConnect($hw_open, $URL[2],$URL[3])
    Local $h_openRequest = _WinHttpOpenRequest($hw_connect, "POST", $URL[6]&$URL[7])
    If $URL[4] Then _WinHttpSetCredentials($h_openRequest, $WINHTTP_AUTH_TARGET_SERVER, $WINHTTP_AUTH_SCHEME_BASIC, $URL[4], $URL[5])
    _WinHttpSendRequest($h_openRequest,"Content-Type: application/x-www-form-urlencoded" & @CRLF,$PostData)
    _WinHttpReceiveResponse($h_openRequest)
    Local $recv=""
    Do
    $recv &= _WinHttpReadData($h_openRequest)
    Until @error <> 0
    _WinHttpCloseHandle($h_openRequest)
    _WinHttpCloseHandle($hw_connect)
    _WinHttpCloseHandle($hw_open)
    Return $recv

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

    EndFunc

    [/autoit]
  • Zitat

    Ja, man müsste das passwort mit MD5 hashen und dann übertragen. MD5 mit AutoIt
    Das ist dann aber nicht so einfach. Am besten nimmt man auch eine SSL-verschlüsselte Verbindung und ein paar zusätzliche Passworte zum Verschlüsseln.

    Aber selbst der MD5 ist nicht mehr sicher :(

    Ich kenne genügend seiten wo man MD5 hashes zu 80% wiederherstellen kann... :(

    Aber ich sag mal, eine 100% absicherung hat man sowiso nie, gerade nicht bei solchen schnittstellen... egal ob post oder get methode letztenendes lässt sich alles sniffen, wenn er einmal das passwort hat, egal ob verschlüsselt oder nicht, dann ist es nurnoch eine Frage der Zeit :(

    @progandy
    Das mit PHP funktionen ist schon ein großer Schritt :)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D