- dbx folder names extractor
- dbx folder names extractor
git-svn-id: https://siedziba.pl:790/svn/repos/dbxrecover@279 455248ca-bdda-0310-9134-f4ebb693071a
#!/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();
}