[Source - Delphi]Compress/Decompress *.enc files

10/11/2010 11:59 krotkin#1
Decompress and Compress works 100% corect!

Keys:
Code:
const
  Xorkey: array [0 .. 3] of Byte = ($92, $65, $67, $57);
Decompress:
Code:
procedure DecompressFile(const SourceFile, DestFile: string);
var
  SourceStream: TStream;
  ZLibStream: TStream;
  DestStream: TStream;
  DecSize: Cardinal;
  Ms: TStream;
  i: Integer;
  Data: TBytes;
  MsOut: TStream;
begin
  SourceStream := TFileStream.Create(SourceFile, fmOpenRead);
  Ms := TMemoryStream.Create;
  MsOut := TMemoryStream.Create;

  Ms.CopyFrom(SourceStream, SourceStream.Size);
  Ms.Position := 0;

  SetLength(Data, Ms.Size);
  Ms.Read(Data[0], Ms.Size);
  DecSize := PDword(@Data[0])^;

  for i := 0 to 3 do
   Data[i + 4] := Data[i + 4] xor Xorkey[i mod 4];

  MsOut.Size := Length(Data);
  MsOut.Write(Data[0], Length(Data));
  MsOut.Position := 4;
  try
    ZLibStream := TZDecompressionStream.Create(MsOut, -15);
    try
      DestStream := TFileStream.Create(DestFile, fmCreate or fmShareExclusive);
      try
        ZLibStream.Read(Data[0], SizeOf(DecSize));
        DestStream.Write(Data[0],SizeOf(DecSize));
        DestStream.CopyFrom(ZLibStream, DecSize -4);
      finally
        DestStream.Free;
      end;
    finally
      ZLibStream.Free;
    end;
  finally
    SourceStream.Free;
    Ms.Free;
    MsOut.Free;
  end;
end;
Compress:
Code:
procedure CompressFile(const SourceFile, DestFile: string);
var
  SourceStream: TStream;
  ZLibStream: TStream;
  DestStream: TStream;
  DecSize, FixShit: Integer;
  i: Integer;
  Data: TBytes;
begin
  SourceStream := TFileStream.Create(SourceFile, fmOpenRead);
  try
    DecSize := SourceStream.Size;
    DestStream := TFileStream.Create(DestFile, fmCreate or fmShareExclusive);

    DestStream.Write(DecSize,SizeOf(DecSize));
    try
      ZLibStream := TZCompressionStream.Create(DestStream, zcFastest , -15, 8, zsDefault);
      try
       repeat
        FixShit := SourceStream.Read(DecSize, SizeOf(DecSize));
        ZLibStream.Write(DecSize, FixShit);
       until FixShit = 0;
      finally
        ZLibStream.Free;
      end;

      SetLength(Data, DestStream.Size);
      DestStream.Position := 0;
      DestStream.Read(Data[0],Length(Data));
      DestStream.Position := 0;

       for i := 0 to 3 do
        Data[i + 4] := Data[i + 4] xor Xorkey[i mod 4];

      DestStream.Write(Data[0],Length(Data));
    finally
      DestStream.Free;
    end;
  finally
    SourceStream.Free;
  end;
end;
Code:
uses
 ZLibEx;
U need ZLibex.pas and u can download it from link below:
Code:
http://www.base2ti.com/?id=delphi.zlib
Credits for shore only me (Gunz) r Mauka @Rz

[Only registered and activated users can see links. Click Here To Register...]

Atached binary file (WIP - Work in Progress)!
10/11/2010 12:51 .Law.#2
Moved to pserver dev.
10/11/2010 17:31 krotkin#3
Code:
procedure CompressFile(const SourceFile, DestFile: string);
var
  SourceStream: TStream;
  ZLibStream: TStream;
  DestStream: TStream;
  DecSize, FixShit: Integer;
  i: Integer;
  Data: TBytes;
begin
  SourceStream := TFileStream.Create(SourceFile, fmOpenRead);
  try
    DecSize := SourceStream.Size;
    DestStream := TFileStream.Create(DestFile, fmCreate or fmShareExclusive);

    DestStream.Write(DecSize,SizeOf(DecSize));
    try
      ZLibStream := TZCompressionStream.Create(DestStream, zcFastest , -15, 8, zsDefault);
      try
       repeat
        FixShit := SourceStream.Read(DecSize, SizeOf(DecSize));
        ZLibStream.Write(DecSize, FixShit);
       until FixShit = 0;
      finally
        ZLibStream.Free;
      end;

      SetLength(Data, DestStream.Size);
      DestStream.Position := 0;
      DestStream.Read(Data[0],Length(Data));
      DestStream.Position := 0;

       for i := 0 to 3 do
        Data[i + 4] := Data[i + 4] xor Xorkey[i mod 4];

      DestStream.Write(Data[0],Length(Data));
    finally
      DestStream.Free;
    end;
  finally
    SourceStream.Free;
  end;
end;
Have fun with it! :mofo:

Finished and tool
12/29/2010 06:36 takashi92000#4
May i ask what is the purpose of compress/decompress?
01/10/2011 07:45 iloveyby#5
What is it ?
01/11/2011 15:45 1234nick#6
is this for borland delphi file?this is for what?unpack?
09/12/2011 21:18 BLINDROCK#7
GUYS PLEASE XD I DONT KNOW HOW I GET THESE XOR's OR "Key's"
PLEASE PLEASE PLEASE give me the XOR for Cabal Moon Night XD PLEAAAAAAASE ^^
07/26/2018 05:28 taekaXD#8
can anyone edit this and make XOR key input up to 8digits. some servers has and edited XOR key with 2 or more digits. Thanks