⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crystal.pl

📁 破解很多程序的序列号算法程序
💻 PL
字号:
#! /perl/bin/perl.exe

# Created by friendship_@bimamail.com
# Program : Key Generator for Crystal FTP v.1.0

   my ($n1, $n2, $n3, $n4, $n5, $n6, $n7, $n8) = 0;
   my @_f738_ = qw (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0);
   my @_f758_ = qw (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0);
   my @_fab8_ = qw (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0);
   my @_f6c0_ = qw (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0);
   my @_f718_ = qw (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0);
   my @_f6a0_ = qw (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0);

@_bbeettaa = qw(
0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0
0 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1
0 1 1 1 0 1 0 0 0 1 1 1 0 1 0 0
0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1);

@_f778_ = qw (
1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 0
1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0);

@_f7a8_ = qw (
1 1 1 0 0 0 0 0 1 0 1 1 0 1 1 0
1 1 1 1 0 1 1 0 0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0);

@_f7d8_ = qw (
1 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0
0 1 1 1 0 1 1 0 0 0 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1);

@_f808_ = qw (
1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1
0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0);

@_f838_ = qw (
1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 1
0 1 1 1 0 1 1 1 0 0 1 0 0 1 0 0
0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1);

@_f868_ = qw (
1 1 1 0 1 1 1 1 0 1 0 1 0 0 1 1
0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 0
0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1);

@_f898_ = qw (
0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1
1 1 1 1 1 0 0 1 0 1 0 0 0 1 1 0
1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0);

@_f8c8_ = qw (
1 0 0 1 1 1 1 1 0 1 0 1 1 0 0 1
1 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0
0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0);

@_f8f8_ = qw (
0 0 0 1 1 1 1 1 0 1 0 0 1 0 1 1
1 1 0 1 1 0 1 1 0 1 0 0 0 1 0 0
0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0);

@_f928_ = qw (
0 0 1 1 1 1 1 1 0 1 1 1 1 0 0 1
1 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0
1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0);

@_f958_ = qw (
0 0 0 1 1 1 1 1 0 0 1 0 1 1 0 1
1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0
1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0);

@_f988_ = qw (
0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0
1 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0
0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0);

@_f9b8_ = qw (
1 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1
1 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1
0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0);

@_f9e8_ = qw (
1 1 0 1 0 0 1 0 1 0 1 0 1 1 1 0
1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0
0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0);

@_fa18_ = qw (
1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 0
0 0 1 0 0 1 1 0 1 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0);

@_fa48_ = qw (
1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0
0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0);

my @_48DC7C_ = qw (
28 8 30 10 38 18 40 20 27 7 2F F 37 17 3F 1F
26 6 2E E 36 16 3E 1E 25 5 2D D 35 15 3D 1D
24 4 2C C 34 14 3C 1C 23 3 2B B 33 13 3B 1B
22 2 2A A 32 12 3A 1A 21 1 29 9 31 11 39 19);

@_48DD0C_ = qw (
E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7
0 F 7 4 E 2 D 1 A 6 C B 9 5 3 8
4 1 E 8 D 6 2 B F C 9 7 3 A 5 0
F C 8 2 4 9 1 7 5 B 3 E A 0 6 D);

@_48DD4C_ = qw (
F 1 8 E 6 B 3 4 9 7 2 D C 0 5 A
3 D 4 7 F 2 8 E C 0 1 A 6 9 B 5
0 E 7 B A 4 D 1 5 8 C 6 9 3 2 F
D 8 A 1 3 F 4 2 B 6 7 C 0 5 E 9);

@_48DD8C_ = qw (
A 0 9 E 6 3 F 5 1 D C 7 B 4 2 8
D 7 0 9 3 4 6 A 2 8 5 E C B F 1
D 6 4 9 8 F 3 0 B 1 2 C 5 A E 7
1 A D 0 6 9 8 7 4 F E 3 B 5 2 C);

@_48DDCC_ = qw (
7 D E 3 0 6 9 A 1 2 8 5 B C 4 F
D 8 B 5 6 F 0 3 4 7 2 C 1 A E 9
A 6 9 0 C B 7 D F 1 3 E 5 2 8 4
3 F 0 6 A 1 D 8 9 4 5 B C 7 2 E);

@_48DE0C_ = qw (
02 0C 04 01 07 0A 0B 06 08 05 03 0F 0D 00 0E 09
0E 0B 02 0C 04 07 0D 01 05 00 0F 0A 03 09 08 06
04 02 01 0B 0A 0D 07 08 0F 09 0C 05 06 03 00 0E
0B 08 0C 07 01 0E 02 0D 06 0F 00 09 0A 04 05 03);

@_48DE4C_ = qw (
0C 01 0A 0F 09 02 06 08 00 0D 03 04 0E 07 05 0B
0A 0F 04 02 07 0C 09 05 06 01 0D 0E 00 0B 03 08
09 0E 0F 05 02 08 0C 03 07 00 04 0A 01 0D 0B 06
04 03 02 0C 09 05 0F 0A 0B 0E 01 07 06 00 08 0D);

@_48DE8C_ = qw (
04 0B 02 0E 0F 00 08 0D 03 0C 09 07 05 0A 06 01
0D 00 0B 07 04 09 01 0A 0E 03 05 0C 02 0F 08 06
01 04 0B 0D 0C 03 07 0E 0A 0F 06 08 00 05 09 02
06 0B 0D 08 01 04 0A 07 09 05 00 0F 0E 02 03 0C);

@_48DECC_ = qw (
0D 02 08 04 06 0F 0B 01 0A 09 03 0E 05 00 0C 07
01 0F 0D 08 0A 03 07 04 0C 05 06 0B 00 0E 09 02
07 0B 04 01 09 0C 0E 02 00 06 0A 0D 0F 03 05 08
02 01 0E 07 04 0A 08 0D 0F 0C 09 00 03 05 06 0B);

my @_48DC3C_ = qw (
3A 32 2A 22 1A 12 0A 02 3C 34 2C 24 1C 14 0C 04
3E 36 2E 26 1E 16 0E 06 40 38 30 28 20 18 10 08);

my @_48DC5C_ = qw (
39 31 29 21 19 11 09 01 3B 33 2B 23 1B 13 0B 03
3D 35 2D 25 1D 15 0D 05 3F 37 2F 27 1F 17 0F 07);

my @_48DCBC_ = qw (
20 01 02 03 04 05 04 05 06 07 08 09 08 09 0A 0B
0C 0D 0C 0D 0E 0F 10 11 10 11 12 13 14 15 14 15
16 17 18 19 18 19 1A 1B 1C 1D 1C 1D 1E 1F 20 01);

my @_48DCEC_ = qw (
10 07 14 15 1D 0C 1C 11 01 0F 17 1A 05 12 1F 0A
02 08 18 0E 20 1B 03 09 13 0D 1E 06 16 0B 04 19);

my @table1_ = qw (
_48DD0C_ _48DD4C_ _48DD8C_ _48DDCC_
_48DE0C_ _48DE4C_ _48DE8C_ _48DECC_);

my @table = qw (
_f778_ _f7a8_ _f7d8_ _f808_ _f838_ _f868_ _f898_ _f8c8_
_f8f8_ _f928_ _f958_ _f988_ _f9b8_ _f9e8_ _fa18_ _fa48_);


print "Input User Name : ";
$_ = <STDIN>; chop($_);
$user = $_;

($dd, $ii) = 0;
$len = length ($user); 
for ($ss=0; $ss<$len; ++$ss) {
   $ee .= substr($user, $ss, 1);

   if ($ii == 7) {
      $_user .= $ee;
      if ($ff ne $ee) { ($rr, $hx) = &start }
      $nn .= $rr; $xh .= $hx; $ff = $ee;
      &save(0); $ee = ""
   }
   ++$ii; $ii = ($ii < 8) ? $ii : 0;
}

$len = length($ee);
if ($len > 0) {
   $len = 8 - $len;
   $ee = $ee . "_" x $len; $_user .= $ee;
   ($rr, $hx) = &start; $nn .= $rr; $xh .= $hx;
}

   print "\nFinal Result :\n";
   print "S/N : 222$nn\n";
   print "U/N : $_user\n";
   &save(1);

sub save {
   my $o = shift;

   open (FO, ">_crystal.txt");
   if ($o) {
      print FO "Final Result :\n"
   } else {
      print FO "Temporary Result :\n";
   }
      print FO "S/N : 222$nn\n";
      print FO "U/N : $xh\n";
      print FO "U/N : $_user\n";
   close (FO)
}

sub start {
   my ($ss, $done, $thex, $tname, $tt);
   my @dump = ();

   $n8 = 0;        # You may change 
   $n7 = 0;        # the value
   $n6 = 0;        # to start counting
   $n5 = 0;
   $n4 = 0;
   $n3 = 0;
   $n2 = 0;
   $n1 = 0;
   &decS(1,255); ++$dd; $done = 0;
   while (!$done) {
      $ss = &incS(1,255); ++$tt;
      ($tname, $thex) = &analyze($ss);
      print "Searching for ($dd) --> $ee\n";
      print "Temporary result ($tt) :\n";
      print "SN: 222$ss$ss\nUN: $thex$thex\nUN: $tname$tname\n";
      if ($tname eq $ee) { $done = 1 }
   }
   return $ss, $thex;
}

sub analyze {
   my $data = shift;
   my ($idx, $i, $d, $j, $s, $r, $r1) = 0;
   my @d = ();

   for ($i=0; $i<8; ++$i) {
      $d = substr($data, 3*$i,3); 
      $d = $d - int($d/256) * 256;
      $s = dectobin($d,8);
      for $j (0..7) {
         $_fab8_[$j + $i * 8] = substr($s, $j, 1)
      }
   }
   
   for ($i=0; $i<32; ++$i) {
      $idx = hex($_48DC3C_[$i]) - 1;
      $_f758_[$i] = $_fab8_[$idx];
      $idx = hex($_48DC5C_[$i]) - 1;
      $_f738_[$i] = $_fab8_[$idx]
   }

   for ($j=15; $j>=0; --$j) {
      $d = $table[$j]; @d = @$d;
      for ($i=0; $i<48; ++$i) {
         $idx = hex($_48DCBC_[$i]) - 1;
         $d = int($d[$i]) ^ $_f738_[$idx];
         $_f6c0_[$i] = $d
      }

      for ($i=0; $i<8; ++$i) {
         $d = $table1_[$i]; @d = @$d;
         $idx = 6 * $i;
         $s = 16 * (2 * $_f6c0_[$idx] + $_f6c0_[5+$idx]);
         $d = $_f6c0_[1+$idx].$_f6c0_[2+$idx].$_f6c0_[3+$idx].$_f6c0_[4+$idx];
         $s += bintodec($d);
         $d = hextobin($d[$s],4);
         $idx = 4 * $i;
         $_f6a0_[0 + $idx] = substr($d,0,1);
         $_f6a0_[1 + $idx] = substr($d,1,1);
         $_f6a0_[2 + $idx] = substr($d,2,1);
         $_f6a0_[3 + $idx] = substr($d,3,1)
      }

      for ($i=0; $i<32; ++$i) {
         $idx = hex($_48DCEC_[$i]) - 1;
         $idx = $_f6a0_[$idx] ^ int($_f758_[$i]);
         $_f718_[$i] = $idx
      }

      @_f758_ = @_f738_;
      @_f738_ = @_f718_
   }

   @d = (); $j = 0;
   push (@d, @_f738_, @_f758_);
   for $i (0..$#d) {
      $idx = hex($_48DC7C_[$i]) - 1;
      $j .= $d[$idx];
      $s = $i - int($i/8)*8;
      if ($s eq 7) {
         $d = bintodec($j);
         $d = chr($d);
         $r .= $d;
         $d = bintohex($j,2);
         $r1 .= $d." ";
         $j = 0
      }
   }
   return $r, $r1;
}

sub dectobin {
   my $data = shift;
   my $len  = shift;
   my $i    = 0;

   my $r = unpack("B32", pack("N", $data));
   $r = substr("0" x $len . $r, -$len);
   return $r
}

