3 # This script will decrypt a Perl script that has been encrypted using the
4 # "encrypt" script. It cannot decrypt any other kind of encrypted Perl script.
6 # Usage is decr file...
12 use vars qw($XOR $BLOCKSIZE $HEADERSIZE $CRYPT_MAGIC_1 $CRYPT_MAGIC_2
13 $size $mode $line $Fingerprint $file $block $sharp_bang $f
16 $BLOCKSIZE = length $XOR ;
18 $CRYPT_MAGIC_1 = 0xff ;
19 $CRYPT_MAGIC_2 = 0x00 ;
21 my $module_name = 'Filter::decrypt' ;
23 my $Fingerprint = pack ("C*", $CRYPT_MAGIC_1, $CRYPT_MAGIC_2) ;
25 die "Usage: decrypt file...\n"
29 # Loop through each file in turn.
34 print "Skipping directory $file\n" if -d $file ;
35 #print "Skipping strange file $file\n" if ! -d $file ;
39 open (F, "<$file") || die "Cannot open $file: $!\n" ;
49 # skip "use decrypt;" line
50 die "No use $module_name in $file\n"
51 unless $a =~ /use\s+$module_name\s*;/ ;
53 read(F, $f, length($Fingerprint)) || die "Cannot read from $file: $!\n" ;
54 (print "skipping file '$file': not encrypted\n"), next
55 unless $f eq $Fingerprint ;
57 print "decrypting $file to $file.pd\n" ;
58 open (O, ">${file}.pd") || die "Cannot open ${file}.pd: $!\n" ;
59 print O $sharp_bang if $sharp_bang ;
60 while ($size = read(F, $block, $BLOCKSIZE) )
62 print O ($block ^ substr($XOR, 0, $size)) ;