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;