sub hextobin {
   my $data = shift;
   my $len  = shift;
   my $i    = 0;

   my $r = unpack("B32", pack("N", hex($data)));
   $r = substr("0" x $len . $r, -$len);
   return $r
}

sub bintodec {
   my $data = shift;
   my $len = shift;
   my $r = unpack("N", pack("B32", substr("0" x 32 . $data, -32)));
   $r = substr("0" x $len . $r, -$len);
   return $r
}

sub bintohex {
   my $data = shift;
   my $len  = shift;
   my $i    = 0;

   my $r = unpack("H8", pack("B32", substr("0" x 32 . $data, -32)));
   $r = substr("0" x $len . $r, -$len);
   return uc($r)
}

sub dectohex {
   my $data = shift;
   my $len  = shift;
   my $i    = 0;

   my $r = unpack("H8", pack("N", $data));
   $r = substr("0" x $len . $r, -$len);
   return uc($r)
}

sub incS {
   my $p = shift;
   my $num = shift;
   my $r;

   $n8 += $p;
   if ($n8 > $num) {
      $n8 = 0; $n7 += $p;
      if ($n7 > $num) {
         $n7 = 0; $n6 += $p;
         if ($n6 > $num) {
            $n6 = 0; $n5 += $p;
            if ($n5 > $num) {
               $n5 = 0; $n4 += $p;
               if ($n4 > $num) {
                  $n4 = 0; $n3 += $p;
                  if ($n3 > $num) {
                     $n3 = 0; $n2 += $p;
                     if ($n2 > $num) {
                        $n2 = 0; $n1 += $p;
                        if ($n1 > $num) {
                           $n1 = 0
                        }
                     }
                  }
               }
            }
         }
      }
   }
   $n1 = substr("0" x 3 . $n1, -3);
   $n2 = substr("0" x 3 . $n2, -3);
   $n3 = substr("0" x 3 . $n3, -3);
   $n4 = substr("0" x 3 . $n4, -3);
   $n5 = substr("0" x 3 . $n5, -3);
   $n6 = substr("0" x 3 . $n6, -3);
   $n7 = substr("0" x 3 . $n7, -3);
   $n8 = substr("0" x 3 . $n8, -3);
   $r = $n8.$n7.$n6.$n5.$n4.$n3.$n2.$n1;
   return $r
}

sub decS {
   my $p = shift;
   my $num = shift;
   my $r;

   $n8 -= $p;
   if ($n8 < 0) {
      $n8 = $num; $n7 -= $p;
      if ($n7 < 0) {
         $n7 = $num; $n6 -= $p;
         if ($n6 < 0) {
            $n6 = $num; $n5 -= $p;
            if ($n5 < 0) {
               $n5 = $num; $n4 -= $p;
               if ($n4 < 0) {
                  $n4 = $num; $n3 -= $p;
                  if ($n3 < 0) {
                     $n3 = $num; $n2 -= $p;
                     if ($n2 < 0) {
                        $n2 = $num; $n1 -= $p;
                        if ($n1 < 0) {
                           $n1 = $num;
                        }
                     }
                  }
               }
            }
         }
      }
   }
   $n1 = substr("0" x 3 . $n1, -3);
   $n2 = substr("0" x 3 . $n2, -3);
   $n3 = substr("0" x 3 . $n3, -3);
   $n4 = substr("0" x 3 . $n4, -3);
   $n5 = substr("0" x 3 . $n5, -3);
   $n6 = substr("0" x 3 . $n6, -3);
   $n7 = substr("0" x 3 . $n7, -3);
   $n8 = substr("0" x 3 . $n8, -3);
   # $r = $n8.$n7.$n6.$n5.$n4.$n3.$n2.$n1;
   # return $r
}

__END__

sub prt {
   my @data = @_;
   my ($i, $l) = 0;

   for $i (0..$#data) {
      print "$data[$i]";
      $l = $i - int($i/16)*16;
      print " = ".($i + 1)."\n" if ($l eq 15);
      print " - " if  ($l eq 7);
   }
   print "\n"
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -