使用WireShark解密https流量

概述

  • https協議是在http協議的基礎上,使用TLS協議對http數據進行了加密,使得網絡通信更加安全。
  • 一般情況下,使用WireShark抓取的https流量,數據都是加密的,無法直接查看。但是可以通過以下兩種方法,解密抓取到的https流量數據。

方法一:通過RSA私鑰解密

  • 首先需要下載服務端的RSA證書私鑰文件

  • 在WireShark中,選擇編輯->首選項->RSA密鑰,然后添加RSA證書私鑰文件。

    • 在這里插入圖片描述
  • 或者選擇編輯->首選項->Protocols->TLS, 點擊RSA keys list后面的編輯按鈕,設置服務端的ip和端口,協議寫http, 再導入RSA私鑰文件。

    • 在這里插入圖片描述
  • 這樣重新抓包,就可以抓到解密后的https流量。

    • 在這里插入圖片描述
  • 這種方法只能解密密鑰協商算法為RSA的加密套件,支持的常用加密套件有以下幾種:

    •   TLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA
      
  • 并且需要拿到RSA證書私鑰,可能不太實用。

方法二:使用密鑰日志文件

  • https流量加密的核心是TLS協議,其握手過程會協商出會話密鑰,用于加密實際傳輸的數據。

  • 當客戶端配置了密鑰日志文件后,每次TLS握手完成時,會將會話密鑰等信息寫入指定的日志文件中,這樣WireShark就可以使用日志文件中的會話密鑰等信息解密HTTPS流量數據。

  • 如果使用瀏覽器,可配置SSLKEYLOGFILE環境變量,指定一個日志文件路徑。如果不生效,可重啟下電腦。

    •   set SSLKEYLOGFILE=C:\sslpath\sslkeylog.txt
      
  • 如果使用C/C++編寫的客戶端程序,可通過OpenSSL接口指定密鑰日志文件

    •   void keylog_callback(const SSL *ssl, const char *line) {FILE *keylog = fopen("C:\\sslpath\\sslkeylog.txt", "a");if (keylog) {fprintf(keylog, "%s\n", line);fclose(keylog);}}int main () {SSL_CTX *ctx = SSL_CTX_new(TLSv1_2_client_method());if(ctx == NULL){ERR_print_errors_fp(stderr);return -1;}       SSL_CTX_set_keylog_callback(ctx, keylog_callback);return 0;}
      
  • 然后在WireShark中選擇編輯->首選項->Protocols->TLS, 在(Pre)-Master-Secret log filename的編輯框中指定日志文件路徑。

    • 在這里插入圖片描述
  • 再重新抓取,依然可以成功解密https流量

    • 在這里插入圖片描述
  • 這種方法幾乎支持所有的加密套件。

  • 密鑰日志文件若泄露,可解密所有記錄的HTTPS流量,僅限測試環境使用。

總結

  • 通過RSA證書私鑰解密使用密鑰日志文件
    加密套件支持情況只支持RSA密鑰協商算法的加密套件,不支持ECDH、DH等其他密鑰協商算法的加密套件幾乎支持所有加密套件
    安全性只支持解密指定服務器的https流程,更加安全可解密所有的https流量, 密鑰日志文件要謹慎保存
    實用性需要服務端提供證書私鑰, 不太實用不需要服務端提供證書私鑰,更加實用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72373.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72373.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72373.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數字化轉型 - 數據驅動

數字化轉型 一、 數據驅動1.1 監控1.2 分析1.3 挖掘1.4 賦能 二、數據驅動案例2.1 能源工業互聯網:綠色節能的數字化路徑2.2 光伏產業的數字化升級2.3 數據中心的綠色轉型2.4云遷移的質效優化2.5 企業數字化運營的實踐2.6數字化轉型的最佳實踐 一、 數據驅動 從數…

解決 Docker 鏡像拉取超時問題:配置國內鏡像源

在使用 Docker 的過程中,經常會遇到鏡像拉取超時的問題,尤其是在國內網絡環境下。這不僅會浪費大量的時間,還可能導致一些項目無法順利進行。今天,我將分享一個簡單而有效的解決方法:配置國內鏡像源。 環境 操作系統 c…

Linux命令基礎,創建,輸入,輸出,查看,查詢

什么是命令、命令行 命令行:即:Linux終端(Terminal),是一種命令提示符頁面。以純“字符”的形式操作操作系統,可以使用各種字符化命令對操作系統發出操作指令。 命令:即Linux程序。一個命令就…

【GNU Radio】ZMQ模塊學習

【GNU Radio】ZMQ模塊學習 ZMQ 介紹前置知識Socket通信模型PUB/SUB(發布/訂閱)模型PUSH/PULL(推/拉)模型REQ/REP(請求/響應)模型 ZMQ 詳解基于通信模型分析基于數據格式分析Data BlocksMessage Blocks ZMQ …

【筆記】深度學習模型訓練的 GPU 內存優化之旅:綜述篇

開設此專題,目的一是梳理文獻,目的二是分享知識。因為筆者讀研期間的研究方向是單卡上的顯存優化,所以最初思考的專題名稱是“顯存突圍:深度學習模型訓練的 GPU 內存優化之旅”,英文縮寫是 “MLSys_GPU_Memory_Opt”。…

Vue 3 Diff 算法深度解析:與 Vue 2 雙端比對對比

