#!/usr/bin/perl
#This eats a Windows Registry File, looks for IMAIL users and passwords.. and spits out plain text passwords.
print "Eat what registry file? " ; 
$file = <STDIN> ; 
chop($file) ; 
# $file = "mail1.reg.txt" ;
print "Eating $file  \n" ; 

open(IN,"$file") ; 
open(OUT,">imail.passwd") ; 
open(SQL,">import2orca.sql") ; 

print SQL "use orca\n\n" ; 

while(<IN>) {

if(/\"MailAddr\"/) { 
	$addr = "\L$addr" ; 
	$cleartext = extract($addr,$passwd) ; 
	print "$addr	$name	$passwd	$cleartext \n" ; 
	print OUT "$addr|$name|$cleartext\n" ; 
	print SQL "insert into mailboxes (login,loginname,domain,name,passwd) values ('unassigned','$login','$domain','$name','$cleartext') ; \n" ; 

	#print "$_" ; 
	$addr = stripval($_) ; 
} ; 
if(/\"FullName\"/) { 
	#print "$_" ; 
	$name = stripval($_) ; 

} ; 
if(/\"Password\"/) { 
	#print "$_" ; 
	$passwd = stripval($_) ; 

} ; 

} ; 

	print OUT "$addr|$name|$cleartext\n" ; 
	print SQL "insert into mailboxes (login,loginname,domain,name,passwd) values ('unassigned','$login','$domain','$name','$cleartext') ; \n" ; 
close OUT ; 
close SQL ; 




sub stripval($string) {
$_ = shift ; 
s/\"//g ; 
s/\'//g ; 
s/\//g ; 
s/\n//g ; 
($j,$val) = split(/\=/) ; 
return $val ; 
} 

sub extract($addr,$passwd) {
$cleartext = "" ; 
$addr = shift ; 
($login,$domain) = split(/\@/,$addr) ; 
$addrz = "$login$login$login$login$login$login" ; 

$passwd = shift ; 	
@a = split(//,$addrz) ; 
@p1 = split(//,$passwd) ; 
$pz = "" ; $pzz = "" ; 
foreach(@p1) {
	$pz .= $_ ; 
	if(length($pz) > 1) { $pzz .= "$pz|" ; $pz = "" ; } ; 
} ; 

#print "PZZ: $pzz\n" ; 
@p = split(/\|/,$pzz) ; 

$i = 0 ; 
	$c = "" ; 
	foreach(@p) { 
	$pwh = $_ ; 
	$aa = ord($a[$i]) ; 
	$aahex = sprintf("%lx ", $aa);
	$zz = hex($pwh) - hex($aahex) ; 
	$cc = chr($zz) ; 
	$c .= "$cc" ; 	

	$i++ ; 
} ; 
$cleartext = $c ; 
return $cleartext ; 
} ; 



