<返回更多

wireshark 如何抓包https

2021-12-01    云技术趣谈
加入收藏

由于https 使用了 TLS/SSL 加密条件,我们无法直接在wireshark的中读取到数据内容,我们先看一下正常的http包的内容。

可以直接读取到http的header 和body。

wireshark 如何抓包https

 

但如果是https 则不行,显示的是加密的串,可以看到使用的TLS 1.2 。

wireshark 如何抓包https

 

为了解开这个加密的串,我们需要获得 TLS 握手后的对称秘钥。

如果是通过浏览器打开网站的话,我们需要设置环境变量。

export SSLKEYLOGFILE=~/.ssl-key.log

如果是通过代码请求,比如Go 语言发送https 请求,可以指定 KeyLog 文件。

func main() {
    f, err := os.OpenFile("keylog.txt", os.O_WRONLY|os.O_CREATE|os.O_AppEND, 0664)
    if err != nil {
        log.Fatal(err)
    }

    client := http.Client{
        Transport: &http.Transport{
            TLSClientConfig: &tls.Config{
                KeyLogWriter:       f,
                InsecureSkipVerify: true,
            },
        },
    }
    _, err = client.Get("https://tech.wonter.NET")
    if err != nil {
        log.Fatal(err)
    }
}

当请求发出后,便可以通过wireshark SSL 中配置这个秘钥文件解析加密的body。

wireshark 如何抓包https

 

如果是新版的wireshark则是配置 TLS。这点需要注意。

wireshark 如何抓包https

 

解析的效果如下:

wireshark 如何抓包https

 

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>