diff options
| author | pp <pp@455248ca-bdda-0310-9134-f4ebb693071a> | 2007-04-04 16:53:41 +0000 |
|---|---|---|
| committer | pp <pp@455248ca-bdda-0310-9134-f4ebb693071a> | 2007-04-04 16:53:41 +0000 |
| commit | bb8f95e83a6304ae5175f0f451a9e612a39d5cae (patch) | |
| tree | 142acb157bc6d1bd0f283cf3622b923f3935404b | |
| parent | f05e533f206e5ac5f51c606d6e034bbff9187392 (diff) | |
git-svn-id: https://siedziba.pl:790/svn/repos/dbxrecover@279 455248ca-bdda-0310-9134-f4ebb693071a
| -rwxr-xr-x | dbxinfo | 50 |
1 files changed, 50 insertions, 0 deletions
@@ -0,0 +1,50 @@ +#!/usr/bin/perl + +# a utility for extracting folder names from dbx files + +use strict; +use IO::File; + +my $file; +for(@ARGV) +{ + my $filename = $_; + $file = IO::File->new("<$filename"); + $file->binmode(); + my $header; + $file->read($header, 0x24bc); + (my $magic, my $clsid, my $unknown, my $fileinfolen) = unpack("VVA20V", $header); + if ($magic != 0xfe12adcf) + { + print STDERR "$filename doesn't look like an outlook dbx file. Skipping...\n"; + next; + } + if ($clsid != 0x6f74fdc5) + { + print STDERR "$filename doesn't look like a message database file. Skipping...\n"; + next; + } + if (($fileinfolen < 0) || ($fileinfolen > 100000)) + { + $fileinfolen = 100000; + print STDERR "Warning: $filename has unexpected file info object length: $fileinfolen.\n"; + } + + my $fileinfo; + $file->read($fileinfo, $fileinfolen); + (my $magic, my $srctype, my $regkey, my $foldername) = unpack("VCa256a256", $fileinfo); + if ($magic != 0x00000001) + { + print STDERR "$filename doesn't seem to have a valid info header. Skipping...\n"; + next; + } + if ($srctype != 3) + { + print STDERR "$filename doesn't look like a local message store. Skipping...\n"; + next; + } + $foldername =~ s/\0//g; + printf "$filename\t$foldername\n"; +} continue { + $file->close(); +} |
