Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   "Verschlüsselte" Bilddateien "entschlüsseln" (https://www.delphipraxis.net/122856-verschluesselte-bilddateien-entschluesseln.html)

The Riddler 23. Okt 2008 20:45

Re: "Verschlüsselte" Bilddateien "entschlüsse
 
Falls es irgendwie hilft: Es gibt ein kostenpflichtiges Programm, dass ebenfalls das macht was ich möchte. Mit diesem konnte ich die eine PNG Datei mal ersetzen. In der *.dat-Datei wurden durch das Programm nun folgende Änderungen gemacht. Was genau das ist bzw. wie ich die *.dat so ändern kann das meine Dateien geschluckt werden weiß ich leider noch nicht.

Zitat:

C:\Dokumente und Einstellungen\Pierre>cd Desktop

C:\Dokumente und Einstellungen\Pierre\Desktop>fc /b chili1.dat chili2.dat
Vergleichen der Dateien chili1.dat und CHILI2.DAT
0000720D: B2 EF
0000720E: A4 DC
0000720F: 30 2D
00007210: B8 BC
00007211: F6 B6
00007212: 35 F2
00007213: 8C 3E
00007214: 07 8C
00007215: E8 76
00007216: 34 D3
00007217: 99 B8
00007218: 03 7B
00007219: F8 9E
0000721A: 3D B2
0000721B: EB 00
0000721C: 02 9A

nicodex 23. Okt 2008 22:51

Re: "Verschlüsselte" Bilddateien "entschlüsse
 
Das sind einfach zu wenig Daten/Informationen, um irgendetwas damit anzufangen (außer zu raten).
Da dein Diff 16 aufeinanderfolgende Bytes Unterschied liefert, könnte jfheins recht haben (MD5).

The Riddler 26. Okt 2008 10:11

Re: "Verschlüsselte" Bilddateien "entschlüsse
 
Liste der Anhänge anzeigen (Anzahl: 1)
Und jfheins hatte Recht! Der MD5 String des Bildes steht in der *.dat Datei drin, siehe Anhang. Vielen Dank.

Nun gibt es eigentlich kein großes Problem mehr, jedenfalls von theoretischer Sicht aus für mich. Mein Programm holt sich den MD5 Hash der Original-Datei, holt sich dann den MD5 Hash meiner neuen Datei. *.dat Datei öffnen und alten Hash durch neuen Hash ersetzen. Speichern und fertig, oder?

Nur leider... hakts an der Umsetzung. Strings in Dateien könnt ich ja vlt. noch grad so ersetzen, ob wie soll ich Hex-Werte ersetzen? :gruebel:

Klaus01 26. Okt 2008 11:06

Re: "Verschlüsselte" Bilddateien "entschlüsse
 
Hallo,

wie öffnest Du die Datei?

..mit eine StringList sollte es Probleme geben "binäre" Werte einzutragen.
Bei einem TFileStream würde ich da keine Probleme sehen.

Womit generierst Du Deinen MD5 Wert?
Gibt es da auch eine Möglichkeit der Wert als 16 Byte zu bekommen
oder wird der Wert nur in der Hexdarstellung angeboten?

Grüße
Klaus

The Riddler 26. Okt 2008 11:14

Re: "Verschlüsselte" Bilddateien "entschlüsse
 
Hallo Klaus,

im Moment öffne ich die Datei noch mit einem handelsüblichen HEX-Editor. Aus Delphi heraus dann sicherlich mit einem File- oder Memorystream.

Gut das du gefragt hast, meine md5.pas ist weg und auf http://www.fichtner.net/delphi/md5.delphi.phtml gibt es sie nicht mehr zum Download. Hat die zufällig noch jemand damit ich MD5 Hashes von meinen Dateien generieren kann?

jfheins 26. Okt 2008 13:02

Re: "Verschlüsselte" Bilddateien "entschlüsse
 
Hallo, versuche doch mal diesen Code, um die MD5-Hashs zu ersetzen:
Delphi-Quellcode:
type
  MD5Digest: Array [0..15] of byte

type
  MD5Digest: Array [0..15] of byte

procedure Replace(Stream: TStream; oldmd5, newmd5: MD5Digest)
var
  i: Integer;
  pos: Int64;
  pattern: MD5Digest;
begin
  for i = 0 to 15 do
  begin
    oldmd5[i] := oldmd5[i] xor $8D;
    newmd5[i] := newmd5[i] xor $8D;
  end;
 
  Stream.Position := 0;

  while (Stream.size - Stream.Position) >= sizeof(MD5Digest) do
  begin
    pos := Stream.Position;
 
    Stream.readbuffer(pattern, sizeof(MD5Digest));
   
    Stream.position = pos + 1; // Wir müssen byteweise vorgehen
   
    if (comparemem(@pattern[0], @oldmd5[0], sizeof(MD5Digest)) = 0) then
    begin
      Stream.position = pos;
      Stream.writeBuffer(newmd5, sizeof(MD5Digest));
      break;
    end;
  end;
end;

procedure ReplaceFile(FileName: String; old, new: Array of MD5Digest)
var
  fs: TFileStream;
  mem: TmemoryStream;
  i: Integer;
begin

  mem := TMemoryStream.Create();

  fs := TFileStream.Create(FileName, fmOpenReadWrite or fmShareExclusive);
  try
    mem.CopyFrom(fs, 0);
   
    for i = low(old) to high(old) do
    begin
      Replace(mem, old[i], new[i]);
    end;
   
    fs.CopyFrom(mem, 0);
   
  finally
    fs.Free;
    mem.Free;
  end;
end;
So ähnlich zumndest ;)

Klaus01 26. Okt 2008 13:05

Re: "Verschlüsselte" Bilddateien "entschlüsse
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

anbei die md5.pas die ich ab und an verwende.
Den binären MD5 Wert erhälst Du wenn Du diese Funktion
Delphi-Quellcode:
function MD5File(N: string): MD5Digest;
aufrufst.
MD5Digest ist ein Array[0..15] of Byte;

Grüße
Klaus

The Riddler 26. Okt 2008 13:50

Re: "Verschlüsselte" Bilddateien "entschlüsse
 
Danke Klaus, genau die hatte ich schon per Google gefunden. :-)

Aber mein ganzer Dank geht an jfheins, durch dessen Hilfe es jetzt geht (+ ICQ Hilfen)! :party: Du bist mein Held des Monats. :)

P.S.: Meld dich mal vor Weihnachten bei mir, ich schenk dir 25€ zu Weihnachten. Nicht das noch jemand auf die Idee kommt das hier wäre Schwarzarbeit. :mrgreen:

sunnymtx 16. Nov 2010 15:50

AW: "Verschlüsselte" Bilddateien "entschlüsseln"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,

Ich hole mal diesen alten Thread nach oben, weil good old Google ihn bei mir gefunden hat und ich anders nicht weiterkomme.
Das Problem hat nix mit Delphi zu tun, aber ihr scheint mir alle tolle Experten zu sein!
Ich habe von einer Freeware Designsoftware ein Hintergrundbild, das ich dringend für ein anderes Projekt benötige. Allerdings hat der Hersteller wohl ein paar Bytes in der Datei verändert, sie verschlüsselt oder irgendwie gepackt. Wenn man sich das im HEX-Editor anschaut sieht man neben kryptischen Zeichen (wohl den Bildinformationen) nur einen Abschnitt über Adobe XMP Core 4.1, Tiff-Datei und Dimensionen des Bildes. Kommt ihr darauf, was mit der Datei los is? Das wäre gigantisch!

Hab sie hier hochgeladen:
http://www.megaupload.com/?d=4N7OYDXR
Und hier is der Abschnitt mit Hex-Code:
http://img808.imageshack.us/i/hexcode.jpg/

Herzlichsten Dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz