Last commit for dbxinfo: bb8f95e83a6304ae5175f0f451a9e612a39d5cae

- dbx folder names extractor

pp [2007-04-04 16:53:41]
- 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();
}
ViewGit