Webinhalt der nur per AutoIt aufrufbar ist?

  • Ist es möglich, eine Seite zu erstellen, die nur per AutoIt aufrufbar oder auslesbar ist? Z.b. für Passwörter etc.
    Ich nutze derzeit ein Abfrage mit .txt, das ist natürlich nicht so gut.

    Einmal editiert, zuletzt von kelevr (29. Januar 2014 um 12:35)

  • Nö. AutoIt macht schließlich auch nicht mehr, als HTTP Anfragen zu verschicken, genauso wie jeder Webbrowser. Du könntest aber die Passwörter in ein PHP Script packen, an das ein Parameter übergen wird, der die Anfrage von AutoIt als solche ausgibt. Aber auch die Mitgabe dieser Parameter (GET oder POST, wobei letzteres wohl geeigneter sein wird) lässt sich nachbauen.

  • Eine ganz einfache (und extrem unsichere) Methode wäre es, wenn du prüfen würdest ob der User-Agent "AutoIt" ist (was bei den Inet* Funktionen standardmäßig der Fall ist).

  • Sicherheit != Autoit.

    Eine Möglichkeit wäre das ein via Autoit einen entsprechendes Wert an ein PHP-Script übergibst und dieses dann wenn der Wert stimmt die Antwort liefert.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • chip den Wert kann aber wiederum auch jeder hans manuell eingeben; bleibt demnach genau so unsicher wie der User Agent

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Eine andere Möglichkeit (die aber bei Dekompilierung auch herzlich wenig bringt) ist, den Zugriff auf die schützenswerten Dateien einfach zuzulassen...
    Du verschlüsselst einfach den Inhalt (wir hatten letztens noch ein Beispiel zur XOR-Verschlüsslung).

    Optimal wäre, wenn du das Entschlüsslungs-Passwort nicht im Skript hinterlegen würdest, sondern jedes mal neu eingeben müsstest. Dann kann man dir auch per Dekompilieren nichts mehr.

    Gruß

  • Ich habe ihn so verstanden, dass es ein persönliches Tool ist, nur für seine Passwörter. ^^
    Also praktisch eine Passwort-Ablage.

    Sonst müsste man wohl eine Datenbank, verknüpft mit der HW-ID (oder IP) der Rechner auf dem Webspace erstellen, und damit irgendwie das Passwort verschlüsseln.

    Gruß

  • Also Verschlüsselung bei der Übertragung ist das A und O.
    Sei es per HTTPS (geht einfach über WinHTTP) oder wie Chesstiger schrieb über eine eigene Verschlüsselung. Dann kann ein zwischengeschalteter Proxyserver nicht schnüffeln. Aber gegen Decompilieren ist alles machtlos.

  • Speicher den gesalzen Whirlpoolhash deines Zugriffspasswords im PHP-Skript ab und sende eine POST-Request via HTTPS an dein PHP-Skript.
    Das Zugriffspasswort kannst du entweder "hardcoden" oder jedes mal beim Programmstart neu eingeben.


    Als Zusatzfeature könntest du dein Geheimnis auch verschlüsselt in der PHP-Datei speichern und mit dem Zugriffspasswort erst entschlüsseln.

    Widerstand ist Zwecklos!

    Meine Projekte: Kizzys Controller, 2nd Desktop und Versteckte Dateien Assistent
    Meine Downloadwebsite .

  • howdy

    der trick ist halt einfach das du den Server das Passwort nicht anzeigen lässt zum überprüfen sondern du schickst es dem Server und wenn es dem Server gefällt schickt er eine art session-id die dein Programm dann für eventuelle anfragen nutzen kann
    du kannst natürlich auch wie James schon geschrieben hat mit dem user-Agent arbeiten.. aber ich würd dir empfehlen das zusätzlich zu machen und nicht ausschließlich damit zu arbeiten.. das hätte dann die Sicherheitsstufe von nem gameboy

    mfg
    sgtigram

  • Schon [gelöst] aber hier noch eine Idee.

    Ich würd' den Inhalt der txt verschlüsseln.

    Das PW statt hardcoden durch eine Funktion generieren lassen welche Variablen als Input verwendet.
    Also einfach gesagt das PW verstecken.

    Simples Beispiel

    $PW = Hex(_Crypt_HashFile(@AutoItExe, $CALG_MD5)

    Das PW wäre also der MD5-Hash der kompilierten exe Datei d.h. nach dem kompilieren verschlüsselst du das txt File damit.
    Sucht einer im Code das PW kann es es nicht finden weil es nicht drin steht es wird zu Laufzeit berechnet.
    Findet jemand die Funktion und haut sie in ein Script bekommt er niemals das echte PW zurück somit sinnlos.
    Der Angreifer muss verstehen was die Funktion genau macht und dass nachmachen um das echte PW zu erhalten.
    Je komplizierter du die Funktion machst (können natürlich auch mehrere Funktionen sein) desto schwieriger wird dass für den Angreifer. Dazu sinnlose Namen verwenden oder besser irreführende Namen. Code der gar nix macht einfach um es komplizierter aussehen zu lassen . Verschachtelungen. Immer wahre/immer falsche Konstrukte etc.

    Auch interessant ist Code der nicht funktioniert der aber gar nicht ausgeführt wird im original Script.

    Beispiel:

    [autoit]


    #include <Crypt.au3>

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

    $PW = cryptPW(Hex(_Crypt_HashFile(@AutoItExe, $CALG_MD5)), "1337")

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

    Func cryptPW($PW, $SecretKey)
    If StringInStr($PW, BinaryToString(0x2E), 1) Then
    ;hier beliebigen Code rein der ein Fehler hervorruft z.b. komplizierte RegExp Pattern die kein Match erzeugen.
    ;Weil du weisst dass das PW bei korrektem Ablauf hier immer ein md5-Hash ist
    ;und somit nie ein "." (Punkt --> BinaryToString(0x2E)) enthält kann der Code gar nie ausgeführt werden.

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

    Return $PW
    Else
    ConsoleWrite("Debug: blabla" & @CR)
    SetError(3)
    Return $PW
    EndIf
    EndFunc ;==>cryptPW

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

    Exit

    [/autoit]

    Zum Schluss noch das PW kann während das Programm lauft aus dem RAM gelesen werden dagegen hilft alles nix.