Beispiel #1
0
def smtp_tls_session(host,
                     port='25',
                     fromaddr='*****@*****.**',
                     to='*****@*****.**'):
    print "smtp tls test client"
    sock = coro.make_socket(socket.AF_INET, socket.SOCK_STREAM)
    print "host=%r port=%r" % (host, port)
    port = string.atoi(port)
    sock.connect((host, port))
    print sock.recv(8192)
    sock.send('EHLO fang\r\n')
    print sock.recv(8192)
    sock.send('STARTTLS\r\n')
    print sock.recv(8192)
    ctx = coro_ssl.ssl_ctx(sslip.SSLV2_CLIENT_METHOD)
    client = coro_ssl.ssl_sock(ctx)
    client.create(sock=sock)
    # client.ssl.set_connect_state()
    try:
        coro.print_stderr('calling ssl_connect()\n')
        client.ssl_connect()
        coro.print_stderr('ssl_connect done()\n')
    except sslip.Error:
        coro.print_stderr("TLS negotiation failed\n")
        coro.print_stderr("hit <return> to attempt fallback\n")
        client.shutdown()
        raw_input()
    else:
        sock = client
    print "ssl_connect() finished"
    sock.send('HELP\r\n')
    print sock.recv(8192)
    sock.send('MAIL FROM:<' + fromaddr + '>\r\n')
    print sock.recv(8192)
    sock.send('RCPT TO:<' + to + '>\r\n')
    print sock.recv(8192)
    sock.send('DATA\r\n')
    print sock.recv(8192)
    sock.send(
        'From: ' + fromaddr +
        '\r\nSubject: testing STARTTLS\r\n\r\nHi there.  I was encrypted\r\n.\r\n'
    )
    print sock.recv(8192)
    sock.send('QUIT\r\n')
    print sock.recv(8192)
    sock.close()
    coro._exit = 1
Beispiel #2
0
def smtp_tls_session (
    host,
    port='25',
    fromaddr='*****@*****.**',
    to='*****@*****.**'
):
    print "smtp tls test client"
    sock = coro.make_socket (socket.AF_INET, socket.SOCK_STREAM)
    print "host=%r port=%r" % (host, port)
    port = string.atoi(port)
    sock.connect ((host, port))
    print sock.recv (8192)
    sock.send ('EHLO fang\r\n')
    print sock.recv (8192)
    sock.send ('STARTTLS\r\n')
    print sock.recv (8192)
    ctx = coro_ssl.ssl_ctx (sslip.SSLV2_CLIENT_METHOD)
    client = coro_ssl.ssl_sock (ctx)
    client.create (sock=sock)
    # client.ssl.set_connect_state()
    try:
        coro.print_stderr ('calling ssl_connect()\n')
        client.ssl_connect()
        coro.print_stderr ('ssl_connect done()\n')
    except sslip.Error:
        coro.print_stderr ("TLS negotiation failed\n")
        coro.print_stderr ("hit <return> to attempt fallback\n")
        client.shutdown()
        raw_input()
    else:
        sock = client
    print "ssl_connect() finished"
    sock.send ('HELP\r\n')
    print sock.recv (8192)
    sock.send ('MAIL FROM:<' + fromaddr + '>\r\n')
    print sock.recv (8192)
    sock.send ('RCPT TO:<' + to + '>\r\n')
    print sock.recv (8192)
    sock.send ('DATA\r\n')
    print sock.recv (8192)
    sock.send ('From: ' + fromaddr + '\r\nSubject: testing STARTTLS\r\n\r\nHi there.  I was encrypted\r\n.\r\n')
    print sock.recv (8192)
    sock.send ('QUIT\r\n')
    print sock.recv (8192)
    sock.close()
    coro._exit = 1
Beispiel #3
0
def smtp_tls_server_session (conn):
    oconn = conn
    conn.send ('200 howdy\r\n')
    while True:
        cmd = conn.recv (1024)
        coro.print_stderr ('got %r\r\n' % (cmd,))
        cmd = cmd.lower()
        if cmd.startswith ('starttls'):
            conn.send ('220 ready for tls\r\n')
            ctx = coro_ssl.ssl_ctx (sslip.SSLV23_SERVER_METHOD)
            try:
                sconn = coro_ssl.ssl_sock (ctx)
                sconn.create (sock=conn)
                sconn.ssl_accept()
                conn = sconn
            except sslip.Error:
                # conn.send ('454 TLS negotiation failed\r\n')
                pass
        elif cmd.startswith ('data'):
            conn.send ('354 go ahead\r\n')
            while True:
                block = conn.recv (8192)
                if block.endswith ('\r\n.\r\n'):
                    break
            conn.send ('250 Ok.\r\n')
        elif cmd.startswith ('quit'):
            conn.send ('221 byte\r\n')
            conn.close()
            break
        elif cmd.startswith ('ehlo'):
            conn.send (
                '250-loki.ironport.com\r\n'
                '250-PIPELINING\r\n'
                '250-SIZE 10240000\r\n'
                '250-STARTTLS\r\n'
                '250 8BITMIME\r\n'
            )
        else:
            conn.send ('200 ok\r\n')
Beispiel #4
0
def smtp_tls_server_session (conn):
    oconn = conn
    conn.send ('200 howdy\r\n')
    while 1:
        cmd = conn.recv (1024)
        coro.print_stderr ('got %r\r\n' % (cmd,))
        cmd = cmd.lower()
        if cmd.startswith ('starttls'):
            conn.send ('220 ready for tls\r\n')
            ctx = coro_ssl.ssl_ctx (sslip.SSLV23_SERVER_METHOD)
            try:
                sconn = coro_ssl.ssl_sock (ctx)
                sconn.create (sock=conn)
                sconn.ssl_accept()
                conn = sconn
            except sslip.Error:
                #conn.send ('454 TLS negotiation failed\r\n')
                pass
        elif cmd.startswith ('data'):
            conn.send ('354 go ahead\r\n')
            while 1:
                block = conn.recv (8192)
                if block.endswith ('\r\n.\r\n'):
                    break
            conn.send ('250 Ok.\r\n')
        elif cmd.startswith ('quit'):
            conn.send ('221 byte\r\n')
            conn.close()
            break
        elif cmd.startswith ('ehlo'):
            conn.send (
                '250-loki.ironport.com\r\n'
                '250-PIPELINING\r\n'
                '250-SIZE 10240000\r\n'
                '250-STARTTLS\r\n'
                '250 8BITMIME\r\n'
                )
        else:
            conn.send ('200 ok\r\n')
Beispiel #5
0
def init_ssl(protocol=sslip.SSLV23_SERVER_METHOD):
    global ssl_ctx

    if not ssl_ctx:
       ssl_ctx = coro_ssl.ssl_ctx(protocol)
       ssl_ctx.set_ciphers ('RC4-SHA:RC4-MD5:ALL')
Beispiel #6
0
def init_ssl(protocol=sslip.SSLV23_SERVER_METHOD):
    global ssl_ctx

    if not ssl_ctx:
        ssl_ctx = coro_ssl.ssl_ctx(protocol)
        ssl_ctx.set_ciphers('RC4-SHA:RC4-MD5:ALL')