in reply to Re: Firefox Keystore - Parsing Certutil Output
in thread Firefox Keystore - Parsing Certutil Output
I tried to generically connect via sqlite3 and was unsuccessful:
$ sqlite3 cert8.db SQLite version 3.3.6 Enter ".help" for instructions sqlite> .tables Error: file is encrypted or is not a database
I did some research and it appears that sqlite3 may not be able to communicate with the stored format. However, I think I did find a work around. Basically, if I use the strings command on the cert8.db file, it will dump the contents of the db file on different lines and I can find the certificate names alone on a single from there. So I updated my code to:
my %certs; my @stored_certs; # Get stored certificates: my $command = "strings $config{firefox_profile}/cert8.db"; open(OUTPUT , "-|", "$command"); while (my $line = <OUTPUT>){ chomp $line; if ($line =~ /CN=/i) { $line =~ s/^!//g; $line =~ s/(^\s+|\s+$)//g; if (! $certs{$line}) { $certs{$line}{stored_in_firefox}++; } } } close OUTPUT; # Get each stores certificate's trust level: $command = "certutil -L -d $config{firefox_profile}"; open(OUTPUT, "-|", "$command"); while (my $line = <OUTPUT>){ chomp $line; push (@stored_certs, $line); } foreach my $cert (sort keys %certs) { foreach my $line (@stored_certs) { if ($line =~ /^$cert/) { $line =~ s/^$cert//; $line =~ s/(^\s+|\s+$)//; $lcerts{$cert}{trust_level} = $line; } } }
I think this is good enough for now. Thanks again,
|
|---|