Windows NT KAMIDAKI 10.0 build 19045 (Windows 10) AMD64
Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.3.9
Server IP : 192.168.3.16 & Your IP : 216.73.216.204
Domains :
Cant Read [ /etc/named.conf ]
User : SISTEMA
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
C: /
xampp /
perl /
bin /
Delete
Unzip
Name
Size
Permission
Date
Action
SOAPsh.bat
3.35
KB
-rwxrwxrwx
2021-01-24 18:08
SOAPsh.pl
2.75
KB
-rw-rw-rw-
2021-01-24 18:01
bdf2gdfont.bat
5.26
KB
-rwxrwxrwx
2021-01-24 18:08
bdf2gdfont.pl
4.75
KB
-rw-rw-rw-
2021-01-24 17:46
chartex
5.67
KB
-rw-rw-rw-
2021-01-24 18:01
chartex.bat
6.47
KB
-rwxrwxrwx
2021-01-24 18:08
config_data
7.2
KB
-rw-rw-rw-
2021-01-24 18:01
config_data.bat
7.73
KB
-rwxrwxrwx
2024-07-26 17:42
corelist.bat
15.75
KB
-rwxrwxrwx
2023-11-19 11:41
cpan
8.06
KB
-rw-rw-rw-
2021-01-24 18:01
cpan-mirrors
4.18
KB
-rw-rw-rw-
2021-01-24 18:01
cpan-mirrors.bat
5.1
KB
-rwxrwxrwx
2021-01-24 18:08
cpan-outdated
8.85
KB
-rw-rw-rw-
2021-01-24 18:01
cpan-outdated.bat
9.67
KB
-rwxrwxrwx
2021-01-24 18:08
cpan.bat
9.16
KB
-rwxrwxrwx
2021-01-24 18:08
cpan2dist
21.22
KB
-rw-rw-rw-
2021-01-24 18:01
cpan2dist.bat
22.39
KB
-rwxrwxrwx
2021-01-24 18:08
cpandb
6.6
KB
-rw-rw-rw-
2021-01-24 18:01
cpandb.bat
7.37
KB
-rwxrwxrwx
2021-01-24 18:08
cpanel_json_xs
9.75
KB
-rw-rw-rw-
2021-01-24 18:01
cpanel_json_xs.bat
10.58
KB
-rwxrwxrwx
2021-01-24 18:08
cpanfile-dump
3.45
KB
-rw-rw-rw-
2021-01-24 16:20
cpanfile-dump.bat
4.08
KB
-rwxrwxrwx
2021-01-24 18:08
cpanm
295.67
KB
-rw-rw-rw-
2021-01-24 16:36
cpanm.bat
297.23
KB
-rwxrwxrwx
2021-01-24 18:08
cpanp
3.22
KB
-rw-rw-rw-
2021-01-24 18:01
cpanp-run-perl
459
B
-rw-rw-rw-
2021-01-24 16:38
cpanp-run-perl.bat
990
B
-rwxrwxrwx
2021-01-24 18:08
cpanp.bat
3.84
KB
-rwxrwxrwx
2021-01-24 18:08
crc32
1.01
KB
-rw-rw-rw-
2021-01-24 18:01
crc32.bat
1.57
KB
-rwxrwxrwx
2021-01-24 18:08
dbicadmin
7
KB
-rw-rw-rw-
2021-01-24 18:01
dbicadmin.bat
7.87
KB
-rwxrwxrwx
2021-01-24 18:08
dbilogstrip
1.39
KB
-rw-rw-rw-
2021-01-24 17:15
dbilogstrip.bat
1.89
KB
-rwxrwxrwx
2021-01-24 18:08
dbiprof
6.31
KB
-rw-rw-rw-
2021-01-24 17:15
dbiprof.bat
6.82
KB
-rwxrwxrwx
2021-01-24 18:08
dbiproxy
5.44
KB
-rw-rw-rw-
2021-01-24 17:15
dbiproxy.bat
5.95
KB
-rwxrwxrwx
2021-01-24 18:08
enc2xs
40.68
KB
-rw-rw-rw-
2021-01-24 18:01
enc2xs.bat
42.87
KB
-rwxrwxrwx
2021-01-24 18:08
encguess
2.91
KB
-rw-rw-rw-
2021-01-24 18:01
encguess.bat
3.8
KB
-rwxrwxrwx
2021-01-24 18:08
exe_update.bat
4.71
KB
-rwxrwxrwx
2021-01-24 18:08
exe_update.pl
4.05
KB
-rw-rw-rw-
2021-01-24 18:01
exetype.bat
3.53
KB
-rwxrwxrwx
2021-01-24 18:08
extract_vba
2.98
KB
-rw-rw-rw-
2021-01-24 18:01
extract_vba.bat
3.62
KB
-rwxrwxrwx
2021-01-24 18:08
factor.bat
3.77
KB
-rwxrwxrwx
2021-01-24 18:08
factor.pl
3.16
KB
-rw-rw-rw-
2021-01-24 18:01
findrule
3.24
KB
-rw-rw-rw-
2021-01-24 16:52
findrule.bat
3.88
KB
-rwxrwxrwx
2021-01-24 18:08
h2ph.bat
30.27
KB
-rwxrwxrwx
2024-07-26 17:42
h2xs.bat
62.43
KB
-rwxrwxrwx
2024-07-26 17:42
htmltree
1.28
KB
-rw-rw-rw-
2021-01-24 18:01
htmltree.bat
1.81
KB
-rwxrwxrwx
2024-07-26 17:42
hypnotoad
1.03
KB
-rw-rw-rw-
2021-01-24 16:59
hypnotoad.bat
1.58
KB
-rwxrwxrwx
2021-01-24 18:08
instmodsh
4.09
KB
-rw-rw-rw-
2021-01-24 18:01
instmodsh.bat
5.03
KB
-rwxrwxrwx
2021-01-24 18:08
json_pp
4.77
KB
-rw-rw-rw-
2021-01-24 18:01
json_pp.bat
5.52
KB
-rwxrwxrwx
2024-07-26 17:42
json_xs
6.84
KB
-rw-rw-rw-
2021-01-24 18:01
json_xs.bat
7.6
KB
-rwxrwxrwx
2021-01-24 18:08
kwalitee-metrics
2.34
KB
-rw-rw-rw-
2021-01-24 18:01
kwalitee-metrics.bat
2.96
KB
-rwxrwxrwx
2021-01-24 18:08
libgcc_s_seh-1.dll
74.5
KB
-rw-rw-rw-
2019-03-14 23:36
libnetcfg.bat
16.88
KB
-rwxrwxrwx
2024-07-26 17:42
libstdc++-6.dll
1.36
MB
-rw-rw-rw-
2019-03-14 23:36
libwinpthread-1.dll
51
KB
-rw-rw-rw-
2019-03-14 23:36
llw32helper.bat
4.8
KB
-rwxrwxrwx
2021-01-24 18:08
llw32helper.pl
4.13
KB
-rw-rw-rw-
2021-01-24 17:51
lwp-download
10.04
KB
-rw-rw-rw-
2021-01-24 18:01
lwp-download.bat
10.88
KB
-rwxrwxrwx
2021-01-24 18:08
lwp-dump
2.64
KB
-rw-rw-rw-
2021-01-24 18:01
lwp-dump.bat
3.26
KB
-rwxrwxrwx
2021-01-24 18:08
lwp-mirror
2.35
KB
-rw-rw-rw-
2021-01-24 18:01
lwp-mirror.bat
2.96
KB
-rwxrwxrwx
2021-01-24 18:08
lwp-request
15.81
KB
-rw-rw-rw-
2021-01-24 18:01
lwp-request.bat
16.88
KB
-rwxrwxrwx
2021-01-24 18:08
mech-dump
4.74
KB
-rw-rw-rw-
2021-01-24 18:01
mech-dump.bat
5.44
KB
-rwxrwxrwx
2021-01-24 18:08
minicpan
5.36
KB
-rw-rw-rw-
2021-01-24 18:08
minicpan.bat
6.05
KB
-rwxrwxrwx
2021-01-24 18:08
module-version
2.06
KB
-rw-rw-rw-
2021-01-24 17:51
module-version.bat
2.65
KB
-rwxrwxrwx
2021-01-24 18:08
mojo
408
B
-rw-rw-rw-
2021-01-24 16:59
mojo.bat
953
B
-rwxrwxrwx
2021-01-24 18:08
moose-outdated
427
B
-rw-rw-rw-
2021-01-24 18:01
moose-outdated.bat
977
B
-rwxrwxrwx
2021-01-24 18:08
morbo
2.15
KB
-rw-rw-rw-
2021-01-24 16:59
morbo.bat
2.72
KB
-rwxrwxrwx
2021-01-24 18:08
mymeta-cpanfile
2.7
KB
-rw-rw-rw-
2021-01-24 16:20
mymeta-cpanfile.bat
3.32
KB
-rwxrwxrwx
2021-01-24 18:08
nssm_32.exe
288
KB
-rwxrwxrwx
2021-01-24 16:50
nssm_64.exe
323.5
KB
-rwxrwxrwx
2021-01-24 16:50
package-stash-conflicts
463
B
-rw-rw-rw-
2021-01-24 18:01
package-stash-conflicts.bat
1013
B
-rwxrwxrwx
2021-01-24 18:08
parinstallppd
3.35
KB
-rw-rw-rw-
2021-01-24 18:01
parinstallppd.bat
3.99
KB
-rwxrwxrwx
2021-01-24 18:08
perl.exe
39
KB
-rwxrwxrwx
2021-01-24 16:06
perl5.32.1.exe
39
KB
-rwxrwxrwx
2021-01-24 16:06
perl532.dll
3.26
MB
-rw-rw-rw-
2021-01-24 16:07
perlbug.bat
46.8
KB
-rwxrwxrwx
2024-07-26 17:42
perldoc.bat
1016
B
-rwxrwxrwx
2023-11-19 11:41
perlglob.bat
1.95
KB
-rwxrwxrwx
2021-01-24 18:08
perlglob.exe
17
KB
-rwxrwxrwx
2021-01-24 16:01
perlivp.bat
11.72
KB
-rwxrwxrwx
2024-07-26 17:42
perlthanks.bat
46.8
KB
-rwxrwxrwx
2024-07-26 17:42
perltidy
175.27
KB
-rw-rw-rw-
2021-01-24 18:01
perltidy.bat
180.32
KB
-rwxrwxrwx
2021-01-24 18:08
pgplet
10.37
KB
-rw-rw-rw-
2021-01-24 18:01
pgplet.bat
11.22
KB
-rwxrwxrwx
2021-01-24 18:08
piconv
8.07
KB
-rw-rw-rw-
2021-01-24 18:01
piconv.bat
9.13
KB
-rwxrwxrwx
2021-01-24 18:08
pkg-config
46.94
KB
-rw-rw-rw-
2021-01-24 18:01
pkg-config.bat
49.2
KB
-rwxrwxrwx
2021-01-24 18:08
pl2bat.bat
11.49
KB
-rwxrwxrwx
2021-01-24 18:08
pl2bat.pl
10.4
KB
-rw-rw-rw-
2021-01-24 18:01
pl2pm.bat
5.56
KB
-rwxrwxrwx
2024-07-26 17:42
pler
540
B
-rw-rw-rw-
2021-01-24 18:01
pler.bat
1.07
KB
-rwxrwxrwx
2021-01-24 18:08
pm-uninstall
820
B
-rw-rw-rw-
2021-01-24 18:01
pm-uninstall.bat
1.28
KB
-rwxrwxrwx
2023-11-19 11:41
pod2html.bat
5.02
KB
-rwxrwxrwx
2024-07-26 17:42
pod2latex
10.39
KB
-rw-rw-rw-
2024-07-26 17:42
pod2latex.bat
10.92
KB
-rwxrwxrwx
2024-07-26 17:42
pod2man.bat
15.42
KB
-rwxrwxrwx
2023-11-19 11:41
pod2text.bat
11.29
KB
-rwxrwxrwx
2023-11-19 11:41
pod2usage
4.16
KB
-rw-rw-rw-
2021-01-24 16:27
pod2usage.bat
4.67
KB
-rwxrwxrwx
2021-01-24 18:08
pod_cover
1.37
KB
-rw-rw-rw-
2021-01-24 18:01
pod_cover.bat
1.94
KB
-rwxrwxrwx
2021-01-24 18:08
podchecker
3.7
KB
-rw-rw-rw-
2021-01-24 16:27
podchecker.bat
4.21
KB
-rwxrwxrwx
2021-01-24 18:08
podselect
2.56
KB
-rw-rw-rw-
2021-01-24 16:25
podselect.bat
3.07
KB
-rwxrwxrwx
2021-01-24 18:08
ppd2par
4.64
KB
-rw-rw-rw-
2021-01-24 18:01
ppd2par.bat
5.32
KB
-rwxrwxrwx
2021-01-24 18:08
ppm.bat
35.53
KB
-rwxrwxrwx
2021-01-24 18:08
ppm.pl
33.99
KB
-rw-rw-rw-
2021-01-24 18:01
primes.bat
21.45
KB
-rwxrwxrwx
2021-01-24 18:08
primes.pl
20.34
KB
-rw-rw-rw-
2021-01-24 18:01
prove.bat
14.07
KB
-rwxrwxrwx
2023-11-19 11:41
ptar
3.38
KB
-rw-rw-rw-
2021-01-24 18:01
ptar.bat
4.28
KB
-rwxrwxrwx
2021-01-24 18:08
ptardiff
2.48
KB
-rw-rw-rw-
2021-01-24 18:01
ptardiff.bat
3.35
KB
-rwxrwxrwx
2021-01-24 18:08
ptargrep
4.19
KB
-rw-rw-rw-
2021-01-24 18:01
ptargrep.bat
5.14
KB
-rwxrwxrwx
2021-01-24 18:08
runperl.bat
2.72
KB
-rwxrwxrwx
2021-01-24 18:08
scan-perl-prereqs-nqlite
5.28
KB
-rw-rw-rw-
2021-01-24 16:24
scan-perl-prereqs-nqlite.bat
6
KB
-rwxrwxrwx
2021-01-24 18:08
search.bat
55.83
KB
-rwxrwxrwx
2021-01-24 18:08
shasum.bat
10.48
KB
-rwxrwxrwx
2023-11-19 11:41
splain.bat
20.43
KB
-rwxrwxrwx
2024-07-26 17:42
streamzip
5.45
KB
-rw-rw-rw-
2021-01-24 18:01
streamzip.bat
6.17
KB
-rwxrwxrwx
2021-01-24 18:08
stubmaker.bat
4.01
KB
-rwxrwxrwx
2021-01-24 18:08
stubmaker.pl
3.35
KB
-rw-rw-rw-
2021-01-24 18:01
test-yaml
1017
B
-rw-rw-rw-
2021-01-24 18:01
test-yaml.bat
1.56
KB
-rwxrwxrwx
2021-01-24 18:08
tpage
8.85
KB
-rw-rw-rw-
2021-01-24 18:01
tpage.bat
9.64
KB
-rwxrwxrwx
2021-01-24 18:08
ttree
38.21
KB
-rw-rw-rw-
2021-01-24 18:01
ttree.bat
39.9
KB
-rwxrwxrwx
2021-01-24 18:08
use-devel-checklib
2.7
KB
-rw-rw-rw-
2021-01-24 16:53
use-devel-checklib.bat
3.31
KB
-rwxrwxrwx
2021-01-24 18:08
whirlpoolsum
4.93
KB
-rw-rw-rw-
2021-01-24 18:01
whirlpoolsum.bat
5.67
KB
-rwxrwxrwx
2021-01-24 18:08
wperl.exe
39
KB
-rwxrwxrwx
2021-01-24 16:06
xml_grep
13.32
KB
-rw-rw-rw-
2021-01-24 18:01
xml_grep.bat
14.3
KB
-rwxrwxrwx
2021-01-24 18:08
xml_merge
3.89
KB
-rw-rw-rw-
2021-01-24 18:01
xml_merge.bat
4.55
KB
-rwxrwxrwx
2021-01-24 18:08
xml_pp
7.82
KB
-rw-rw-rw-
2021-01-24 18:01
xml_pp.bat
8.61
KB
-rwxrwxrwx
2021-01-24 18:08
xml_spellcheck
6.34
KB
-rw-rw-rw-
2021-01-24 18:01
xml_spellcheck.bat
7.1
KB
-rwxrwxrwx
2021-01-24 18:08
xml_split
21.13
KB
-rw-rw-rw-
2021-01-24 18:01
xml_split.bat
22.27
KB
-rwxrwxrwx
2021-01-24 18:08
xsubpp.bat
5.78
KB
-rwxrwxrwx
2023-11-19 11:41
zipdetails
56.01
KB
-rw-rw-rw-
2021-01-24 18:01
zipdetails.bat
58.95
KB
-rwxrwxrwx
2021-01-24 18:08
Save
Rename
@rem = '--*-Perl-*-- @set "ErrorLevel=" @if "%OS%" == "Windows_NT" @goto WinNT @perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9 @set ErrorLevel=%ErrorLevel% @goto endofperl :WinNT @perl -x -S %0 %* @set ErrorLevel=%ErrorLevel% @if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" @goto endofperl @if %ErrorLevel% == 9009 @echo You do not have Perl in your PATH. @goto endofperl @rem '; #!/usr/bin/perl -w #line 30 use strict; use lib 'lib'; use Term::ReadKey; use Getopt::Long; use Crypt::OpenPGP; use Crypt::OpenPGP::KeyRing; my %opts; Getopt::Long::Configure('no_ignore_case'); GetOptions(\%opts, "sign|s", "encrypt|e", "detach-sign|b", "decrypt", "verify", "list-keys", "list-public-keys", "list-secret-keys", "fingerprint", "keyring=s", "secret-keyring=s", "recipient|r=s@", "armour|a", "clearsign", "symmetric|c", "list-packets", "version|v", "enarmour", "dearmour", "compat=s", "keyserver=s", "local-user|u=s"); if ($opts{version}) { print(version()), exit; } my %arg; $arg{PubRing} = $opts{keyring} if $opts{keyring}; $arg{SecRing} = $opts{'secret-keyring'} if $opts{'secret-keyring'}; $arg{Compat} = $opts{compat} if $opts{compat}; ## Default to GnuPG compatibility. $arg{Compat} = 'GnuPG' unless keys %arg; if (my $ks = $opts{keyserver}) { $arg{AutoKeyRetrieve} = 1; $arg{KeyServer} = $ks; } my $pgp = Crypt::OpenPGP->new( %arg ) or die Crypt::OpenPGP->errstr; my @args = ($pgp, \%opts, \@ARGV); if ($opts{'list-keys'} || $opts{'list-public-keys'} || $opts{fingerprint}) { do_list_keys(@args); } elsif ($opts{'list-secret-keys'}) { do_list_keys(@args, 1); } elsif ($opts{encrypt}) { do_encrypt(@args); } elsif ($opts{symmetric}) { do_encrypt(@args, 1); } elsif ($opts{decrypt}) { do_decrypt(@args); } elsif ($opts{sign}) { do_sign(@args); } elsif ($opts{'detach-sign'}) { do_sign(@args, 1); } elsif ($opts{clearsign}) { do_sign(@args, 0, 1); } elsif ($opts{verify}) { do_verify(@args); } elsif ($opts{enarmour}) { do_enarmour(@args); } elsif ($opts{dearmour}) { do_dearmour(@args); } elsif ($opts{'list-packets'}) { do_list_packets(@args); } else { do_wim(@args); } sub do_wim { my($pgp, $opts, $args) = @_; my $file = shift @$args or die "usage: $0 <file>"; my $res = $pgp->handle( Filename => $file ) or die $pgp->errstr; if (defined $res->{Plaintext}) { print $res->{Plaintext}; } if (defined $res->{Validity}) { my $v = $res->{Validity}; print STDERR $v ? qq(Good signature from "$v".\n) : "Bad signature.\n"; } } sub do_list_keys { my($pgp, $opts, $args, $secret) = @_; my $fp = $opts->{fingerprint}; my $ring_file = $pgp->{cfg}->get( $secret ? 'SecRing' : 'PubRing' ); my $ring = Crypt::OpenPGP::KeyRing->new( Filename => $ring_file ) or die Crypt::OpenPGP::KeyRing->errstr; $ring->read; my @blocks = $ring->blocks; print $ring_file, "\n", '-' x length($ring_file), "\n"; for my $kb (@blocks) { my $cert = $kb->key; printf "%s %4d%s/%s %s\n", ($cert->is_secret ? 'sec' : 'pub'), $cert->key->size, $cert->key->public_key->abbrev, substr($cert->key_id_hex, -8, 8), ($kb->primary_uid || ''); if ($fp) { my $f = $cert->fingerprint; my $form = join ' ', ("%02X%02X " x (length($f) / 4)) x 2; printf " Key fingerprint = $form\n", unpack 'C*', $f; } if (my $sub = $kb->subkey) { printf "%s %4d%s/%s\n", ($sub->is_secret ? 'ssb' : 'sub'), $sub->key->size, $sub->key->public_key->abbrev, substr($sub->key_id_hex, -8, 8), } print "\n"; } } sub do_encrypt { my($pgp, $opts, $args, $symm) = @_; my $recips = $opts->{recipient}; $recips && @$recips or die "usage: $0 --encrypt -r <recip> <file>" unless $symm; my $file = shift @$args or die "usage: $0 --encrypt -r <recip> <file>"; my $cb = sub { my($keys) = @_; return [] unless @$keys; my $prompt = " Message is being encrypted to: "; my $i = 1; for my $cert (@$keys) { $prompt .= sprintf " [%d] %s (ID %s)\n", $i++, $cert->uid, substr($cert->key_id_hex, -8, 8); } $prompt .= " If these are the intended recipients, press <enter>. Otherwise, enter the indices of the recipients to which you wish to send the message. Enter numeric indices, separated by spaces: "; my $n = prompt($prompt, join(' ', 1..$i-1)); my %seen; my @keys = @{$keys}[ map { $seen{$_}++ ? () : ($_-1) } split /\s+/, $n ]; \@keys; }; my %sign_args; if ($opts->{sign}) { my $cert = get_seckey($pgp, $opts) or die $pgp->errstr; %sign_args = ( SignKeyID => $cert->key_id_hex, SignPassphraseCallback => \&passphrase_cb ); } my %enc_args; if ($symm) { my $pass = prompt("Enter passphrase: ", '', 1); %enc_args = ( Passphrase => $pass ); } else { %enc_args = ( Recipients => $recips, RecipientsCallback => $cb ); } my $ct = $pgp->encrypt( %enc_args, Filename => $file, $opts->{armour} ? (Armour => $opts->{armour}) : (), %sign_args, ) or die $pgp->errstr; print $ct; } sub do_decrypt { my($pgp, $opts, $args) = @_; my $file = shift @$args or die "usage: $0 --decrypt <file>"; my($pt, $validity); until ($pt) { ($pt, $validity) = $pgp->decrypt( Filename => $file, PassphraseCallback => \&passphrase_cb, ); unless ($pt) { if ($pgp->errstr =~ /Bad checksum/) { print "Error: Bad passphrase.\n\n"; } else { die $pgp->errstr; } } } print $pt; warn "Signature verification failed: ", $pgp->errstr unless defined $validity || $pgp->errstr ne 'No Signature'; if (defined $validity) { print STDERR $validity ? qq(Good signature from "$validity".\n) : "Bad signature.\n"; } } sub do_sign { my($pgp, $opts, $args, $detach, $clear) = @_; my $file = shift @$args or die "usage: $0 --sign <file>"; my $sig; my $cert = get_seckey($pgp, $opts) or die $pgp->errstr; until ($sig) { $sig = $pgp->sign( Filename => $file, Detach => $detach, Clearsign => $clear, Key => $cert, PassphraseCallback => \&passphrase_cb, $opts->{armour} ? (Armour => $opts->{armour}) : (), ); unless ($sig) { if ($pgp->errstr =~ /Bad checksum/) { print "Error: Bad passphrase.\n\n"; } else { die $pgp->errstr; } } } print $sig; } sub do_verify { my($pgp, $opts, $args) = @_; my($sigfile, @files) = @$args; my $valid = $pgp->verify( SigFile => $sigfile, Files => \@files ); die $pgp->errstr unless defined $valid; print $valid ? qq(Good signature from "$valid".\n) : "Bad signature.\n"; } sub do_enarmour { my($pgp, $opts, $args) = @_; my $file = shift @$args or return $pgp->error("No file"); require Crypt::OpenPGP::Armour; print Crypt::OpenPGP::Armour->armour( Data => $pgp->_read_files($file), Object => 'MESSAGE', ); } sub do_dearmour { my($pgp, $opts, $args) = @_; my $file = shift @$args or return $pgp->error("No file"); require Crypt::OpenPGP::Armour; my $data = Crypt::OpenPGP::Armour->unarmour($pgp->_read_files($file)); print $data->{Data}; } sub do_list_packets { my($pgp, $opts, $args) = @_; my $file = shift @$args or die "usage: $0 --list-packets <file>"; require Crypt::OpenPGP::Message; my $msg = Crypt::OpenPGP::Message->new( Filename => $file ) or die Crypt::OpenPGP::Message->errstr; my @pieces = $msg->pieces; for my $pkt (@pieces) { if ($pkt->can('display')) { print $pkt->display; } else { print ref($pkt), "\n"; } } } sub version { my $v = <<VERSION; pgplet (Crypt::OpenPGP) $Crypt::OpenPGP::VERSION Supported algorithms: Public key: RSA, DSA, ElGamal VERSION require Crypt::OpenPGP::Cipher; $v .= "Cipher: " . join(', ', values %{ Crypt::OpenPGP::Cipher->supported }) . "\n"; require Crypt::OpenPGP::Digest; $v .= "Hash: " . join(', ', values %{ Crypt::OpenPGP::Digest->supported }) . "\n"; $v; } sub passphrase_cb { my($cert) = @_; my $prompt; if ($cert) { $prompt = sprintf qq( You need a passphrase to unlock the secret key for user "%s". %d-bit %s key, ID %s Enter passphrase: ), $cert->uid, $cert->key->size, $cert->key->alg, substr($cert->key_id_hex, -8, 8); } else { $prompt = "Enter passphrase: "; } prompt($prompt, '', 1); } sub get_seckey { my($pgp, $opts) = @_; my $ring = Crypt::OpenPGP::KeyRing->new( Filename => $pgp->{cfg}->get('SecRing') ) or return $pgp->error(Crypt::OpenPGP::KeyRing->errstr); my $kb; if (my $user = $opts->{'local-user'}) { my($lr, @kb) = (length($user)); if (($lr == 8 || $lr == 16) && $user !~ /[^\da-fA-F]/) { @kb = $ring->find_keyblock_by_keyid(pack 'H*', $user); } else { @kb = $ring->find_keyblock_by_uid($user); } if (@kb > 1) { my $prompt = " The following keys can be used to sign the message: "; my $i = 1; for my $kb (@kb) { my $cert = $kb->signing_key or next; $prompt .= sprintf " [%d] %s (ID %s)\n", $i++, $kb->primary_uid, substr($cert->key_id_hex, -8, 8); } $prompt .= " Enter the index of the signing key you wish to use: "; my $n; $n = prompt($prompt, $i - 1) while $n < 1 || $n > @kb; $kb = $kb[$n-1]; } else { $kb = $kb[0]; } } else { $kb = $ring->find_keyblock_by_index(-1); } return $pgp->error("Can't find keyblock: " . $ring->errstr) unless $kb; my $cert = $kb->signing_key; $cert->uid($kb->primary_uid); $cert; } sub prompt { my($prompt, $def, $noecho) = @_; print STDERR $prompt . ($def ? "[$def] " : ""); if ($noecho) { ReadMode('noecho'); } chomp(my $ans = ReadLine(0)); ReadMode('restore'); print STDERR "\n"; defined $ans && $ans ne '' ? $ans : $def; } __END__ :endofperl @set "ErrorLevel=" & @goto _undefined_label_ 2>NUL || @"%COMSPEC%" /d/c @exit %ErrorLevel%