| Revision 31 (by dpavlin, 2004/01/18 23:08:12) |
dump Mozilla's passwords which are stored in user profile
|
#!/usr/bin/perl -w
use strict;
use MIME::Base64;
my @data;
while(<>) {
chomp;
print "## read: $_\n";
push @data,$_;
}
my $skip = 1;
# skip "don't save password for host" list
while(@data && $skip) {
my $d = shift @data;
print "## $d\n";
$skip = 0 if ($d eq ".");
}
while(@data) {
my $host = shift @data;
my $user_fld = shift @data;
$user_fld =~ s/^.*?=//g;
$user_fld =~ s/=.*$//g;
my $user = shift @data;
if ($user =~ /^\~([A-Za-z0-9\+\=\/]+)/) {
$user = decode_base64($1),"\n";
} else {
die "can't decode username '$user'!";
}
my $passwd_fld = shift @data;
$passwd_fld =~ s/^.*?=//g;
$passwd_fld =~ s/=.*$//g;
my $passwd = shift @data;
if ($passwd =~ /^\~([A-Za-z0-9\+\=\/]+)/) {
$passwd = decode_base64($1),"\n";
} else {
die "can't decode password '$passwd'!";
}
printf("%30s -- %10s: %10s %10s: %10s\n",$host,$user_fld,$user,$passwd_fld,$passwd);
my $sep = shift @data;
if ($sep ne ".") {
die "can't find separator! [$sep]";
}
}