文章目錄 1. 核心算法概述1.1 Vue 2 雙端比對算法1.2 Vue 3 快速 Diff 算法 2. 算法復雜度分析2.1 時間復雜度對比2.2 空間復雜度對比 3. 核心實現解析3.1 Vue 2 雙端比對代碼3.2 Vue 3 快速 Diff 代碼 4. 性能優化分析4.1 性能測試數據4.2 內存使用對比 5. 使用場景分析5.1 Vu…

神經網絡的基本知識

感知機 輸入:來自其他 n 個神經元傳遞過來的輸入信號 處理:輸入信號通過帶權重的連接進行傳遞, 神經元接受到總輸入值將與神經元的閾值進行比較 輸出:通過激活函數的處理以得到輸出 感知機由兩層神經元組成, 輸入層接受外界輸入信號傳遞給…

UE5與U3D引擎對比分析

Unreal Engine 5(UE5)和Unity 3D(U3D)是兩款主流的游戲引擎,適用于不同類型的項目開發。以下是它們的主要區別,分點整理: 1. 核心定位 UE5: 主打3A級高畫質項目(如主機/P…

C++相關基礎概念之入門講解(上)

1. 命名空間 C中的命名空間(namespace)是用來避免命名沖突問題的一種機制。通過將類、函數、變量等封裝在命名空間中,可以避免不同部分的代碼中出現相同名稱的沖突。在C中,可以使用namespace關鍵字來定義命名空間。 然后我們在調…

網絡協議棧

網絡協議棧的位置 用戶在應用層的各種請求最終會下達給操作系統,操作系統內除了進程管理、文件管理、內存管理、驅動管理之外,還有一個內嵌的軟件協議棧,協議棧將用戶的數據進行各種封包后,通過網卡將數據傳遞到網絡當中&#xf…

C#索引器基礎到實踐

1. 封裝和隱藏內部實現 數組是一個簡單的數據結構,它的內部實現是固定的(基于連續內存)。而索引器可以隱藏內部的實現細節,允許開發者使用更復雜的數據結構來存儲數據,同時對外提供類似數組的訪問方式。 示例: 假設你有一個類,內部使用 Dictionary 或 List 來存儲數據…

C++之list類(超詳細)

在上一節中我們學習了STL中的vector這個容器,這節我們來學習一下另外一個常用的容器——list。 文章目錄 前言 一、list的介紹 二、list的使用及相關接口 1.list的使用 2.list的迭代器使用 3.list的相關接口 3.1 list capacity 3.2 list element access 3.3…

mysql、oracle、SQLserver之間的區別和優勢

MySQL、Oracle和SQL Server都是常見的關系型數據庫管理系統(RDBMS),它們在某些方面有一些區別和優勢。 MySQL: MySQL是一種開源的RDBMS,由Oracle公司開發和維護。它具有快速、穩定和易于使用的特點。MySQL適用于中小型…

Python依賴包遷移到斷網環境安裝

首先,我應該確認兩臺電腦的操作系統都是Windows,所以架構和版本應該兼容。Python版本必須一致,否則可能會有問題。比如,如果電腦B用的是Python 3.8.5,電腦A也得裝同樣的版本,否則有些包可能不兼容。所以第一…

75.HarmonyOS NEXT ImageItemView組件深度剖析:手勢交互與動畫實現(二)

溫馨提示:本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦! HarmonyOS NEXT ImageItemView組件深度剖析:手勢交互與動畫實現(二) 一、手勢系統架構 .gesture(GestureGroup(GestureMode.Exclusiv…

Qt 控件概述 QWdiget

Qt為我們提供了很多控件,這些控件拿過來就可以使用 目錄 QWidget 屬性 WindowFrame的影響 QWidget Qt中所有的組件都是繼承自QWidget Qt Creator中的右側可以看到QWidget的各種屬性 其中各種屬性都可以在Qt文檔中找到說明 ? 屬性 enabled:描述該組…

適合企業內訓的AI工具實操培訓教程(37頁PPT)(文末有下載方式)

詳細資料請看本解讀文章的最后內容。 資料解讀:適合企業內訓的 AI 工具實操培訓教程 在當今數字化時代,人工智能(AI)技術迅速發展,深度融入到各個領域,AIGC(人工智能生成內容)更是成…

Axios 請求取消:從原理到實踐

Axios 請求取消:從原理到實踐 在現代前端開發中,網絡請求是不可或缺的一部分。Axios 是一個基于 Promise 的 HTTP 客戶端,廣泛應用于瀏覽器和 Node.js 環境中。然而,在某些場景下,我們可能需要取消正在進行的請求&…

Spring Boot對接twilio發送郵件信息

要在Spring Boot應用程序中對接Twilio發送郵件信息,您可以使用Twilio的SendGrid API。以下是一個簡單的步驟指南,幫助您完成這一過程: 1. 創建Twilio賬戶并獲取API密鑰 注冊一個Twilio賬戶(如果您還沒有的話)。在Twi…

【最后203篇系列】015 幾種消息隊列的思考

背景 隊列還是非常重要的中間件,可以幫助我們:提高處理效率、完成更復雜的處理流程 最初,我覺得只要掌握一種消息隊列就夠了,現在想想挺好笑的。 過去的探索 因為我用python,而rabbitmq比較貼合快速和復雜的數據處…