簡體   English   中英

Wireshark不會顯示帶有SSL SSL套接字的SSL數據包

[英]Wireshark doesn't show SSL packets with Python SSL sockets

使用自簽名證書博客跟蹤Python SSL套接字回顯測試,以測試簡單的SSL套接字連接。 我生成了一個自簽名證書,我使用上面的Python代碼來試試。

一切都按照描述的方式工作,但問題是,當我使用Wireshark監控網絡數據包時,我看不到任何SSL流量。 我所看到的只是普通的TCP數據包,但我期待看到正在使用的SSL協議。 我錯過了什么嗎?

為了完整起見,我添加了代碼:

client.py

import socket, ssl, pprint

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Require a certificate from the server. We used a self-signed certificate
# so here ca_certs must be the server certificate itself.
ssl_sock = ssl.wrap_socket(s,
                           ca_certs="server.crt",
                           cert_reqs=ssl.CERT_REQUIRED)

ssl_sock.connect(('localhost', 10023))

print repr(ssl_sock.getpeername())
print ssl_sock.cipher()
print pprint.pformat(ssl_sock.getpeercert())

ssl_sock.write("boo!")

if False: # from the Python 2.7.3 docs
    # Set a simple HTTP request -- use httplib in actual code.
    ssl_sock.write("""GET / HTTP/1.0\r
    Host: www.verisign.com\n\n""")

    # Read a chunk of data.  Will not necessarily
    # read all the data returned by the server.
    data = ssl_sock.read()

    # note that closing the SSLSocket will also close the underlying socket
    ssl_sock.close()

server.py

import socket, ssl

bindsocket = socket.socket()
bindsocket.bind(('', 10023))
bindsocket.listen(5)

def do_something(connstream, data):
    print "do_something:", data
    return False

def deal_with_client(connstream):
    data = connstream.read()
    while data:
        if not do_something(connstream, data):
            break
        data = connstream.read()

while True:
    newsocket, fromaddr = bindsocket.accept()
    connstream = ssl.wrap_socket(newsocket,
                                 server_side=True,
                                 certfile="server.crt",
                                 keyfile="server.key")
    try:
        deal_with_client(connstream)
    finally:
        connstream.shutdown(socket.SHUT_RDWR)
        connstream.close()

Wireshark截圖:

Wireshark的

您不會看到SSL / TLS的原因是因為您使用的端口與標准443不同。這就是Wireshark無法自動檢測協議的原因。 您有兩種選擇:

  • 將流量解碼為SSL:

分析>解碼為>傳輸> SSL>應用

  • 添加您的端口:

編輯>首選項>協議> HTTP> SSL / TLS端口= 443, {端口}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM