XSIPS XenSimpleStega Encoder + Decoder (Steganographie)

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
_ZOMTEX_
Beiträge: 41
Registriert: 29.08.2004 06:30
Wohnort: BW
Kontaktdaten:

XSIPS XenSimpleStega Encoder + Decoder (Steganographie)

Beitrag von _ZOMTEX_ »

Erst mal Guten Tag,

nun ich möchte hier ein kleines Projekt vorstellen und auch mit Euch ein bischen über dieses Thema (siehe Title) diskutieren und philosophieren.
Eigentlich wollte ich es in die Kategorie "Theorie und Konzeption" einstellen, nun leider gibt es diese Kategorie nicht mehr. Da es sich letztendlich um ein Programm handelt, stelle ich es mal hier rein. Wenn einer meint, dass es hier nicht reinpasst, kann er es ja verschieben.

Nun es geht hier um das Thema "Steganographie"

Nun werden vielleicht nicht alle was das ist. Darum zitiere ich mal die
Einleitenden Worte aus der "Wikipedia"
...das Wort "Steganographie" kommt aus dem Griechischen und heißt übersetzt "verborgenes Schreiben". Sie wird oft definiert als "die Kunst und Wissenschaft der Kommunikation auf einem Weg, welcher die Existenz der Nachricht verbirgt". Somit ist Sinn und Zweck die "Vertuschung" von Informationen. Die Sicherheit einer geheimen steganographischen Botschaft liegt also darin, dass dem Angreifer die Existenz einer solchen nicht auffällt...
Wer das weiter lesen möchte kann dort nachsehen:

http://de.wikipedia.org/wiki/Steganographie

Ich habe mich die letzten Tage aus einem inneren Drang heraus damit auseinandergesetzt. Ich lag mal ziehmlich nachdenklich in meinem Bett
und dachte über Bilder nach. Da kam mir der Gedanke "Verstecken von Informationen in Bildern". Irgendwie dachte ich über Wasserzeichen und digitale Signatur nach. Das hat mich so sehr beschäftigt, das ich nicht einschlafen konnte. Und habe dann in meinem Kopf ein Verfahren entwickelt, Informationen auf relativ einfache Art in Bildern zu verstecken.
Erst dachte ich und dabei war ich richtig euphorisch, ich hätte etwas endeckt, was irgendwie neu war, jedenfalls kam mir das so vor. Also mußte ich unbedingt ein Programm dazu schreiben. Es ließ mich einfach nicht los. Ich bin davon überzeugt, dass meine Methode ziemlich sicher ist und nicht geknackt werden kann, auch wenn das Verfahren bis ins kleinste Detail der Öffentlichkeit bekannt ist. Vielleicht belehrt mich jemand eines besseren. Wenn ich von "sicher" spreche meine ich damit, dass es nicht möglich ist die Information aus dem "Informationsträgerbild" zu extrahieren ohne das "Originalbild" zu besitzen. Was ich hier eingestehen muß, die Information ist nicht gegen Zerstöhrung geschützt. Aber das könnt Ihr weiter untern in der Beschreibung nachlesen. Und vielleicht können wir das Verfahren dahingehend gemeinsam verbessern. Vielleicht hat auch jemand noch ganz andere Ansätze dafür. Jedenfalls möchte ich zunächst meine Methode hier vorstellen. Zusätzlich meine beiden Programme, die ich mit genau dieser Methode in einem Bild versteckt habe. :D :D :D

Das "Originalbild" und das "Informationsträgerbild" werde ich hier zur Verfügung stellen und Euch dazu animieren die Zip-Datei
in diesem Bild mit Hilfe meines Verfahrens, was ich weiter unten beschreiben werde zu extrahieren. In der Zip-Datei sind dann die beiden Programme zum "verstecken - Encoding" und "extrahieren - Decoding".

Zusatzlich werde ich noch ein "Informationsträgerbild" zur Verfügung stellen. Und ich bin mir ziehmlich sicher, das die enthaltene Information
keiner extrahieren oder knacken kann :D :D :D
Wenn es jemand schafft, Hut ab! Und ich sehe ein, dass mein Methode nicht sicher ist. Der jenige muß mir nur sagen was in der dort enthaltenen Textdatei geschrieben steht. Und es wäre schön, wenn er uns hier erzählt wie er es geschafft hat. Aber ich behaupte mal, es gibt keine Chance!

So jetzt kommt ein beschreibender Text zur Methode und dann die Bilder:

Code: Alles auswählen

                                        ### XSIPS XenSimpleStega ###
                  			            -- (c) 2005 by xensonsoft --

                                -- Informationen in einem PNG-Bild verstecken --


1. Was ist ein digitales Bild?

Ein digitales Bild setzt sich aus einzelnen Bildpunkten zusammen (Pixel).
Somit kann ein Bild z.B. eine Abmessung von 1024 x 1024 Bildpunkten (Pixel) haben. Jeder einzelne
Pixel setzt sich wiederum aus den drei Grundfarben R (Rot), G (Grün) und B (Blau) zusammen.
Jede Grundfarbe kann einen Wert zwischen 0 (kein Farbanteil) und 255 (maximaler Farbanteil) annehmen.
Jeder Farbanteil läßt sich somit in genau einem Byte unterbringen.
Pro Pixel werden also für die Farbinformation 3 Bytes benötigt.
Die Kompination aus diesen drei Werten nehmen wir dann als eine bestimmte Farbe wahr.
Ein Pixel wird also folgendermaßen beschrieben:

Definition seiner Position:
z.B.: x = 0, y = 0
Definition seiner Farbe:
z.B.: R = 255, G = 255, B = 255 (weiß)

                Schemaaufbau eines digitalen Bildes mit 4 x 4 Pixeln:

.|-----------------|..|-----------------|..|-----------------|..|-----------------|.
.|  x = 0 , Y = 0  |..|  x = 1 , Y = 0  |..|  x = 2 , Y = 0  |..|  x = 3 , Y = 0  |.
.|  R     G     B  |..|  R     G     B  |..|  R     G     B  |..|  R     G     B  |.
.|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|.
.| 000 | 128 | 064 |..| 000 | 128 | 064 |..| 000 | 128 | 064 |..| 000 | 128 | 064 |.
.|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|.

.|-----------------|..|-----------------|..|-----------------|..|-----------------|.
.|  x = 0 , Y = 1  |..|  x = 1 , Y = 1  |..|  x = 2 , Y = 1  |..|  x = 3 , Y = 1  |.
.|  R     G     B  |..|  R     G     B  |..|  R     G     B  |..|  R     G     B  |.
.|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|.
.| 064 | 128 | 064 |..| 064 | 128 | 064 |..| 064 | 128 | 064 |..| 064 | 128 | 064 |.
.|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|.

.|-----------------|..|-----------------|..|-----------------|..|-----------------|.
.|  x = 0 , Y = 2  |..|  x = 1 , Y = 2  |..|  x = 2 , Y = 2  |..|  x = 3 , Y = 2  |.
.|  R     G     B  |..|  R     G     B  |..|  R     G     B  |..|  R     G     B  |.
.|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|.
.| 032 | 128 | 064 |..| 032 | 128 | 064 |..| 032 | 128 | 064 |..| 032 | 128 | 064 |.
.|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|.

.|-----------------|..|-----------------|..|-----------------|..|-----------------|.
.|  x = 0 , Y = 3  |..|  x = 1 , Y = 3  |..|  x = 2 , Y = 3  |..|  x = 3 , Y = 3  |.
.|  R     G     B  |..|  R     G     B  |..|  R     G     B  |..|  R     G     B  |.
.|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|.
.| 000 | 128 | 100 |..| 000 | 128 | 100 |..| 000 | 128 | 100 |..| 000 | 128 | 100 |.
.|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|.



2. Wie können Informationen in einem Bild versteckt werden, ohne dass sie bemerkt werden?

In der Natur gibt es das sogenanntes Phänomen des Rauschens oder der Unschärfe, bei dem ein Zustand
niemals eindeutig definiert werden kann. Dennoch empfinden wir diese Zustände als eindeutig, das Rauschen einer
Information nehmen wir hierbei gar nicht war. Es unterliegt einem Tolleranzbereich den wir
immer als gleichen Informationsgehalt ansehen werden. Erst wenn der Tolleranzbereich verlassen wird, können
wir überhaupt erst einen unterschied feststellen. In der analogen Natur ist uns das Rauschen immer gegenwärtig.
Bei der digitale Informationsverarbeitung stellt das Rauschen allerdings ein Problem dar. Informationen müssen
100% eindeutig sein und dürfen keinen Tolleranzschwankungen ausgesetzt sein. Als kleinste Informationseinheit in der
digitalen Welt kennen wir das BIT. Es kann nur zwei Zusände annehmen 0 oder 1 (Strom an oder Strom aus). Diese zwei
Zustände sind eindeutig definiert und können nur mit Hilfe von mathematischen Algorythmen oder Prüfsummenverfahren
sichergestellt werden. Eine digitale Information, welche z.B. ein einzelnes Zeichen beschreibt bestehet aus einer
Anordung von 8 BITs (einem Byte). Der Buchstabe 'A' wird als 01000001 in BIT-Darstellung beschrieben. Würde diese
BIT-Folge einem Rauschen unterliegen und nur ein einzelnes BIT seine Wertigkeit verändern, könnten wir kein 'A' mehr erkennen
und ein ganz anderes Zeichen wäre erkennbar. Wir kippen nun z.B. das vorletzte BIT (01000001 --> 01000011) und aus
dem 'A' wird nun ein 'C'. Wir sehen sehen also, dass wir in der digitalen Informationsverarbeitung absolut kein Rauschen
gebrauchen können. Bei unserem Vorhaben, Informationen in einem Bild zu verstecken, machen wir uns allerdings das Rauschen
zu Nutze. Da ein Bild vom Betrachter immer "analog" verarbeitet wird. Spielt es für ihn überhaupt keine Rolle
ob die einzelnen Pixel einer Unschärfe oder einem Rauschen in ihrer Farbzusammensetzung ausgesetzt sind. Es hat für den
Betrachter überhaupt keine erkennbare Auswirkung auf das Bild. Es ist also z.B. völlig egal, ob der Pixel so

.|-----------------|.
.|  x = 0 , Y = 0  |.
.|  R     G     B  |.
.|-----|-----|-----|.
.| 000 | 128 | 064 |.
.|-----|-----|-----|.

oder so

.|-----------------|.
.|  x = 0 , Y = 0  |.
.|  R     G     B  |.
.|-----|-----|-----|.
.| 001 | 127 | 063 |.
.|-----|-----|-----|.

aussieht. Wenn diese Schwankungen der Farbinformationen in einem gewissen Tolleranzbereich bleiben, macht es für den
Betrachter keinen unterschied. Auch wenn er beide Bilder gegenüberstellt wird er keinen "sichtbaren" unterschied feststellen
können. Mit dieser Erkenntnis werden wir also nun unsere Informationen im Rauschen der Farbe verstecken. Dazu müssen wir
uns ein geeignetes Verfahren überlegen, schließlich soll die Information später auch wieder extrahiert werden können.
Wir sprechen jetzt hier immer vom "Originalbild", in dem wir unsere Informationen verstecken werden und dem daraus
resultierenden "Informationsträgerbild". Um die Information später überhaupt wieder sichtbarmachen zu können, benötigt
man zwingend das "Originalbild". Es gibt "meines Wissens" ohne dieses Original keine Möglichkeit
die Information zu extrahieren. Sie wird dann immer im Rauschen der Farbe verborgen bleiben. Auch wenn eins der beiden Bilder
"Originalbild" oder "informationsträgerbild" in irgendeiner Form Veränderungen ausgesetzt wird, sei es durch
verlustbehaftet Kompression oder Änderung der Abmessungen, Vergrößerungen oder Verkleinerung des Bildes,
ist es unmöglich die Information zu extrahieren. Also bitte die Bilder niemals verändern!!
Das "Originalbild" dient als Vorlage für das "Informationsträgerbild". In das "Originalbild" wird Rauschen eingearbeitet
und letztendlich als "Informationsträgerbild" gespeichert. Zur Informationsextrahierung wird das "Originalbild" benötigit
um das Rauschen filtern zu können, in dem die Informationen steckten, das Rauschen ist zozusagen unser
Information, die wir ohne das "Originalbild" nicht bemerken, geschweigedenn extrahieren könnten.

Nun gehen wir folgendermaßen bei der Einbettung unserer Informationen in das "Originalbild" vor. Wir nehmen z.B. eine
Textdatei mit Ihalt als unsere "Quellinformation". Die Textdatei wird Byte für Byte durchgearbeitet, bis das Ende
erreicht ist. Jedes Byte, das wir aus ihr ermitteln, zerlegen wir in seine einzelnen BIT-Bestandteile. Was uns
pro Byte jeweils 8 BIT beschehrt. Nun gehen wir jedes BIT einzeln durch. Gleichzeitig gehen wir durch unser "Originalbild"
und ermitteln für jeden Pixel (beginnent bei x = 0, y = 0 und endend bei x = xn, y = yn) von links nach rechts, nächste Zeile
usw. den Farbwert und zerlegen ihn in seine Gundfarben (RGB). Pro Farbwert speichern wir jeweils immer 2 BIT ab. Und zwar
eines im Farbanteil R (Rot) und eines im Farbanteil B (Blau). Was wir mit Farbanteil G (Grün) machen, werde ich später noch
erklären. Wir benötigen also 4 Pixel um 1 Byte speichern zu können. Nun ermitteln wir immer ob ein BIT = 0 (nicht gesetzt)
oder BIT = 1 (gesetzt) ist. Handelt es sich um ein gesetztes BIT (1), dann verändern wir den jeweiligen Farbanteilswert
um +/-1. Haben wir einen Farbwert von 0 erhöhen wir ihn um +1, und bei einem Farbwert von 255 erniedrigen wir um -1. Bei
allen anderen Werten lassen wir den Zufall entscheiden (etweder um +1 erhöhen oder um -1 erniedrigen). Ein gesetztes BIT
wird also immer als Veränderung im Farbanteilswert gegenüber dem "Originalwert" repräsentiert. Und keine Veränderung
bedeutet kein gesetztes BIT (0). So hangeln wir uns also durch die Textdatei und durch unser "Originalbild". Die
Veränderungen im "Originalbild" werden dann später als "Informationsträgerbild" gespeichert.


                Schema Information im "Originalbild" verstecken

z.B. Buchstabe: 'A' --> binär: '01000001'


				  "Originalbild"

.|-----------------|..|-----------------|..|-----------------|..|-----------------|.
.|  x = 0 , Y = 0  |..|  x = 1 , Y = 0  |..|  x = 2 , Y = 0  |..|  x = 3 , Y = 0  |.
.|  R     G     B  |..|  R     G     B  |..|  R     G     B  |..|  R     G     B  |.
.|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|.
.| 000 | 128 | 064 |..| 000 | 128 | 064 |..| 000 | 128 | 064 |..| 000 | 128 | 064 |.
.|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|.
    0          1         0           0        0           0        0           1      <-- binärer Buchstabe 'A'
    
                             "Informationsträgerbild"

.|-----------------|..|-----------------|..|-----------------|..|-----------------|.
.|  x = 0 , Y = 0  |..|  x = 1 , Y = 0  |..|  x = 2 , Y = 0  |..|  x = 3 , Y = 0  |.
.|  R     G     B  |..|  R     G     B  |..|  R     G     B  |..|  R     G     B  |.
.|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|.
.| 000 | 128 | 065 |..| 000 | 128 | 064 |..| 000 | 128 | 064 |..| 000 | 128 | 063 |. <-- Information eingearbeitet
.|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|..|-----|-----|-----|.

Pixel: x = 0, Y = 0
R = 000 BIT (0 nicht gesetzt) --> R = 000
B = 064 BIT (1 gesetzt)       --> B = 065 (Zufall +/-1)

Pixel: x = 1, Y = 0
R = 000 BIT (0 nicht gesetzt) --> R = 000
B = 064 BIT (0 nicht gesetzt) --> B = 064

Pixel: x = 2, Y = 0
R = 000 BIT (0 nicht gesetzt) --> R = 000
B = 064 BIT (0 nicht gesetzt) --> B = 064

Pixel: x = 3, Y = 0
R = 000 BIT (0 nicht gesetzt) --> R = 000
B = 064 BIT (1 gesetzt)       --> B = 063 (Zufall +/-1)



Natürlich können wir jede andere Art von Dateien z.B. MP3-Files in einem Bild verstecken. Das Bild muß von den Abmessungen
her nur so groß sein, damit die Datei dort auch komplett hineinpasst! Das verfahren ist das Gleiche. Man geht einfach
Byte für Byte durch die Datei und leget die BIT-Information in den Farbanteilswerten ab.

Den Dateinamen der "Quellinformationsdatei" arbeiten wir mit dem gleichen Verfahren im Farbanteil G (Grün)
eine. Wobei wir hier für ein Byte 8 Pixel benötigen!! Das Ende des Dateinamens kennzeichnen wir mit einem '#'



3. Wie können wir die versteckten Informationen wieder sichtbar machen?

Im Grunde ist das ganz einfach. Wir nehmen die "Originalbilddatei" und vergleichen sie mit der
"Informationsträgerdatei". Wir gehen beide Bilder Pixel für Pixel durch und vergleichen die Farbwerte
R_Original mit R_Informationsträger und B_Original mit B_Informationsträger. Stimmen die Werte überein,
dann ist das BIT = 0 (nicht gesetzt) andernfalls ist BIT = 1 (gesetzt). Das machen wir solange, bis wir
8 BIT zusammen haben, was ein Byte ergibt. Dieses Byte schreiben wir dann in eine Datei und wiederholen den
Vorgang solange bis wir das letzte Pixel beider Bilder erreicht haben. Den Dateinamen für die "Quellinformationsdatei"
extrahieren wir auf die selbe Art (aus Grün). Wenn wir das '#' erreicht haben, wissen wir, der Dateiname ist vollständig.


            Schema Information aus "Informationsträgerbild" extrahieren

Pixel: x = 0, Y = 0
R = 000 <--> R = 000 ? --> BIT (0 nicht gesetzt) --> 0
B = 064 <--> B = 065 ? --> BIT (1 gesetzt)       --> 1

Pixel: x = 1, Y = 0
R = 000 <--> R = 000 ? --> BIT (0 nicht gesetzt) --> 0
R = 064 <--> R = 064 ? --> BIT (0 nicht gesetzt) --> 0

Pixel: x = 2, Y = 0
R = 000 <--> R = 000 ? --> BIT (0 nicht gesetzt) --> 0
B = 064 <--> R = 064 ? --> BIT (0 nicht gesetzt) --> 0

Pixel: x = 3, Y = 0
R = 000 <--> R = 000 ? --> BIT (0 nicht gesetzt) --> 0
B = 064 <--> R = 063 ? --> BIT (1 gesetzt)       --> 1


--> 01 00 00 01 --> 'A'


Michael Eberhardt / Epfendorf, 15.05.2004
So nun zu den Bildern:

Originalbild XSIPS:
Bild

Informationsträgerbild XSIPS (enthält Zip-File):
Bild


Und zuletzt das Bild für die sportlichen unter Euch!! :D :D :D
Bild

So, nun zum Schluß möchte ich Euch anregen, einfach ein bischen zu diskutieren. Allgemein oder speziell über das Thema Steganographie.

P.S.: Eventuell gibts später den Sourcecode zu denen beiden Programmen,
weil da kann man gerade von der Geschwindigkeit noch einiges optimieren, aber da sind viele von Euch besser auf der Höhe als ich.
Jetzt sollt Ihr aber erst mal selber ein bischen knobeln!:D :mrgreen: :D

Viel Spaß, und ich wünsch mir eine rege Diskussion!!

Gruß

Michael
Zuletzt geändert von _ZOMTEX_ am 16.05.2005 13:00, insgesamt 2-mal geändert.
Googleist Dein bester Freund!
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Hi, könntest du die Bilder etwas kleiner einstellen? Nicht jeder hat 1280xXXX und ich hasse horizontales Scrollen ;)

Ansonsten ist das allerdings ein sehr interessantes Thema welches ich bestimmt weiter verfolgen werde :)
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
_ZOMTEX_
Beiträge: 41
Registriert: 29.08.2004 06:30
Wohnort: BW
Kontaktdaten:

Beitrag von _ZOMTEX_ »

@freedimension

ich habe jetzt die Bilder auf ein Größe von 800x760 gebracht. Kleiner
gehts nicht, weil ich sonst die Zip-Datei nicht mehr unterbringen kann.
Aber 800x760 müsste ein guter Kompromiss sein. Ich hoffe mal,
dass Du mindestens eine Auflößung von 800x600 fährst, somit mußt Du nur
noch vertikal scrollen. Und wenn Du 1024x768 hast, dann passt es komplett auf den Bildschirm.

Gruß

Michael
Googleist Dein bester Freund!
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Gleiches hab ich auch bei PGS unter Extras drin, bei mir kann man aber nur texte drin verstecken (wobei natürlich files auch kein problem wären)

Wobei du mich aber grad dran erinnerst, dass ich da noch testen muss, ob es noch funzt, bevor ich dann release

Bei mir geht´s allerdings nur in Bitmaps, is vielleicht net so gut wie PNG /:->
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

_ZOMTEX_ hat geschrieben:Und wenn Du 1024x768 hast, dann passt es komplett auf den Bildschirm.
Jupp, perfekt. Danke :allright:
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
brotkasten-deluxe
Beiträge: 147
Registriert: 29.08.2004 01:43
Wohnort: Germany
Kontaktdaten:

Beitrag von brotkasten-deluxe »

wo isn jetzt das prog? in dem bild? und soll ich das jetzt da raus filtern? :?

cooles thema , hab mich auch ma damit beschäftigt :allright:
Benutzeravatar
_ZOMTEX_
Beiträge: 41
Registriert: 29.08.2004 06:30
Wohnort: BW
Kontaktdaten:

Beitrag von _ZOMTEX_ »

@brotkasten-deluxe
...wo isn jetzt das prog? in dem bild?...
im zweiten Bild (Informationsträgerbild)
...und soll ich das jetzt da raus filtern...
Genau, so soll es im Moment sein! Wenn Du aber nicht magst,
mußt Du noch ein bischen warten, bis ich das Programm auch
ganz normal zum Download bereitstellen. Aber jetzt möchte ich mich
erstmal an die Knobelfreak wenden, es passt ja zum Thema. Wie gesagt,
hätte das gerne in eine andere Kategorie eingestellt. Gibts nun leider nicht mehr.

Gruß

Michael
Googleist Dein bester Freund!
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Perfekt eine Datei in einem Bild versteckt. Wenn du den source code noch posten würdest wäre das genial. So ein Programm bräuchte ich auch.
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
_ZOMTEX_
Beiträge: 41
Registriert: 29.08.2004 06:30
Wohnort: BW
Kontaktdaten:

Beitrag von _ZOMTEX_ »

@zigapeda
...Wenn du den source code noch posten würdest wäre das genial. So ein Programm bräuchte ich auch...
Ich denke den Sourcecode wirds auch später geben! :wink:

@Franky
Bei mir geht´s allerdings nur in Bitmaps, is vielleicht net so gut wie PNG
BMP würde bei mir auch gehen, aber PNG ist definitiv besser, weil die Datei
kleiner ausfällt. Problematisch wirds allerdings bei JPEG. JPEG ist ja ein "verlustbehaftetes Format", wenn man da nach obiger Methode Informationen
"eindotiert" und es dann speichern will, geht der JPEG Komprimierungsalgorythmus drüber und schraubt an den Pixel rum und
das kann ich in dem Fall überhaupt nicht gebrauchen. Aber was man eventuell machen kann, muß ich mal testen, ein JPEG als "Originalbild"
erstellen und das "Informationsträgerbild" als PNG speichern, dass müßte
gehen.

Gruß

Michael
Googleist Dein bester Freund!
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

oben steht ja das in der einen png datei eine zipdatei versteckt ist. eigentlich müsste man sie doch dann durch folgenden code auf der C festplatte speichern können:

Code: Alles auswählen

datei = OpenFile(#pb_any,"C:\bild1.png")
Repeat
  bild1inhalt$ = ReadString()
Until Eof(datei) <> 0
CloseFile(datei)
datei = OpenFile(#pb_any,"C:\bild2.png")
Repeat
  bild2inhalt$ = ReadString()
Until Eof(datei) <> 0
CloseFile(datei)
pos1 = FindString(bild2inhalt$,bild1inhalt$,0)
pos2 = pos1 + Len(bild1inhalt$)
zipdatei$ = Mid(bild2inhalt$,0,pos1 - 1)
zipdatei$ = zipdatei$ + Mid(bild2inhalt$,pos2 + 1,Len(bild2inhalt$)-pos2)
datei = CreateFile(#pb_any,"C:\programm.zip")
WriteString(zipdatei$)
CloseFile(datei)
bild1 = ohne die zipdatei
bild2 = mit zipdatei
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Antworten