--- trunk/mitm-ssl.pl 2010/01/06 23:19:29 130 +++ trunk/mitm-ssl.pl 2010/01/06 23:47:52 131 @@ -4,21 +4,24 @@ use strict; use POSIX; -use IO::Socket::SSL; +use IO::Socket::SSL qw(debug3); +$Net::SSLeay::trace = 4; use Getopt::Long; +use Time::HiRes qw(time); + +my $localport = 8080; +my $localaddr = "127.0.0.1"; +my $port = 80; +my $host = "127.0.0.1"; +my $logdir = "$localaddr:$localport-$host:$port"; -my $localport; -my $localaddr; my $help; -my $host; -my $port; my $daemon; my $buffersize = 2048; my $logtype; -my $logdir; my $daemon; -my $serverkey; -my $servercert; +my $serverkey = "$logdir/ssl.key"; +my $servercert = "$logdir/ssl.cert"; my $serverdh; $| = 1; @@ -59,15 +62,12 @@ exit; } -# set default values -$localport = 8080 unless ($localport); -$localaddr = "127.0.0.1" unless ($localaddr); -$port = 80 unless ($port); -$host = "127.0.0.1" unless ($host); -$logdir = "dump" unless ($logdir); - mkdir $logdir; +system "openssl req -new -x509 -days 365 -nodes -out $servercert -keyout $serverkey" + if ! -e $serverkey && ! -e $servercert; + + my %o = ( 'dir' => $logdir, 'port' => $localport, @@ -91,7 +91,9 @@ 'SSLdhfile' => $serverdh, 'SSL_cert_file' => $servercert, 'SSL_key_file' => $serverkey, - 'Listen' => 10 + 'Listen' => 10, +# 'SSL_version' => 'SSLv3', # SSLv3, SSLv2, TLSv1 +# 'SSL_cipher_list' => 'RC4-MD5', ) || die "$!"; $SIG{'CHLD'} = 'IGNORE'; @@ -121,11 +123,11 @@ my $th = IO::Socket::SSL->new( 'PeerAddr' => $o->{'tohost'}, 'PeerPort' => $o->{'toport'}, - 'SSL_use_cert' => '0', - 'SSL_verify_mode' => '0', +# 'SSL_use_cert' => '0', +# 'SSL_verify_mode' => '0', - # 'SSL_cipher_list' => 'NUL:LOW:EXP:ADH', 'SSL_version' => 'SSLv3', # SSLv3, SSLv2, TLSv1 + 'SSL_cipher_list' => 'RC4-MD5', 'Proto' => 'tcp' ); if ( !$th ) { print "cannot connect th: $!"; exit 0; } @@ -133,7 +135,8 @@ my $fh; if ( $o->{'dir'} ) { $fh = Symbol::gensym(); - open( $fh, ">$o->{'dir'}/tunnel$num.log" ) or die "$!"; + my $path = $o->{'dir'} . '/' . Time::HiRes::time(); + open( $fh, '>', $path ) or die "$!"; } $ch->autoflush(); $th->autoflush();