"Verschlüsselte" Bilddateien "entschlüsseln&q
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich stehe vor einem kleinen aber feinen Problem: Ich habe hier diverse PNG und JPG Dateien, welche zu einem bestimmten Programm gehören. Da die Ersteller des Programmes allerdings nicht sonderlich gut darin waren, schöne Grafiken zu machen, möchte ich diese Bilddateien durch von mir erstelle Bilder austauschen. Das Problem: Die Original-Bilddateien sind anscheinend "verschlüsselt", jedenfalls kann ich sie mit keinem anderen Bildbetrachter öffnen. Vermutlich wurden einfach ein paar Bytes entfernt sodass jedes Bildprogramm scheitert diese Grafiken zu laden. Nun wäre es nicht unbedingt erforderlich das ich die Originaldateien sozusagen "entschlüssele", es wäre schon sinnvoller für mich wenn ich wüsste was die Programmautoren mit den Bildern gemacht haben um sie so hinzubekommen. Und natürlich wäre es perfekt wenn ich wissen würde, wie ich meine eigenen Bilder so verändere das das fremde Programm sie frisst. Wäre super wenn einer von euch Experten sich das einmal angucken könnte, da mir einfach das nötige Wissen für so etwas fehlt. Eine Beispiel-Grafik habe ich einmal angehangen. Danke & Grüße |
Re: "Verschlüsselte" Bilddateien "entschlüsse
Moin,
erste Analysen sind gar nicht so schwer. Besorge Dir einen Hex-Editor, oder wenigstens einen Hex-Viewer. Der erlaubt es Dir, die Datei als Byte-Strom aufzufassen und Dir mal anszusehen, was da für Bytes in der Datei stehen. Diese müssen nämlich - wenn es denn eine PNG-Datei ist - einem bestimmten Format entsprechend, dem PNG-Format. Falls es sich die Entwickler seeeeeeeeehr einfach gemacht haben, dann haben sie lediglich im Header ein paar Bytes verändert. Das kannst Du selbst kontrollieren, indem Du Dir mal die Spezifikationen für das PNG-Format ansiehst. keine Sorge: Du sollst keinen vollständigen Viewer schreiben, musst Du auch nicht. Nur ein paar Bytes im Header der Datei ansehen, das ist eine lösbare Aufgabe auch wenn man im Hinblick auf PNG-Dateien nur mäßige Vorkenntnisse hat. Der Header einer PNG-Datei beispielsweise ist hier aufgelistet: http://en.wikipedia.org/wiki/Portabl...cs#File_header |
Re: "Verschlüsselte" Bilddateien "entschlüsse
Hi,
danke erstmal. :) Die ersten 8 Byte der PNG Datei sehen so aus: 80 87 97 87 8D 8D 8D 80, es scheint also in der Tat keinen Header zu geben oder er ist verschlüsselt. Ich habe jetzt einfach mal den PNG-Header (89 50 4E 47 0D 0A 1A 0A) an den Anfang der Datei gesetzt, aber die Datei kann weiterhin nicht angezeigt werden. Wäre auch zu schön gewesen wenns so einfach gewesen wäre. :P |
Re: "Verschlüsselte" Bilddateien "entschlüsse
Mahlzeit!
Dann gehe ich davon aus, das die Dateien binär verschlüsselt sind. Wenn du den Algorithmus nicht kennst ist jeder Versuch Zeitverschwendung. Woher weist du eigentlich das es Bilder sind? Ich kann dir auch irgendein Binärformat hinklatschen und hänge irgendeine Dateiendung dran. |
Re: "Verschlüsselte" Bilddateien "entschlüsse
Hi richard,
weil diese Dateien in dem Fremdprogramm ja angezeigt werden. Keine Möglichkeit also da ranzukommen? Greets |
Re: "Verschlüsselte" Bilddateien "entschlüsse
Solange Du nicht weißt, welchen Prozess sie verwenden, um ihre Bilder zu "schützen", ist es halt schwierig, diesen umkehren zu wollen. Was Du machen müsstest, wäre eine Form von "Reverse-Engeneering". Das heißt, dass Du Dir beispielsweise in einem Debugger ansehen müsstest, was da zur Laufzeit passiert.
Das ist aber - vorsichtig formuliert - "nicht ganz trivial". |
Re: "Verschlüsselte" Bilddateien "entschlüsse
Nimm mal die ersten vier Bytes ("CF10") weg und XOR die restlichen Bytes mit $8D.
edit:
Delphi-Quellcode:
const
FileName = 'D:\Temp\karten.png'; var Source: TFileStream; Header: array [0..3] of AnsiChar; Stream: TMemoryStream; Buffer: PByte; Index: Integer; begin Source := TFileStream.Create(FileName, fmOpenRead); try Source.Position := 0; Source.ReadBuffer(Header, SizeOf(Header)); if Header = 'CF10' then begin Stream := TMemoryStream.Create(); try Stream.CopyFrom(Source, Source.Size - Source.Position); Buffer := Stream.Memory; for Index := 1 to Stream.Size do begin Buffer^ := Buffer^ xor $8D; Inc(Buffer); end; Stream.SaveToFile(ChangeFileExt(FileName, '.decoded') + ExtractFileExt(FileName)); finally Stream.Free(); end; end; finally Source.Free(); end; end; |
Re: "Verschlüsselte" Bilddateien "entschlüsse
Wow Nico, vielen vielen Dank. Funktioniert perfekt, sogar mit den JPG-Bildern.
Ich habe nun versucht deinen Algorithmus umzukehren, um meine Bilder so zu verschlüsseln. Habe also umgekehrt versucht XOR auszuführen wenn der Header nicht CF10 ist. Leider klappt dies nicht. Kannst du mir da vlt. noch einmal aushelfen bitte? Grüße |
Re: "Verschlüsselte" Bilddateien "entschlüsse
Zitat:
|
Re: "Verschlüsselte" Bilddateien "entschlüsse
Eben da hakts bei mir. Problem ist, dass ich ja Stream.CopyFrom nicht verwenden kann. Oder steh ich nur auf dem Schlauch?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz