Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
07.04.2002, 04:50
Retro



Nabeend... oder Morgen? =)

Es gibt ja diverse Resourcenhacker mit denen man einkompilierte Resourcen (so auch Bilder) wieder herausholen kann. Genau das soll aber bei einem bestimmten Bild nicht möglich sein.

Hat jemand eine Idee wie man so ein Bild anhängen könnte? Vma. kann es auch eine externe Datei sein, aber sie sollte keinesfalls für andere Prgramme lesbar sein. Nur in meinem selbstprogrammierten Programm (toller Satz:) soll das Bild in einem normalen TImage angezeigt werden.

Verschlüsseln oder sowas? Hmm, vielleicht habt ihr ja bessere Ideen! =) Danke!

/Edit
Bild ist im normalen Status 478kB groß, bmp. Durch reduzieren der Farben wahrscheinlich noch optimierbar!

/Edit
Na was hab ich gesagt... =) Jetzt sinds nur noch drei Farben und 79,8kB, bmp!

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */


Dieser Beitrag wurde am 07.04.2002 um 04:55 von Retro bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
07.04.2002, 11:14
Tron



jo, verschluesseln waer wohl die einzige moeglichkeit.
allerdings ist das an 2 punkten anfaellig:
- du das bild im speicher unverschluesselt haben
- du musst den dekoder gleich mitliefern (auch wenn er in deinem compilierten code steckt)

btw: 3 farben? zufaellig weiss, braun und blau? brauner ring mit weisem rand auf blauem grund?

@morgen: ganz definitiv morgen, ich bin ne stunde nachdem du das geschrieben hast aufgestanden (scheiss zivi)

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
002
07.04.2002, 20:39
Retro



Hehe, nein, es handelt sich nicht um die Kreise! =)

Aber ich glaube kaum dass viele das KnowHow haben ein Bild aus dem Stack raus zu fischen bzw den Decoder-Code aus einem disassemblieten Code rauszufilter... ;) Außerdem ist es dann nun doch nicht sooo wichtig. Es geht nur darum dass nicht jedes ScriptKiddi mit nem Reshacker dran kommt.

P.S.: Jo, scheiss zivi - wiso machste kein Bund?

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
003
07.04.2002, 23:13
Tron



Zitat:
Retro postete
P.S.: Jo, scheiss zivi - wiso machste kein Bund?

weil ich dann die exklusive moeglichkeit haette nur am wocheende hier im forum rumzuhaengen (;
naja, in 3 wochen isses vorbei (endlich, zwangsarbeit suckt)

<edit>
<antispam>
chiffrier das bild ganz mit ner matrix-kodierung, einfach, aber effizient (siehe unseren kodier-thread, mein kodierer)
</antispam>
</edit>

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett


Dieser Beitrag wurde am 07.04.2002 um 23:20 von Tron bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
08.04.2002, 17:02
[RMen]OneStone



Oder nimm ROT. Das ist gaaanz einfach! Eine Implementation in C (kann leider kein Pascal, hab ich für überflüssig gehalten ;):

Quellcode:
#include <stdio.h>

#define ROT 3

void decode(char *szFileName, char *szBuffer, int iMaxLen) // char* ~ String
{
int iCounter = 0;
char szBuffer[MAX_PIC_SIZE]
FILE *pFile = fopen(szFileName, "rb"); // öffnet zum binären lesen

while(true)
{
  char cChar = getchar(pFile); // liest ein Zeichen

  if(cChar == EOF) // break on EOF
   break;

  if(iCounter == iMaxLen)
   break;
  
  if(cChar != '\r' && cChar != '\n') // keine Zeilenumbrüche entschlüsseln (sollten folglich auch nicht verschlüsselt werden)
   cChar += ROT;

  szBuffer[iCounter++] = cChar;
}

fclose(pFile);
}

MfG

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
005
08.04.2002, 17:15
BoehserOnkel



Probiers ma hier mit:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, FileCtrl;

type
TForm1 = class(TForm)
FileListBox1: TFileListBox;
DirectoryListBox1: TDirectoryListBox;
DriveComboBox1: TDriveComboBox;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Edit1: TEdit;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;
i : integer;
A: Byte;
mem: Tmemorystream;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var zahl : integer;
begin
Zahl := 55;
mem := Tmemorystream.create;
mem.LoadFromFile(opendialog1.filename);
for I := 1 to mem.Size do
begin
mem.Position := I;
mem.Read(Zahl,1);
Zahl:= 15 xor 56;
mem.Position := I;
mem.Write(Zahl,1);
mem.SaveToFile(extractfilepath(opendialog.filenname)+'Verschlüsselt\'+extractfilename(opendialog.filename));
end;
mem.free

end;
end.

Die Verschlüsselung is zwar billig aber für bilder reichts.

--

by BoehserOnkel
visit http://www.upg.de.tf
----------------------------------------
Du hast doofe Ohren !
(Der kleine junge Mann von neben an)

zum Seitenanfang zum Seitenende Profil || Suche
006
08.04.2002, 17:51
Prefect



Quellcode:
DirectoryListBox1: TDirectoryListBox;
DriveComboBox1: TDriveComboBox;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Edit1: TEdit;
Button3: TButton;
Button4: TButton;

Wenn man den ganzen Pascal vs. C (bzw. Object Pascal vs. C++)-Streit wegläßt gibt es immer noch mindestens einen Grund, Delphi (also das Programm von Borland) zu hassen: es fördert grottenschlechten Programmierstil :/

Um wenigstens etwas sinnvolles zu sagen: ROT ist im Prinzip billig, dafür aber schnell, und man legt nicht gleich _alles_ komplett offen. Alternativ kann man auch XOR verwenden, da kann man fürs Kodieren und Dekodieren den selben Code hernehmen.

Der Code den du gepostet hat ist aber für Bilder (aka Binärdaten) schlecht, weil er Controlcharacters speziell handelt. ROT habe ich in Verwendung übrigens nur auf dem Usenet gesehen (ROT13 ist da z.T. für offensiven Inhalt Sitte).

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
007
08.04.2002, 22:29
Retro



Man kann vieles verbessern:

Quellcode:
DirectoryListBox1 : TDirectoryListBox;
DriveComboBox1    : TDriveComboBox;
Button1           : TButton;
Button2           : TButton;
Button3           : TButton;
Button4           : TButton;
Label1            : TLabel;
Edit1             : TEdit;
Wenn man den Komponenten jetzt noch vernünftige Namen gibt "BtnStart", "BtnStop", "EditValue", ... hat man wieder mehr durchblick. Auch wenn sowas nicht sehr schön ist (mir gefällt die "Liste" an Komponenten dort oeben auch auch nicht...) ist mit Delphi bzw. Obj. Pascal vieles sehr viel leichter zu realisieren...

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */


Dieser Beitrag wurde am 08.04.2002 um 22:29 von Retro bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
08.04.2002, 22:49
TheTinySteini



Ich bevorzuge btnStart, edtValue, lblSomeDescriptiveTextGoesInHere...

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
009
09.04.2002, 15:38
BoehserOnkel



Mach ich im normalfall auch nur wenn ich sowas in 5 minuten zauber, dann scheiss ich drauf ;)

--

by BoehserOnkel
visit http://www.upg.de.tf
----------------------------------------
Du hast doofe Ohren !
(Der kleine junge Mann von neben an)

zum Seitenanfang zum Seitenende Profil || Suche
010
09.04.2002, 16:48
[RMen]OneStone



Ok, wer meinen C++ Code für bilder weg, lässt das if(cChar == '\r' ... einfach weg. Ich hab mal versucht das ganze für Pascal zu schreiben (Versuch!):

Quellcode:procedure Decode(iROT : integer, szBuffer : &String, iLength : integer);
var i : Integer;
begin;

for(i = 0; i < iLengh; i++)
  szBuffer[ i ] += iRot;
end;

BoesehrOnkel's mit ROT:
Quellcode:unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, FileCtrl;

type
TForm1 = class(TForm)
FileListBox1: TFileListBox;
DirectoryListBox1: TDirectoryListBox;
DriveComboBox1: TDriveComboBox;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Edit1: TEdit;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;
i : integer;
A: Byte;
mem: Tmemorystream;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var zahl : [b]char[/b];
begin
mem := Tmemorystream.create;
mem.LoadFromFile(opendialog1.filename);
for I := 1 to mem.Size do
begin
mem.Position := I;
mem.Read(Zahl,1);
[b]zahl := zahl + 3;[/b]
mem.Position := I;
mem.Write(Zahl,1);
mem.SaveToFile(extractfilepath(opendialog.filenname)+'Verschlüsselt\'+extractfilename(opendialog.filename));
end;
mem.free

end;

Verbessert ruhig ;)

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/


Dieser Beitrag wurde am 09.04.2002 um 16:51 von [RMen]OneStone bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
011
09.04.2002, 17:01
Retro



Hrhr, wer den Code unverändert zum laufen kriegt, kriegt nen Keks von mir! ;)

Ich hab mich garnicht weiter damit beschäftigt... aber ich glaube Stream.Read(...) liest einen Char aus, den man dann mit Ord(...) in eine Zahl umrechnen muss um dann ROT dazuzurechnen ;)

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */


Dieser Beitrag wurde am 09.04.2002 um 17:01 von Retro bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
012
09.04.2002, 17:04
[RMen]OneStone



Wie gesagt, ich kann kein Pascal, und Delphi geht mir am Arsch vorbei. Guckt euch leiber meinen C++ Code oben an ;).

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
013
09.04.2002, 17:06
Retro



Nope, da mein Programm auch in Delphi ist... *fg* ;) Aber die Denkweise ist richtig..

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche