[BACK]Return to KeyRingpdbdump CVS log [TXT][DIR] Up to [local] / palm / Palm-Keyring / examples

Diff for /palm/Palm-Keyring/examples/Attic/KeyRingpdbdump between version 1.1 and 1.2

version 1.1, 2006/01/26 20:54:19 version 1.2, 2007/02/18 05:34:20
Line 3 
Line 3 
 # Dump a Palm PDB or PRC database.  # Dump a Palm PDB or PRC database.
 #  #
 # $Id$  # $Id$
 # $RedRiver: KeyRingpdbdump,v 1.2 2005/08/25 00:56:07 andrew Exp $  # $RedRiver: KeyRingpdbdump,v 1.1 2006/01/26 20:54:19 andrew Exp $
   
 use strict;  use strict;
 use Palm::PDB;  use Palm::PDB;
Line 696 
Line 696 
         }          }
 }  }
   
 sub decrypt  
 {  
         use Digest::MD5 qw(md5);  
         use Crypt::TripleDES;  
   
         my $MD5_CBLOCK = 64;  
   
         my $data = shift;  
         my $pass = shift;  
   
         my $digest = md5($pass);  
   
         my ($key1, $key2) = unpack('a8a8', $digest);  
         #--------------------------------------------------  
         # print "key1: $key1: ", length $key1, "\n";  
         # print "key2: $key2: ", length $key2, "\n";  
         #--------------------------------------------------  
   
         $digest = unpack('H*', $key1 . $key2 . $key1);  
         #--------------------------------------------------  
         # print "Digest: ", $digest, "\n";  
         # print length $digest, "\n";  
         #--------------------------------------------------  
   
         my ($name, $ciphertext) = split /\0/, $data;  
   
         my $des = new Crypt::TripleDES;  
         my $plaintext = $des->decrypt3($ciphertext, $digest);  
   
         my ($account, $password, $description, $extra) = split /\0/, $plaintext, 4;  
   
         print "Name:        $name\n";  
         print "Account:     $account\n";  
         print "Password:    $password\n";  
         print "Description: $description\n";  
   
         return $plaintext;  
 }  
   
 sub keyring_verify  
 {  
         use Digest::MD5 qw(md5);  
   
         my $MD5_CBLOCK = 64;  
   
         my $data = shift;  
         my $pass = shift;  
   
         my $kSaltSize = 4;  
         my $salt = substr($data, 0, $kSaltSize);  
   
         my $msg = $salt . $pass;  
   
         $msg .= "\0" x ($MD5_CBLOCK - length($msg));  
   
         print "LENGTH: ", length $msg, "\n";  
   
         my $digest = md5($msg);  
   
         print "Data:   ", unpack('H*', $data);  
         print "\n";  
         print "Digest: ", unpack('H*', $salt . $digest);  
         print "\n";  
   
         if ($data eq $salt . $digest) {  
                 return 1;  
         } else {  
                 return undef;  
         }  
   
         return $digest;  
         #return $decrypted;  
 }  
 sub hexdump  sub hexdump
 {  {
         my $prefix = shift;     # What to print in front of each line          my $prefix = shift;     # What to print in front of each line

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>