当前位置: 首页 > 知识库问答 >
问题:

Wireshark不显示带有Python SSL套接字的SSL数据包

云默
2023-03-14

我使用Python SSL套接字echo测试自签名证书博客测试了一个简单的SSL套接字连接。我生成了一个自签名证书,并使用上面的Python代码进行了尝试。

一切都如描述的那样工作,但问题是,当我使用Wireshark监视网络数据包时,我看不到任何SSL通信量。我所看到的只是普通的TCP数据包,但我希望看到SSL协议被使用。我是不是漏掉了什么?

为了完整起见,我添加了以下代码:

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()
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截图:

共有1个答案

权弘新
2023-03-14

您看不到SSL/TLS的原因是因为您使用的端口与标准的443不同。这就是Wireshark无法自动检测协议的原因。您有两种选择:

  • 将流量解码为SSL:

分析>解码为>传输>SSL>应用

    null
 类似资料:
  • 我检查了Wireshark中未显示的UDP数据包和Wireshark未捕获的UDP数据包,但UDP应用程序捕获了该数据包,但无法解决我的问题。 我正在使用Wireshark观察我连接到某个网络设备的适配器上的通信量-除了我发出的通信量之外,没有其他通信量。 然后我正在使用Packet Sender应用程序将UDP数据包发送到我知道在适配器另一端的IP地址(即我是10.10.10.34,另一个设备是

  • 我正在使用Netty编写Java游戏服务器。我可以从本地主机成功连接客户端,但无法从远程PC连接。util中没有显示侦听套接字。我是不是遗漏了什么?

  • 问题内容: 如何创建SSL套接字连接? 我真的需要创建密钥库吗?该密钥库应该与我所有的客户端应用程序共享吗? 我用以下代码创建了一个服务器: 我用以下代码在android上创建了一个客户端: 但是当我尝试连接时,会引发以下错误: 问题答案: 您需要一个证书来建立ssl连接,您可以在密钥库中加载证书,也可以加载证书本身。我将显示一些有关keystore选项的示例。 您的代码需要一些参数才能运行: 您

  • 这很好,但没有SSL。 我已经使用OpenSSL为服务器和客户机生成了SSL证书,结果是: 服务器的证书(PEM格式) 客户端的证书(PEM格式) 服务器的私钥(PEM格式) 客户端的私钥(PEM格式) CA文件(PEM、CER和CRT格式) null 会出什么问题?

  • Wireshark和SSL/TLS主密钥 mitmproxy可以记录SSL/TLS主密钥,以便外部程序可以解密与代理之间的SSL/TLS连接。最新版本的Wireshark可以使用这些日志文件来解密数据包。有关更多信息,请参见Wireshark Wiki。 通过设置环境变量来启用键记录SSLKEYLOGFILE,使其指向可写的文本文件: SSLKEYLOGFILE="$PWD/.mitmproxy/

  • 我使用Android应用程序通过TCP套接字与同一局域网上的PC java应用程序进行通信、发送和接收消息。下面是我在android中使用的Asynctask的代码,用于发送消息并从PC接收回复: } 我在onPostExcecute中的祝酒词中显示PC的回复。 Android通过BufferedWriter发送消息,而PC上的java应用程序在BufferedReader中接收消息。 PC在收到