[ SEA-GHOST MINI SHELL]
#!/usr/bin/perl -w
# bio.pl mikem@open.com.au
#
# Test and demonstrate BIO interface
use Net::SSLeay qw(die_now);
$data = '0123456789' x 100;
$len = length($data);
$b = &Net::SSLeay::BIO_new(&Net::SSLeay::BIO_s_mem())
or die_now("Could not create memory BIO $!");
&Net::SSLeay::BIO_write($b, $data)
or die_now("Could not write memory BIO $!");
# Should now have 1000 bytes in BIO
$pending = &Net::SSLeay::BIO_pending($b);
die("Incorrect result from BIO_pending: $pending. Should be $len")
unless $pending == $len;
# Partial read of 9 bytes
$len = 9;
$part = &Net::SSLeay::BIO_read($b, $len);
$nlen = length($part);
die("Incorrect result from BIO_read: $len. Should be 9")
unless $nlen == $len;
die("Incorrect data from BIO_read: $len. Should be 012345678")
unless $part eq '012345678';
# Should be 991 bytes left
$len = 991;
$pending = &Net::SSLeay::BIO_pending($b);
die("Incorrect result from BIO_pending: $pending. Should be $len")
unless $pending == $len;
# Read the rest
$part = &Net::SSLeay::BIO_read($b);
$nlen = length($part);
die("Incorrect result from BIO_read: $len. Should be 991")
unless $len == $nlen;
&Net::SSLeay::BIO_free($b);
print "OK\n";
exit;
SEA-GHOST - SHELL CODING BY SEA-GHOST