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

Discussion in 'PHP' started by Zazil, 10 Dec 2009.

  1. Zazil

    Zazil Elder - Старейшина

    Joined:
    17 Feb 2005
    Messages:
    38
    Likes Received:
    1
    Reputations:
    0
    Вообщем сабж.
    кто хорошо разбирается в Perl помогите плиз
    Вообщем этот скрипт кодирует все файлы находящиеся в директории files и записывает в файл my.bin
    Его можно раскодировать только если знаешь key
    Вообщем вопрос такой. Можно как-то подобрать этот key? Помогите плиз, надо очень один файлик раскриптовать. Спасибо
    Code:
    #!/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;
    
     
  2. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Никудышный алгоритм =(
     
  3. Zazil

    Zazil Elder - Старейшина

    Joined:
    17 Feb 2005
    Messages:
    38
    Likes Received:
    1
    Reputations:
    0
    Чем он плох? Есть возможность подобрать ключ?
     
  4. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Ненадёжный, наверное?
    Да.
     
  5. Zazil

    Zazil Elder - Старейшина

    Joined:
    17 Feb 2005
    Messages:
    38
    Likes Received:
    1
    Reputations:
    0
    Не поможешь с подборкой ключа?