Autor Beitrag
Cyberbob
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Mo 04.11.02 22:14 
HI ihr,

ich möchte ein Programm schreiben, mit dem ich ein Bild einlese(jpg) und dieses soll so verschlüsselt werden, dass es gefahrlos durchs web geschickt werden kann, ohne dass man etwas erkennt. Hat jmd. einen vorschlag?

ich dachte daran, dass man bei Delphi ja auch bilder öffnen kann und diese dann nur aus Zahlen bestehen, könnte man diese Zahlen in einer txt datei speichern und dann wieder in ein bild umwandeln?

Danke für die vorschläge, achja und wenn es geht bitte mit code vorschlag

Cyberb :oops: b
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Mo 04.11.02 22:45 
Hallo Cyberbob,

Cyberbob hat folgendes geschrieben:
ich dachte daran, dass man bei Delphi ja auch bilder öffnen kann und diese dann nur aus Zahlen bestehen, könnte man diese Zahlen in einer txt datei speichern und dann wieder in ein bild umwandeln?


Man könnte es so machen:

1. einlesen
2. verschlüsseln (xor o.Ä.)
3. Textdatei als ".jpg" abspeichern

Fertig!

_________________
If accidentally read, induce vomitting.
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mo 04.11.02 23:23 
Ich hatte vor Jahren mal ein Prigramm gesehen mit dem man Teile eines Bildes verschlüsseln konnte. Das Programm hatte an die 10 Buttons mit denen man den Bereich z.B. invertieren, speigel, drehen, puzeln und sonstiges machen konnte. Mit einem Button konnte man den Bereich mit einem Kennwort verschlüsseln. Die Grafik hatte die verschlüsselten Regionen mitgespeichert. Hat man das Bild mit dem Speziallprogramm geöffnet, dann hat das Programm die Regionen markiert und man konnte loslegen. Entweder hat man das Kennwort gehabt oder man man konnte mit den Buttons spielen und versuchen das zu entschlüsseln.

Sonst war das Bild aber als Bild lesbar.
Cyberbob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Di 05.11.02 22:54 
Ne lesbar soll es ja auf keinen Fall sein.

Die andere Methode gefällt mir besser, tja Ex0rzist, hast du einen Code vorschlag wie man deinen vorschlag umsetzen könnte? Ich weiß ihc könnte das gánze auhc mit zip und kennwort verschicken, aber das ist doof.


Bis dann

Cyberb 8) b
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Di 05.11.02 23:21 
Zum Thema "Bild einlesen" habe ich hier schon einmal etwas gepostet.

Oder du guckst gleich bei DBR vorbei. Dort zeigt er, wie man komplette Dateien verschlüsselt.

Das müsste dir eigentlich helfen.

_________________
If accidentally read, induce vomitting.
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 06.11.02 00:54 
Die Frage ist die: Soll die Datei weiterhin als JPEG ladbar sein (ohne eine Fehlermeldung), es soll aber nicht sichtbar sein was auf dem Bild abgebildet ist? Oder soll es zwar eine JPEG Endung haben, es aber egal sein ob beim öffnen der Datei eine Fehlermeldung kommt.

Für das erste muß man etwas Mühe aufwenden. Bei dem zweiten spielt es keine Rolle ob es eine JPEG oder DOC oder EXE ist, weil da nur die Datei im allgemeinen kodiert wird.
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 06.11.02 18:38 
Spaßershalber hab ich etwas programmiert. Das Programm verschlüsselt Bitmaps nach der Xor Technik und zusätzlich mit einen Passwort. Das schöne dabei ist, daß es weiterhin eine Bitmap bleibt. Es wird also nicht die Datei verschlüsselt, sondern nur das Bild. Öffnet mal diese Bitmap mit dem PaintBrush, so gibt es keine Fehlermeldung. Das Ergebnis ist allerdings Schnee. Wie bei den anderen Verschlüsselungen auch, sollte das "Passwort" eine gewisse länge haben.

Es gibt hier noch einen kleinen Hacken. Die Bilder sollten TrueColor sein, sonst kann man das Bild nicht wiederherstellen. Das Problem kenne ich und ich weiss auch woran es liegt (Funktion XorColor). Bei Gelegenheit werde ich die Funktion umschreiben. Zum testen also nur TrueColor Bilder nehmen.

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
var
  Form1: TForm1;
  Bild: TBitMap;

implementation

{$R *.DFM}

procedure BmpCodeDecode(Bmp: TBitmap; Code: String);
  function XorColor(Col: TColor; X: Byte): TColor;
  var
    R, G, B: Byte;
  begin
    R:= Byte(ColorToRGB(Col)) xor X;
    G:= Byte(ColorToRGB(Col) shr 8) xor X;
    B:= Byte(ColorToRGB(Col) shr 16) xor X;
    Result := (B shl 16) + (G shl 8) + R;
  end;
var
  x, y, k: Word;
begin
  k := 1;
  for x := 0 to Bmp.Width - 1 do for y := 0 to Bmp.Height - 1 do begin
    with Bmp do begin
      Canvas.Pixels[x, y] := XorColor(Canvas.Pixels[x, y], (x * Ord(Code[k])));
      Canvas.Pixels[x, y] := XorColor(Canvas.Pixels[x, y], (y * Ord(Code[k])));
      Canvas.Pixels[x, y] := XorColor(Canvas.Pixels[x, y], (Sqr(Ord(Code[k]))));
      Inc(k); if k > Length(Code) then k := 1;
    end;
  end;
end; {Popov}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Bild := TBitMap.Create;
  Bild.LoadFromFile('c:\100.bmp'); // ANDERES BILD ANGEBEN
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Bild.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Kodierung: String;
begin
  Kodierung := 'Das ist der Text mit dem man das Bild kodiert';
  Canvas.Draw(0, 0, Bild);
  BmpCodeDecode(Bild, Kodierung);
  Canvas.Draw(0, 0, Bild);
end;

end.


Natürlich kann man das noch verbessern, aber auf die schnelle ist es auch ok.

Funktionsweise ist einfach: Ein mal auf Button klicken und das Bild wird kodiert (und gezeichent), zweites mal klicken und das Bild ist dekodiert (und gezeichent).
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Do 07.11.02 16:54 
ich denke mal, dass du mit der methode bei JPGs massive Probelme bekommen wirst, weil JPG ja komprimiert sind !!!!

_________________
In the beginning was the word.
And the word was content-type: text/plain.
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 07.11.02 17:28 
Kompliment, Popov, das ist doch mal ne schöne Sache!

Da kann man wunderbar visuell sehen, daß so eine Codierung immer noch bestimmte Muster hinterlässt. Diese Muster sind umso stärker, je kleiner der verwendete Schlüssel ist.

Anders ausgedrückt: Die Stärke einer Codierung ist von der Schlüssellänge abhängig (ja, ich weiss, könnte banal sein).

Verwendet mal für Kodierung nur den String "A0"... Oder den String mit dem einen Buchstaben Chr(0).

Cu,
Udontknow