perl encrypt

 require 5.002 ;

use strict;
use warnings;

use vars qw($XOR $BLOCKSIZE $HEADERSIZE $CRYPT_MAGIC_1 $CRYPT_MAGIC_2
     $size $mode $line $Fingerprint $file $block
    ) ;

$XOR   = 'Perl' ;
$BLOCKSIZE       = length $XOR ;
$HEADERSIZE      = 2 ;
$CRYPT_MAGIC_1   = 0xff ;
$CRYPT_MAGIC_2   = 0x00 ;

$Fingerprint     = pack ("C*", $CRYPT_MAGIC_1, $CRYPT_MAGIC_2) ;

die "Usage: encrypt file...\n"
  unless @ARGV ;

# Loop throught each file in turn.
foreach $file (@ARGV)
{

    if (! -T $file)
    {
 print "Skipping directory $file\n" if -d $file ;
 print "Skipping non-text $file\n" if ! -d $file ;
 next ;
    }

    open (F, "<$file") or die "Cannot open $file: $!\n" ;
    open (O, ">${file}.pe") or die "Cannot open ${file}.pe: $!\n" ;
    binmode O;

    # Get the mode
    $mode = (stat F)[2] ;

    # Check for "#!perl" line
    $line = <F> ;

    if ( $line =~ /^#!/ )
      { print O $line }
    else
      { seek F, 0, 0 }
   
    print O "use Filter::decrypt ;\n" ;
    print O $Fingerprint ;


    $block = '';
    while ($size = read(F, $block, $BLOCKSIZE) )
    {
        print O ($block ^ substr($XOR, 0, length $block)) ;
    }

    close F ;
    close O ;

    unlink ($file)
 or die "Could not remove '$file': $!\n" ;

    rename ("${file}.pe", $file)
 or die "Could not rename $file.pe to $file: $!\n" ;

    chmod $mode, $file unless $^O eq 'MSWin32' ;

    print "encrypted $file\n" ;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值