[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.223.125.226: ~ $
#!/usr/bin/perl
# 5.6.1998, Sampo Kellomaki <sampo@iki.fi>

$usage = <<USAGE
Usage: ./https-proxy-snif.pl *listen_port* *dest_machine* *dest_port*
E.g:   ./https-proxy-snif.pl 4443 www.bacus.pt 443

This proxy allows you to observe the protocol talked by your browser
to remote https server. Useful for debugging http headers etc sent
in this dialogue as well as capturing the requests for later
automating the task.

The proxying is not perfect: the client will see different
certificate than actually sent by server. You will be able to launch
only one simultaneous connection (set you browser to attempt only
one at a time) because it is iterative server, keep-alives are not
handled at all, etc.

Remeber: you must have cert.pem and key.pem in the current working directory.

Example:
    ./https-proxy-snif.pl 4443 www.bacus.pt 443
Then enter https://localhost:4443/ in Netscape Location prompt.
USAGE
    ;

die $usage unless $#ARGV == 2;
($listen_port, $dest_host, $dest_port) = @ARGV;
$trace = 0;

use Socket;
use Net::SSLeay qw(sslcat die_now die_if_ssl_error);
#$Net::SSLeay::trace = 3; # Super verbose debugging
Net::SSLeay::load_error_strings();
Net::SSLeay::SSLeay_add_ssl_algorithms();

$our_ip = "\0\0\0\0";  # Bind to all interfaces
$sockaddr_template = 'S n a4 x8';
$our_serv_params = pack ($sockaddr_template, &AF_INET, $listen_port, $our_ip);

socket (S, &AF_INET, &SOCK_STREAM, 0)  or die "socket: $!";
bind (S, $our_serv_params)             or die "bind:   $!";
listen (S, 5)                          or die "listen: $!";
$ctx = Net::SSLeay::CTX_new ()         or die_now("CTX_new ($ctx): $!");
Net::SSLeay::set_server_cert_and_key($ctx, 'cert.pem', 'key.pem') or die "key";

while (1) {    
    print "Accepting connections...\n";
    ($addr = accept (NS, S))           or die "accept: $!";
    select (NS); $| = 1; select (STDOUT);  # Piping hot!
    
    ($af,$client_port,$client_ip) = unpack($sockaddr_template,$addr);
    @inetaddr = unpack('C4',$client_ip);
    print "$af connection from "
	. join ('.', @inetaddr) . ":$client_port\n";
    
    ### We now have a network connection, lets fire up SSLeay...
 
    $ssl = Net::SSLeay::new($ctx)      or die_now("SSL_new ($ssl): $!");
    #print &Net::SSLeay::get_cipler_list($ssl, 32000);
    &Net::SSLeay::set_fd($ssl, fileno(NS));
    
    $err = Net::SSLeay::accept($ssl);
    die_if_ssl_error("ssl accept: ($!)");
    print "Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
    
    ### Connected. Get the HTTP request and wrap it for transport
    ### to remote host.
    
    $got = Net::SSLeay::read($ssl) or die "$$: ssl read failed";
    print "Got `$got' (" . length ($got) . " chars)\n" if $trace;
    
    $got =~ s/Host:\s+\S+\r?\n/Host: $dest_host:$dest_port\r\n/i;

    print "Will send `$got' (" . length ($got)
	. " chars) to $dest_host:$dest_port\n";
    
    ### Set up a client socket
    
    $dest_port = getservbyname  ($dest_port, 'tcp')
	unless $dest_port =~ /^\d+$/;
    $dest_serv_ip = gethostbyname ($dest_host);
    $dest_serv_params  = pack ($sockaddr_template, &AF_INET,
			       $dest_port, $dest_serv_ip);
    
    socket  (SS, &AF_INET, &SOCK_STREAM, 0) or die "client: socket: $!";
    connect (SS, $dest_serv_params)         or die "client: connect: $!";
    select  (SS); $| = 1; select (STDOUT);

    ### Do SSL handshake with remote server

    $ssl2 = Net::SSLeay::new($ctx) or die_now("client: SSL_new ($ssl2)");
    &Net::SSLeay::set_fd($ssl2, fileno(SS));
    &Net::SSLeay::set_cipher_list($ssl2, "DES-CBC3-MD5:RC4-MD5");
    &Net::SSLeay::print_errs();
    $err = Net::SSLeay::connect($ssl2);
    &Net::SSLeay::print_errs();
    print "client: Cipher '" . Net::SSLeay::get_cipher($ssl2) . "'\n";
    &Net::SSLeay::print_errs();

    ### Exchange data with remote server

    $err = Net::SSLeay::write($ssl2, $got) or die "client: write: $!";
    &Net::SSLeay::print_errs();
	    
    shutdown SS, 1;
	    
    $reply = Net::SSLeay::read($ssl2);
    &Net::SSLeay::print_errs();

    print "Remote replied `$reply' (" . length ($reply) . " chars)\n";
	    
    &Net::SSLeay::free ($ssl2);
    &Net::SSLeay::print_errs();
    close SS;

    ### Reply to our client

    &Net::SSLeay::write ($ssl, $reply) or die "write: $!";
    &Net::SSLeay::print_errs();
    
    (&Net::SSLeay::write ($ssl, <<HTTP) or die "write: $!") if 0;
HTTP/1.0 200 It works. Cool.
Content-Type: text/html

<title>foo</title>
<h1>Bar Cool</h1>
HTTP
    ;
    
    &Net::SSLeay::free ($ssl);           # Tear down connection
    close NS;
}

__END__

Filemanager

Name Type Size Permission Actions
bio.pl File 1.18 KB 0644
bulk.pl File 1.91 KB 0644
callback.pl File 3.12 KB 0644
cb-testi.pl File 548 B 0644
cli-cert.pl File 3.72 KB 0644
ephemeral.pl File 553 B 0644
get_authenticated_page.pl File 730 B 0644
get_page.pl File 507 B 0644
get_page_cert.pl File 966 B 0644
https-proxy-snif.pl File 4.44 KB 0644
makecert.pl File 1.5 KB 0644
minicli.pl File 1.31 KB 0644
passwd-cb.pl File 809 B 0644
req.conf File 1.2 KB 0644
server_key.pem File 963 B 0644
ssl-inetd-serv.pl File 1.6 KB 0644
ssl_diff.pl File 631 B 0644
sslcat.pl File 526 B 0644
sslecho.pl File 3.07 KB 0644
stdio_bulk.pl File 2.53 KB 0644
tcpcat.pl File 422 B 0644
tcpecho.pl File 1.77 KB 0644
x509_cert_details.pl File 9.88 KB 0644