📄 crystal.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 + -