Laden...

Decrypt Images im WebBrowser Control

Erstellt von armin604 vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.588 Views
A
armin604 Themenstarter:in
5 Beiträge seit 2008
vor 15 Jahren
Decrypt Images im WebBrowser Control

Hallo!

Wir benutzen in unserer Windows-Forms Anwendung das WebBrowser Control um aus XML generierte HTML Seiten anzuzeigen.

In Zukunft sollen alle Daten verschlüsselt vorliegen.
Für die XML Dateien macht das kein Problem. Wir laden die verschlüsselten Dateien, entschlüsseln Sie und geben das entschlüsselte und transformierte HTML an das WebBrowser Control. Ein etwar so:

mshtml.IHTMLDocument2 htmlDoc = (mshtml.IHTMLDocument2)webBrowser.Document;
htmlDoc.writeln(decryptedTransformedXML.ToString());

Das Problem ist jedoch, dass auch die im HTML eingebundenen Bilder nun verschlüsselt vorliegen. Gibt es eine Möglichkeit die Bilder ebenfalls für die Anzeige im Speicher zu entschlüsseln, ohne Sie temporär auf dem Dateisystem abzulegen?

Gruß,
Armin

915 Beiträge seit 2006
vor 15 Jahren

Hallo armin6004,

mit folgenden Beispiel kannst du z.b. ein Bild über einen BinaryFormatter herstellen.
Vermute stark das nach deiner Verschlüsselung dieser in Binärer Form vorliegt. Wenn nicht, ändert sich ja nur der Einlesevorgang vom Stream. Das Beispiel zeigt daher eine Möglichkeit von vielen auf.



string icon = "AAEAAAD/////AQAAAAAAAAAMAgA..." // wäre in wirklichkeit sehr lange

 private Icon DeserializeIconFromBase64Text(string text)
    {
        Icon img = null;
        byte[] memBytes = Convert.FromBase64String(text);
        IFormatter formatter = new BinaryFormatter();
        MemoryStream stream = new MemoryStream(memBytes);
        img = (Icon)formatter.Deserialize(stream);
        stream.Close();
        return img;
    }

Du kannst vor "Convert.FromBase64String" natürlich ganz normal deinen entschlüsselungsalgorithmus reinbauen 🙂

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo armin604,

Gibt es eine Möglichkeit die Bilder ebenfalls für die Anzeige im Speicher zu entschlüsseln, ohne Sie temporär auf dem Dateisystem abzulegen?

nein, jedenfalls keine, die mit dem IE funktioniert. Andere Browser können als base64 codierte Bilder direkt aus dem HTML-Code darstellen. Siehe Inline-Grafiken in HTML.

Hallo Andreas.May,

dein Ansatz funktioniert hier nicht, weil man das erstellte Bild ja nicht aus dem HTML-Code referenzieren kann.

herbivore

915 Beiträge seit 2006
vor 15 Jahren

Ups.. daran hatte ich nicht gedacht.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

A
armin604 Themenstarter:in
5 Beiträge seit 2008
vor 15 Jahren

Vielen Dank für deine Antwort Herbivore!

Ich habe eben den Link aus deinem Posting ausprobiert. Mit dem Firefox geht es mit dem IE 6 nicht.

Kennst du alternative Möglichkeiten oder hast du irgendeine Idee, wie man so etwas aus einer Windows-Forms Anwendung heraus bewerkstelligen könnte?

Armin

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo armin604,

wenn es sehr einfaches HTML ist, könnte man versuchen, Text und Bilder selber zu zeichnen. Ansonsten sehe ich da wirklich ziemlich schwarz.

herbivore

915 Beiträge seit 2006
vor 15 Jahren

Hrm, kann man nicht versuchen anhand von Regex die Tags auszulesen?

<img src="<AAEAAAD....>" alt="Tanzmaus">

Und eben <Source.png> den darin enthaltenen string umzustellen (wie BSP von mir) und im Anschluss das Bild in einen passenden Ordner reinspeichern (wenn Server, dann halt Serverpfad). Und den Pfadnamen hinterlegt wie eine eindeutige Nummer oder irgend ein zusammengebauter Namen wie das typische .\Sourcefolder\Bild1.jpg als Source verwendet? - Klar kostet halt Zeit und performance aber wäre denke ich ein Weg.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Andreas.May,

klar kann man machen. Aber das ist nicht gewünscht:

Gibt es eine Möglichkeit die Bilder ebenfalls für die Anzeige im Speicher zu entschlüsseln, ohne Sie temporär auf dem Dateisystem abzulegen?

Der Hintergrund ist ja, dass es um ursprünglich verschlüsselte Daten geht, deren entschlüsselte Version nicht auf die Platte soll.

herbivore

915 Beiträge seit 2006
vor 15 Jahren

Hrm, und wenn man versucht das mit einen Webbrowserplugin zu koppeln der die Bilder eben naja (leider) temporär im Speicher hällt, oder vielleicht sogar in dessen eigenen Resource und nach beendigung des Browsers wiederum den Speicher / Resource leert.

Natürlich wirds dann schon ziemlich Aufwendig und auch bis die Seite sich aufbaut dauerst dann evtl. seine Zeit. Einen Tod wird man sterben müssen.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

A
armin604 Themenstarter:in
5 Beiträge seit 2008
vor 15 Jahren

Hallo!

Ich habe nun eine Möglichkeit entdeckt, wie man die Problematik evtl. lösen könnte.

http://www.codeproject.com/KB/aspnet/AspxProtocol.aspx

Es gibt Möglichkeiten ein eigenes Protokoll einzuführen. Damit könnte es möglich werden, im der HTML Seite Dinge wie

<img src="decrypt://test.png">

zu schreiben.

Armin