Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi расшифровка TFileStream. Алгоритм XOR, помогите с расшифровкой... 
V
    Опции темы
wofs
Дата 2.6.2011, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 1.5.2007

Репутация: нет
Всего: нет



Доброго дня.
Распаковываю файл ZLibом:
Код

function Decompress_Zlib(const inStream, outStream :TStream; StartPos: integer):boolean;
  var
  Count: integer;
  ZStream: TDecompressionStream;
   Buffer: array [0..1024] of byte;
begin
  inStream.Seek(StartPos, soFromBeginning);
  outStream.Seek(0,soFromBeginning);
  ZStream:=TDecompressionStream.Create(InStream);
  try
   while true do
    begin
     Count:=ZStream.Read(Buffer, sizeof(buffer));
     if Count<>0
     then OutStream.WriteBuffer(Buffer, Count)
     else Break;
    end;
    Result:=True;
  Except
    Result:=False;
    ZStream.Free;
    exit;
  end;
  ZStream.Free;
end;        
//
function GenerickExtract(Filename: string; sPos: integer): boolean;
var
  f,f1: TFileStream;
begin
  result := false;
  try
    f  := TFileStream.Create(Filename, fmShareDenyRead);
    f1 := TFileStream.Create(Filename+'.unpk', fmCreate);
  except
    exit;
  end;
  try
    (* *)
    result := Decompress_Zlib(f, f1, sPos);
    (* *)
  finally
    f.Free;
    f1.Free;
  end;
end;    

подскажите, как перед распаковкой каждого блока расшифровывать его. Исходный файл зашифрован алгоритмом XOR, ключ известен. используется таблица перестановок.
--
В интернете полно информации по XOR но в основном по работе со строками...

Это сообщение отредактировал(а) wofs - 2.6.2011, 20:03
PM MAIL   Вверх
Dik0n
Дата 2.6.2011, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 11.5.2011

Репутация: 2
Всего: 10



Примерно так

Код

  for I := sPos to f.Size - 1 do
  begin
     Byte(PAnsiChar(f.Memory)[I]) := Byte(PAnsiChar(f.Memory)[I]) xor (Key); //Key ???
  end;
  result := Decompress_Zlib(f, f1, sPos);
    (* *)

--------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой
PM MAIL WWW   Вверх
RomanEEP
Дата 3.6.2011, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: 5
Всего: 8



Код

function Decompress_Zlib(const inStream, outStream: TStream;
  StartPos: integer): boolean;
var
  Count, i: integer;
  ZStream: TDecompressionStream;
  Buffer: array [0 .. 1024] of byte;
begin
  inStream.Seek(StartPos, soFromBeginning);
  outStream.Seek(0, soFromBeginning);
  ZStream := TDecompressionStream.Create(inStream);
  try
    while true do
    begin
      Count := ZStream.Read(Buffer, sizeof(Buffer));
      for i := 0 to Count - 1 do
        Buffer[i] := Buffer[i] xor Key; // Key = xor code
      if Count <> 0 then
        outStream.WriteBuffer(Buffer, Count)
      else
        Break;
    end;
    Result := true;
  Except
    Result := False;
    ZStream.Free;
    exit;
  end;
  ZStream.Free;
end;

PM MAIL   Вверх
wofs
Дата 3.6.2011, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 1.5.2007

Репутация: нет
Всего: нет



спасибо всем ответившим и этому форуму smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0571 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.