/[scripts]/trunk/mitm-ssl.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/mitm-ssl.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 131 by dpavlin, Wed Jan 6 23:47:52 2010 UTC revision 132 by dpavlin, Wed Jan 6 23:54:02 2010 UTC
# Line 9  $Net::SSLeay::trace = 4; Line 9  $Net::SSLeay::trace = 4;
9  use Getopt::Long;  use Getopt::Long;
10  use Time::HiRes qw(time);  use Time::HiRes qw(time);
11    
12  my $localport = 8080;  my $laddr = "127.0.0.1";
13  my $localaddr = "127.0.0.1";  my $lport = 8080;
14  my $port      = 80;  my $raddr      = "127.0.0.1";
15  my $host      = "127.0.0.1";  my $rport      = 80;
16  my $logdir    = "$localaddr:$localport-$host:$port";  my $logdir    = "$laddr:$lport-$raddr:$rport";
17    
18  my $help;  my $help;
19  my $daemon;  my $daemon;
# Line 27  my $serverdh; Line 27  my $serverdh;
27  $| = 1;  $| = 1;
28    
29  my $goresult = GetOptions(  my $goresult = GetOptions(
30          "lport=i"      => \$localport,          "lport=i"      => \$lport,
31          "laddr=s"      => \$localaddr,          "laddr=s"      => \$laddr,
32          "rport=i"      => \$port,          "rport=i"      => \$rport,
33          "raddr=s"      => \$host,          "raddr=s"      => \$raddr,
34          "logtype=i"    => \$logtype,          "logtype=i"    => \$logtype,
35          "logdir=s"     => \$logdir,          "logdir=s"     => \$logdir,
36          "daemon"       => \$daemon,          "daemon"       => \$daemon,
# Line 68  system "openssl req -new -x509 -days 365 Line 68  system "openssl req -new -x509 -days 365
68          if ! -e $serverkey && ! -e $servercert;          if ! -e $serverkey && ! -e $servercert;
69    
70    
 my %o = (  
         'dir'    => $logdir,  
         'port'   => $localport,  
         'toport' => $port,  
         'tohost' => $host  
 );  
   
71  if ($daemon) {  if ($daemon) {
72          my $pid = fork;          my $pid = fork;
73          exit if $pid;          exit if $pid;
# Line 83  if ($daemon) { Line 76  if ($daemon) {
76  }  }
77    
78  my $ah = IO::Socket::SSL->new(  my $ah = IO::Socket::SSL->new(
79          'LocalPort'       => $localport,          'LocalPort'       => $lport,
80          'LocalAddr'       => $localaddr,          'LocalAddr'       => $laddr,
81          'Reuse'           => 1,          'Reuse'           => 1,
82          'Proto'           => 'tcp',          'Proto'           => 'tcp',
83          'SSL_verify_mode' => '0',          'SSL_verify_mode' => '0',
# Line 112  while (1) { Line 105  while (1) {
105          if ( !defined($pid) ) { print STDERR "cannot fork while(1) $!\n"; }          if ( !defined($pid) ) { print STDERR "cannot fork while(1) $!\n"; }
106          elsif ( $pid == 0 ) {          elsif ( $pid == 0 ) {
107                  $ah->close( SSL_no_shutdown => 1 );                  $ah->close( SSL_no_shutdown => 1 );
108                  Run( \%o, $ch, $num );                  Run( $ch, $num );
109          } else {          } else {
110                  $ch->close( SSL_no_shutdown => 1 );                  $ch->close( SSL_no_shutdown => 1 );
111          }          }
112  }  }
113    
114  sub Run {  sub Run {
115          my ( $o, $ch, $num ) = @_;          my ( $ch, $num ) = @_;
116          my $th = IO::Socket::SSL->new(          my $th = IO::Socket::SSL->new(
117                  'PeerAddr'        => $o->{'tohost'},                  'PeerAddr'        => $raddr,
118                  'PeerPort'        => $o->{'toport'},                  'PeerPort'        => $rport,
119  #               'SSL_use_cert'    => '0',  #               'SSL_use_cert'    => '0',
120  #               'SSL_verify_mode' => '0',  #               'SSL_verify_mode' => '0',
121    
# Line 130  sub Run { Line 123  sub Run {
123                  'SSL_cipher_list' => 'RC4-MD5',                  'SSL_cipher_list' => 'RC4-MD5',
124                  'Proto'       => 'tcp'                  'Proto'       => 'tcp'
125          );          );
126          if ( !$th ) { print "cannot connect th: $!"; exit 0; }          if ( !$th ) { print "cannot connect $raddr:$rport th: $!"; exit 0; }
127          else        { print "connected!"; }          else        { print "connected to $raddr:$rport\n"; }
128          my $fh;          my $fh;
129          if ( $o->{'dir'} ) {          if ( -d $logdir ) {
130                  $fh = Symbol::gensym();                  $fh = Symbol::gensym();
131                  my $path = $o->{'dir'} . '/' . Time::HiRes::time();                  my $path = $logdir . Time::HiRes::time();
132                  open( $fh, '>', $path ) or die "$!";                  open( $fh, '>', $path ) or die "$!";
133          }          }
134          $ch->autoflush();          $ch->autoflush();

Legend:
Removed from v.131  
changed lines
  Added in v.132

  ViewVC Help
Powered by ViewVC 1.1.26