помогите плиз разобраться с алгоритмом кодирования (Perl)

Статус
В этой теме нельзя размещать новые ответы.

Zazil

Постоялец
Регистрация
18 Окт 2007
Сообщения
52
Реакции
39
Вообщем сабж.
кто хорошо разбирается в Perl помогите плиз
Вообщем этот скрипт кодирует все файлы находящиеся в директории files и записывает в файл my.bin
Его можно раскодировать только если знаешь key
Вообщем вопрос такой. Можно как-то подобрать этот key? Помогите плиз, надо очень один файлик раскриптовать. Спасибо
Код:
Код:
#!/usr/bin/perl

sub Encode{
  $m=0;
  while (substr($ekey,$m*6,6) ne "") {
    $eo=int(substr($ekey,$m*6,3));
    $ea=int(substr($ekey,$m*6+3,3));
    &EncodePass;
    $m++;
  }
}

sub EncodePass {
  $o=$eo;
  $ninput=length($data);
  for ($i=0;$i<=$ninput-$o-1;$i++) {
    $char1=substr($data,$i,1);
    $char2=substr($data,$i+$o,1);

    $nchar=ord($char2);
    if ($ea>255){$ea=0;}
    $nchar=$nchar+$ea;
    if ($nchar>255){$nchar=$nchar-256;}
    $char2=chr($nchar);
    $ea++;

    substr($data,$i,1)=$char2;
    substr($data,$i+$o,1)=$char1;
    $o++;
  }

  $o--;
  $ea--;
  $keyn=sprintf("%.3u"."%.3u"."%.6u"."%.6u",$eo,$ea,$i,$o);
  $key="$keyn"."$key";
}

sub EncodeBin {
  chomp(@files=`ls files`);
  foreach $file(@files) {
    $infile=`cat files/$file`;
    $data="$data$infile"."\n<--SPLIT HERE-->\n";
  }
  &Encode;
  open (ENCODED,">my.bin");
  print ENCODED "$data";
  close (ENCODED);
 }




sub Decode {
  $e=`type my.bin`;

  $m=0;
  while (substr($key,$m*18,18) ne "") {
    $b=substr($key,$m*18,3);
    $a=substr($key,$m*18+3,3);
    $i=substr($key,$m*18+6,6);
    $d=substr($key,$m*18+12,6);
    &D;
    $m++;
  }
(@file) = split /<--SPLIT HERE-->\n/,$e;
  

  open (TXT,">c.c");
  print TXT "$file[0]";
  close (TXT);
  

}

sub D {
  for ($j=$d;$j>=$b;$j--) {  
    $i--;
    $g=substr($e,$i+$j,1);
    $f=ord(substr($e,$i,1))-$a;
    if ($f<0){$f=$f+256;}
   substr($e,$i,1)=$g;
   substr($e,$i+$j,1)=chr($f);
    $a--;
    if ($a<0){$a=255;}    
  }
}



print "Enter ekey (example: 001211): ";
chomp($ekey=<STDIN>);
print "Encode key $ekey \n";
&EncodeBin;
print "Decode key $key  \n";
&Decode;
 
надо чтобы этот скрипт ключ как параметр принимал и в цикле его exec'ом запускать пока не подберешь. должен быть какой-то критерий или условие по которому можно понять подошел ключ или нет.
 
надо чтобы этот скрипт ключ как параметр принимал и в цикле его exec'ом запускать пока не подберешь. должен быть какой-то критерий или условие по которому можно понять подошел ключ или нет.
Спасибо, но это почти нереально. Ключ для расшифровки 18 байт,это как минимум. Если делать через экзек, то очень очень долго подбираться ключ будет.
 
Во-первых не exec а system или ``, т.к. exec приводит завершению скрипта, и проверить мы уже ничего не сможем.
Во-вторых зачем вообще внешний вызов, тогда уж лучше непосредственно сабжевую программу изменить, добавив цикл и проверку.

В алгоритме не разбирался, но если реализован человеком, который в вопросе разобрался, а не сочинен говнокодером, то от перебора все равно не уйдешь, т.к. на то они и криптограммы.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху