Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2016, 10:03   #11
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну так вы прочитайте П.С. ...
p51x вне форума Ответить с цитированием
Старый 05.08.2016, 10:55   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ну, раз Вас прошлый результат устроил, то, думаю, что и этот обрадует

вот код:
Код:
program DeCryptFile2;

{$APPTYPE CONSOLE}

uses
  SysUtils, Classes;

var
    f1,f2 : file of byte;
    j, keyIndex : integer;
    s, key : AnsiString;
begin
  key := '1qaz2wsx3e';
  AssignFile(f1, 'D:\temp\test.txt');
  Reset(f1);
  if FileSize(f1)=0 then begin CloseFile(f1); Exit; end;
  AssignFile(f2, 'd:\temp\result_.dat');
  Rewrite(f2);

  SetLength(s, FileSize(f1));
  BlockRead(f1, s[1], FileSize(f1));

  keyIndex := 1;
  j:=1;
  while j<Length(s) do begin
     if (s[j]=#$0D) and (s[j+1]=#$0A) then Inc(j,2)
     else begin
        s[j] := chr( ord(s[j]) xor ord(key[keyIndex]));
       Inc(keyIndex);
       if keyIndex>Length(key) then keyIndex:=1;
       inc(j);
     end;
  end;
  BlockWrite(f2, s[1], Length(s));
  CloseFile(f1);
  CloseFile(f2);
end.
вот результат:
result2.png

p.s. если нужно, могу exeшник выложить...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.08.2016, 18:48   #13
sarsen
Пользователь
 
Регистрация: 04.08.2016
Сообщений: 58
По умолчанию

спасибо большое! а можно сделать так чтобы ключ вводить при запуске екзешника, потому что ключ может меняться а каждый раз компилить проблематично.

Последний раз редактировалось Alex11223; 16.10.2016 в 15:42.
sarsen вне форума Ответить с цитированием
Старый 05.08.2016, 20:50   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

можно, конечно.

можно через параметры командной строки:
Код:
if ParamCount>0 then key:=ParamStr(1)
else key := '1qaz2wsx3e';
а можно через запрос ввода:
Код:
Write('Введите ключ: ');
ReadLn(key);
а ещё можно совместить оба этих метода.
А ещё можно создать конфигурационный файл (ну, например, формата INI) и брать имена файлов и ключ оттуда.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.08.2016, 01:12   #15
sarsen
Пользователь
 
Регистрация: 04.08.2016
Сообщений: 58
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
можно, конечно.

можно через параметры командной строки:
Код:
if ParamCount>0 then key:=ParamStr(1)
else key := '1qaz2wsx3e';
а можно через запрос ввода:
Код:
Write('Введите ключ: ');
ReadLn(key);
а ещё можно совместить оба этих метода.
А ещё можно создать конфигурационный файл (ну, например, формата INI) и брать имена файлов и ключ оттуда.
сделайте пожалуйста с ini , я уже достал наверное это моя последняя просьба, потом какнить отблагодарю не забуду.

Последний раз редактировалось sarsen; 06.08.2016 в 01:14.
sarsen вне форума Ответить с цитированием
Старый 06.08.2016, 13:23   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Код:
program DeCryptFile2;

{$APPTYPE CONSOLE}

uses
  SysUtils, Classes, IniFiles;

var
  f1,f2 : file of byte;
  j, keyIndex : integer;
  s, key : AnsiString;
  AppIniFile: TIniFile;
  f1Name, f2Name : string;

begin

  try
    AppIniFile := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
    f1Name := AppIniFile.ReadString('Main','Source_filename', '');
    if trim(f1Name)='' then begin 
        f1Name := ExtractFilePath(ParamStr(0))+'test.txt';
        AppIniFile.WriteString('Main','Source_filename', f1Name);
    end;
    f2Name := AppIniFile.ReadString('Main','Result_filename', '');
    if trim(f2Name)='' then begin
       f2Name := ExtractFilePath(ParamStr(0))+'result.txt';
       AppIniFile.WriteString('Main','Result_filename', f2Name);
    end;
    key := AppIniFile.ReadString('Main','Key', '');
    if trim(key)='' then begin
      key := '1qaz2wsx3e';
      AppIniFile.WriteString('Main','Key', key);
    end;
  finally
    FreeAndNil(AppIniFile);
  end;

  if Not FileExists(f1Name) then begin WriteLn('#Error: file ',f1Name,' not found!'); Exit end;
  AssignFile(f1, f1Name);
  Reset(f1);
  if FileSize(f1)=0 then begin CloseFile(f1); Exit; end;

  AssignFile(f2, f2Name);
  Rewrite(f2);

  SetLength(s, FileSize(f1));
  BlockRead(f1, s[1], FileSize(f1));

  keyIndex := 1;
  j:=1;
  while j<Length(s) do begin
     if (s[j]=#$0D) and (s[j+1]=#$0A) then Inc(j,2)
     else begin
        s[j] := chr( ord(s[j]) xor ord(key[keyIndex]));
       Inc(keyIndex);
       if keyIndex>Length(key) then keyIndex:=1;
       inc(j);
     end;
  end;
  BlockWrite(f2, s[1], Length(s));
  CloseFile(f1);
  CloseFile(f2);
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.08.2016, 19:51   #17
sarsen
Пользователь
 
Регистрация: 04.08.2016
Сообщений: 58
По умолчанию

Огромнийшее спасибо! Будет время буду учить паскаль!

Последний раз редактировалось Alex11223; 16.10.2016 в 15:41.
sarsen вне форума Ответить с цитированием
Старый 06.08.2016, 19:55   #18
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от sarsen Посмотреть сообщение
буду учить паскаль
Зачем?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.08.2016, 04:37   #19
sarsen
Пользователь
 
Регистрация: 04.08.2016
Сообщений: 58
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Зачем?
чтобы было!
Уважаемый Serge_Bliznykov, у меня такой вопрос, если знаешь с чего начинается файл ну тоесть что содержит, это T1 и T2 можно написать парсер путём перебора хор, чтобы не зная пароля он вычислил и также конвертнул?
sarsen вне форума Ответить с цитированием
Старый 08.08.2016, 09:49   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
если знаешь с чего начинается файл ну тоесть что содержит, это T1 и T2 можно написать парсер путём перебора хор, чтобы не зная пароля он вычислил и также конвертнул?
не уверен, что это возможно.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно написать конвертер Nemesis4ever Помощь студентам 0 16.01.2011 15:22
Помогите написать конвертер cpp->html Vano-sie72 Помощь студентам 1 18.05.2009 22:15
Помогите написать конвертер cpp->html Vano-sie72 Фриланс 1 18.05.2009 15:57
задача под windows,помогите написать.Надо написать на Borland C++Builder 6. eddddii Помощь студентам 9 23.05.2008 17:04