ocrshopxtr_freebie.pl.txt

2006-04-28T00:00:00
ID PACKETSTORM:45851
Type packetstorm
Reporter venom
Modified 2006-04-28T00:00:00

Description

                                        
                                            `#!/usr/bin/perl  
use IO::Socket;  
  
# ocrshopxtr_freebie.pl - VeNoMouS <venom@gen-x.co.nz>  
# This code bypasses the OCR Shop XTR vvlicense.  
# I was doing some ocr related stuff at work, and I didnt like how windows was limited  
# in what it could do, so I googled and came across OCR Shop XTR, it even picked up order   
# numbers that ifilter couldnt(oh yea adobe you so rule), then I went to look at the price $2,395.00,  
# you can imagine how far my jaw dropped, anyway the licencse check is retarded  
# it just binds vvlicense to port 10102 on 127.0.0.1 and sends a simple cmd seq.  
#  
# CLIENT -> S OCRC:0.  
# SERVER -> SUCCESS:1.  
# CLIENT -> F OCRC:0.  
# SERVER -> 11111111111111111111111111111111 (bunch more look @ the hex below you lazy cunt)  
# CLIENT -> O OCRC:0.  
# SERVER -> SUCCESS:1.  
# CLIENT -> I OCRC:1.  
# SERVER -> SUCCESS:1.  
#  
# And from here it starts the ocr scan proccess cause it was successful from the licencse server.  
# Anyway thnx to defy for giving me his perl socket engine (saved me writing one).  
# Word up to str0ke.   
  
sub ascii_to_hex ($)  
{  
(my $str = shift) =~ s/(.|\n)/sprintf("%02lx", ord $1)/eg;  
return $str;  
}  
  
$| = 1;  
my $server = IO::Socket::INET->new(  
LocalAddr => '127.0.0.1',  
LocalPort => 10102,  
Reuse => 1,  
Listen => 9  
) or die "ws: $@ on server port 10102: $!\n";  
  
warn "ws($$): (server) ready on port @{[$server->sockport]}\n";  
  
  
while($SIG{CHLD} = 'IGNORE', my $c = $server->accept) {  
my $header;  
while ($header !~ /\n\n/ and sysread $c, $_, 1)   
{  
$_ =~ s/\r//;  
$header .= $_;  
  
my $data=ascii_to_hex($header);  
  
if ($data =~ /53204f4352433a30/)   
{  
print $c "\x53\x55\x43\x43\x45\x53\x53\x3a\x31\x00";  
}  
  
if ($data =~ /46204f4352433a3000/)   
{  
print $c "\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x30\x31\x00";  
}  
  
if ($data =~ /4f204f4352433a3000/)   
{  
print $c "\x53\x55\x43\x43\x45\x53\x53\x3a\x31\x00";  
}  
  
if ($data =~ /49204f4352433a3100/)   
{  
print $c "\x53\x55\x43\x43\x45\x53\x53\x3a\x31\x00";  
}  
}  
}  
$c->close;  
undef($c);  
`