Ergebnis 1 bis 10 von 10
  1. #1
    Fortgeschrittener
    Registriert seit
    26.10.2008
    Beiträge
    31

    Standard Imagecode in Bildumwandeln+Crypting sicher? (PHP)

    moin,

    ich hab mir einen kleinen crypter mit php gemacht. Also jetzt kein trojaner crypter etc sondern ein script, dass mir alle dateien verschlüsselt und ggf auf passwort anfrage den php code parst.

    Ich benutze die funktion mcrypt(); (hoffe kennt jemand) und ne gute verschlüsselung. Jetzt ist die frage kann der phpcode noch angefangen werden(vllt beim parsing prozess)? Also nicht der des encrypter selbst sondern der verschlüsselte php code, der dann mit exec(); ausgeführt wird. Theoretisch könnte man sich dann einen free hoster nehmen und die könnten den source nicht einsehen ohne passwort.
    Mir geht es darum das der verschlüsselte phpcode nach dem encrypten nicht mehr gelesen werden kann.

    Und noch ne frage: Ich habe z.B eine jpg,png etc verschlüsselt. Wie kann ich diese jetzt in einen script gleichzeitig enschlüsseln UND anzeigen, ohne die datei zwischen zu speichern?

  2. #2
    Neuling
    Registriert seit
    11.06.2009
    Beiträge
    1

    Standard

    Jetzt ist die frage kann der phpcode noch angefangen werden(vllt beim parsing prozess)?
    Ja, irgendwie muss der entschlüsselte PHP-Code ja auch ausgeführt werden. Allerdings glaube ich nicht das die Freehoster das speichern. Was aber auch ein Problem ist, ist dass das Passwort abgefangen werden könnte.

    Bilder würde ich vor der Verschlüsselung base64-kodieren, und später einfach dekodieren und ausgeben. Also entschlüsselter PHP-Code:
    PHP-Code:
    <?php 
    header
    ("Content-type: image/png");
    echo 
    base64_decode("<hier das base64 kodierte bild>");
    ?>

  3. #3

    Standard

    Zitat Zitat von Arnon77 Beitrag anzeigen
    Und noch ne frage: Ich habe z.B eine jpg,png etc verschlüsselt. Wie kann ich diese jetzt in einen script gleichzeitig enschlüsseln UND anzeigen, ohne die datei zwischen zu speichern?
    Also eine Möglichkeit:
    1. Bild via base64_encode() in Textform umwandeln und dann verschlüsseln
    2. Bild entschlüsseln, base64 decodieren und mit dem entsprechenden Header wieder ausgeben


    Zum Rest: Skripte die mit MMcache "bearbeitet" wurden können afaik nicht zurückumgewandelt werden (bzw. sehr schwer)
    Code:
    <?php
    
    echo "foo";
    
    ?>
    digitiert zu
    Code:
    <?mmcache_load("eJzz9XV2dPZwZWBiYGBgZABTYABjaDAyMwOptPx8O0ZGRqggAHjXA6o=");?>

    Mfg

    Chaos
    Geändert von 2called-chaos (11.06.2009 um 18:26 Uhr)
    Eine Regierung muß sparsam sein, weil das Geld, das sie erhält, aus dem Blut und Schweiß ihres Volkes stammt.
    Es ist gerecht, daß jeder einzelne dazu beiträgt, die Ausgaben des Staates tragen zu helfen. Aber es ist nicht gerecht, daß er die Hälfte seines jährlichen Einkommens mit dem Staate teilen muß.

    Friedrich II. der Große

  4. #4
    Fortgeschrittener
    Registriert seit
    26.10.2008
    Beiträge
    31

    Standard

    ah das mit base64 war mir neu! Danke sehr

    wie sieht es mit den passwort aus? speichert ein hoster normalerweise die request/get/post angaben? Meine Idee war ein menü zu machen und wenn man einen link anklick passiert erstmal nix. Sobald man die richtige verschlüsslungsmethode(mit mcrypt) gewählt und das passwort eingeben hat, soll der code mit exec(); ausgeführt werden(besser gesagt diesmal kann php was damit anfangen xD). Ich wollte keine cookies oder logins(htaccess) benutzen weil es 1. abgefangen werden kann und zweitens dann nicht mehr auch nicht-serverseitig sicher ist. Wenn mich jemand vom gegenteil überzeugen kann gerne^^


    @2called-chaos
    wie meinst du das mit mmcache eine einweg verschlüsselung ist ja nicht der sinn der sache^^ ich benutze momentan mcrypt(); und eine der sicheren verschlüsselungen.

  5. #5

    Standard

    Also die meisten Hoster loggen (afaik aber nur die Seiten nicht aber die Requests (also alles hinter dem ?))...
    exec() wirst du auf (fast) keinem Freehoster vorfinden...
    Und was spricht gegen eine Einwegverschlüsselung? Du hast die Sources bei dir als normale version liegen, lädst aber nur die mmcache version hoch (aber wie gesagt bin mir auch nicht sicher ob das einigermaßen sicher ist (und ob die Freehoster mmcache untersützen))...


    Mfg

    Chaos
    Eine Regierung muß sparsam sein, weil das Geld, das sie erhält, aus dem Blut und Schweiß ihres Volkes stammt.
    Es ist gerecht, daß jeder einzelne dazu beiträgt, die Ausgaben des Staates tragen zu helfen. Aber es ist nicht gerecht, daß er die Hälfte seines jährlichen Einkommens mit dem Staate teilen muß.

    Friedrich II. der Große

  6. #6
    Fortgeschrittener
    Registriert seit
    26.10.2008
    Beiträge
    31

    Standard

    nochmal ein nachschalg irgendwie mach ich was falsch, es geht nicht entweder es kommt "ٝ" raus oder mit header(); "Die Grafik konnte nicht angezeigt werden, weil sie fehler enthält":
    Code:
    <?php
        header("Content-type: image/png"); 
        $file="ext/blah.png";
        $crypt_src = file_get_contents($file);
        $src = crypter("VERSCHLÜSSELUNG", "blah", $crypt_src); //crypter ist ne eigene Funktion, die auch einwandfrei funktioniert!
        $src = trim($src); //Zeichen die an Ende dazu kommen werden entfernt
        echo base64_decode($src);
    ?>
    Was mache ich falsch?

    @2called-chaos
    naja wie soll das den funktionieren:
    verschlüsseln den phpcode, lade ihn hoch.
    Dann soll er geparst werden also mach ich wahrscheinlich ne umkehrfunktion. Aber dann kann sich 1. Jeder sofort den source dln und selber entschlüsseln und 2. ist es dann nicht eine einwegverschlüsselung.
    Oder hab ich was falsch verstanden? Also meiner meinung nach kann man(zumindest nach dem heutigen stand) nicht ein sicheres twofish oder aes passwort knacken also benutz ich das lieber. Und mit umkehrfunktion iss da nicht^^ zumindest ohne richtiges passwort
    Geändert von Arnon77 (11.06.2009 um 19:59 Uhr)

  7. #7

    Standard

    Du musst sich erstmal encoden bevor du sie decoden kannst... Das ist denke ich mal der Fehler... (also erst muss mal base64_encode irgendwo stehen und dann erst bas64_decode())

    Soweit wie ich das verstanden habe wird der Code in Bytecode (bzw. sowas ähnliches umgewandelt und der ist nicht so ohne weiteres wieder zurück umwandelbar)...
    Und MMcache führt den Bytecode dann aus (also ähnlicher Ablauf wie bei Java)...


    Also abfangen wird man das bestimmt können nur ob das jemand versucht und ob da der Aufwand den Nutzen ausgleicht ist fraglich...
    Also man könnte mit Sicherheit einen fake Interpreter einbauen der den Code nicht parst sondern einfach ausgibt oder in ne txt speichert nur wie gesagt: ob das den Aufwand lohnt?


    Mfg

    Chaos

    FYI: Bilder und andere Anhänge in Mails werden auch im base64 Format gesendet
    Eine Regierung muß sparsam sein, weil das Geld, das sie erhält, aus dem Blut und Schweiß ihres Volkes stammt.
    Es ist gerecht, daß jeder einzelne dazu beiträgt, die Ausgaben des Staates tragen zu helfen. Aber es ist nicht gerecht, daß er die Hälfte seines jährlichen Einkommens mit dem Staate teilen muß.

    Friedrich II. der Große

  8. #8
    Fortgeschrittener
    Registriert seit
    26.10.2008
    Beiträge
    31

    Standard

    ne das mit den encoden war mir schon klar^^
    hab es vor der verschlüsselung eingebaut. dann wird er erst verschlüsselt.
    danach benutze ich den code von oben, aber es kommen nur zwei zeichen oder eben dieser image error raus.
    Also vll findet noch jemand den fehler, denn ich hab wirklich keine ahnung warum es nicht geht. Doch eine vermutung hab ich. Könnte es sein das man probleme bekommt wenn man das bild mit base64_encode(); encoded und dann mit rijndael verschlüselt? Viellecht ist es einfach ein kodierungsproblem?

    also einen fake interpreter wird man aber schlecht hinkriegen, denn ob der geparst wird ist doch egal den parsen tut er immer^^
    ich nehm einfach so was in der art:
    Code:
    $crypt_src="<HIER IST DER PHP CODE>";
    $src = decrypter(blabla, $_POST[pass]);
    @exec($src);
    das bedeutet grob, dass der code immer entschlüsselt wird(es kommt dann halt müll raus, bei falschen pw). Wenn das pw falsch ist gibt es einen exec error, der nicht angezeigt wird wegen dem @, da es ja kein richtiger php code mehr ist. Selbst wenn man ihn entfernt steht da nur "parse error in exec();" oder so. Das heißt egal was man tut ohne pw wird weder richtig gespart noch der source preisgegeben. Somit ist der source code selbst, so wie die ausgeführte seite unentschlüsselbar. Es sei den PHP speichert den parse code zwischen, da bin ich mir nicht sicher.
    Geändert von Arnon77 (12.06.2009 um 14:09 Uhr)

  9. #9

    Standard

    Wieso zum Geier exec, meinst du eval?

    Und das hier funzt (kp was du da machst)...
    http://geekya.bplaced.net/www/crypt_test.php
    http://geekya.bplaced.net/www/crypt_test.phps (Source)


    Mfg

    Chaos
    Eine Regierung muß sparsam sein, weil das Geld, das sie erhält, aus dem Blut und Schweiß ihres Volkes stammt.
    Es ist gerecht, daß jeder einzelne dazu beiträgt, die Ausgaben des Staates tragen zu helfen. Aber es ist nicht gerecht, daß er die Hälfte seines jährlichen Einkommens mit dem Staate teilen muß.

    Friedrich II. der Große

  10. #10
    Fortgeschrittener
    Registriert seit
    26.10.2008
    Beiträge
    31

    Standard

    habs jetzt auch hingekriegt hab wohl doch was mit den parametern in der funktion verwecheslt^^

    und natürlich meinte ich eval, sorry vertauscht

    danke für die hilfe jetzt kann ich weiter daran arbeiten!

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •