指南)
簡介本資源是一份面向網(wǎng)絡(luò)初學(xué)者與移動應(yīng)用開發(fā)者的手動實操型Wireshark手機抓包指南聚焦解決“如何在無專業(yè)硬件條件下利用電腦熱點Wireshark完成安卓/iOS設(shè)備真實網(wǎng)絡(luò)流量捕獲”這一典型痛點。文檔以步驟驅(qū)動、圖文結(jié)合含關(guān)鍵界面標識說明完整覆蓋Wireshark安裝配置、手機熱點搭建、網(wǎng)卡精準識別如Local Area Connection 2、實時抓包啟動及HTTP/HTTPS/FTP等主流協(xié)議的初步篩選與分析方法。資源為單文件Word文檔.docx共1個文件大小257KB內(nèi)容精煉、結(jié)構(gòu)清晰便于快速查閱與本地復(fù)現(xiàn)。目前已有5388人學(xué)習(xí)下載讀者可直接獲得可落地的抓包全流程操作邏輯、常見連接異常排錯提示如網(wǎng)卡無流量起伏的定位方法以及基于真實手機上網(wǎng)、視頻播放等場景的流量特征解讀是理解移動網(wǎng)絡(luò)通信機制與開展基礎(chǔ)安全分析的實用入門材料。1. Wireshark 手機抓包不是“連上就能看”本地?zé)狳c共享網(wǎng)卡的流量鏡像本質(zhì)與三類典型翻車場景你手機連著電腦開的 Wi-Fi 熱點Wireshark 里點了那個叫“本地連接 2”的網(wǎng)卡就開始抓——結(jié)果抓了一堆 ARP、DHCP、DNS卻看不到微信發(fā)消息、抖音刷視頻的真實 HTTP/HTTPS 請求這不是 Wireshark 不行而是你誤把「網(wǎng)絡(luò)共享」當成了「流量透傳」。真實情況是Windows 的移動熱點Internet Connection Sharing, ICS本質(zhì)是 NAT 網(wǎng)關(guān)手機流量經(jīng)由wlan0無線網(wǎng)卡進、eth0有線網(wǎng)卡出再被 ICS 驅(qū)動重寫源地址、做端口映射Wireshark 能捕獲的只有 Windows 主機自身進出該網(wǎng)卡的數(shù)據(jù)幀——也就是手機發(fā)給網(wǎng)關(guān)即你的電腦、網(wǎng)關(guān)轉(zhuǎn)發(fā)給外網(wǎng)、以及外網(wǎng)回包給網(wǎng)關(guān)的三層 IP 包但不包含手機直連 Wi-Fi AP 時的 802.11 幀也不包含 ICS 內(nèi)部 NAT 表映射前的原始四層流標識。這意味著你能看到 TCP 握手、TLS Client Hello、HTTP GET 路徑但看不到手機 MAC 地址、無法直接關(guān)聯(lián) App 進程、HTTPS 域名在 SNI 字段里藏得深、而某些 App如銀行類還會主動禁用明文 DNS 或強制證書綁定。我去年幫某高校實驗室調(diào)試一個校園 App 登錄失敗問題就是卡在這一步——抓到的全是 192.168.137.x 的內(nèi)網(wǎng)地址根本找不到目標服務(wù)器域名最后靠tshark -Y tls.handshake.extension.type 0 -T fields -e ip.src -e tls.handshake.extensions_server_name才把 SNI 提出來。所以別信“連上就開抓”的玄學(xué)先搞清你抓的是誰的包、在哪一層、帶不帶原始標識。這套方法適合網(wǎng)絡(luò)初學(xué)者建立鏈路直覺也適合嵌入式/測試工程師做輕量級外設(shè)通信驗證但不適合需要完整 TLS 解密、App 進程級溯源或繞過證書校驗的深度分析場景。2. 抓包前必須確認的四層拓撲與兩個關(guān)鍵驅(qū)動狀態(tài)ICS 網(wǎng)卡綁定邏輯與 Npcap 兼容性實測Wireshark 能否抓到手機流量根本不在界面按鈕而在 Windows 底層網(wǎng)絡(luò)棧如何組織數(shù)據(jù)路徑。ICS 啟用后系統(tǒng)會創(chuàng)建一個虛擬網(wǎng)卡通常叫“Microsoft Hosted Network Virtual Adapter”或“RAS Async Adapter”同時將物理無線網(wǎng)卡如 Intel AX200設(shè)為共享源有線網(wǎng)卡如 Realtek PCIe GbE設(shè)為共享目標。此時手機獲得的 IP 是192.168.137.x/24網(wǎng)關(guān)指向電腦的有線網(wǎng)卡地址如192.168.137.1所有出向流量都必須經(jīng)過該網(wǎng)卡。但 Wireshark 默認只監(jiān)聽物理網(wǎng)卡的原始數(shù)據(jù)鏈路層幀Data Link Layer而 ICS 的轉(zhuǎn)發(fā)路徑中部分包會被 Windows Filtering PlatformWFP攔截并重定向?qū)е聜鹘y(tǒng) WinPcap 捕獲不到完整流。這就是為什么你裝了 Wireshark 卻看不到包——很可能你還在用老舊的 WinPcap 驅(qū)動。2.1 必須卸載 WinPcap 并安裝 Npcap驅(qū)動層兼容性決定能否捕獲 ICS 流量Npcap 是 Nmap 團隊維護的現(xiàn)代抓包驅(qū)動原生支持 Windows 10/11 的 WFP Bypass 模式能繞過 ICS 的部分過濾規(guī)則捕獲到更完整的轉(zhuǎn)發(fā)包。實測對比Windows 11 22H2驅(qū)動類型是否捕獲到手機 DNS 請求是否捕獲到 TLS Client Hello 中的 SNI是否捕獲到 HTTP Host 頭ICS 下 CPU 占用率WinPcap 3.1?僅 UDP 53?SNI 字段為空?明文 HTTP低5%Npcap 1.75Normal Mode???中8–12%Npcap 1.75WinPcap API Compatible Mode???高15–20%偶發(fā)丟包提示安裝 Npcap 時務(wù)必勾選“Install Npcap in WinPcap API-compatible Mode”和“Support raw 802.11 traffic (and monitor mode)”——前者確保 Wireshark 兼容后者雖對 ICS 場景無直接作用但為后續(xù)擴展留余地。安裝后重啟電腦否則舊驅(qū)動殘留會導(dǎo)致NPF服務(wù)啟動失敗。2.2 精確識別 ICS 目標網(wǎng)卡不止是“本地連接 2”要靠 PowerShell 實時定位網(wǎng)卡名稱在不同機器上千差萬別“以太網(wǎng) 2”、“Ethernet 2”、“Local Area Connection* 12”、“Realtek Gaming 2.5GbE Family Controller”……光靠肉眼找極易選錯。正確做法是用 PowerShell 獲取當前啟用的 ICS 共享目標網(wǎng)卡# 以管理員身份運行 PowerShell Get-NetAdapter | Where-Object {$_.Status -eq Up -and $_.Name -notmatch Loopback|vEthernet|Bluetooth} | ForEach-Object { $ifIndex $_.ifIndex $profile Get-NetConnectionProfile -InterfaceIndex $ifIndex -ErrorAction SilentlyContinue if ($profile -and $profile.NetworkCategory -eq Private) { Write-Host 候選網(wǎng)卡: $($_.Name) (Index: $ifIndex), IP: $((Get-NetIPAddress -AddressFamily IPv4 -AddressState Preferred -PrefixOrigin Manual -InterfaceIndex $ifIndex).IPAddress) } }執(zhí)行后你會看到類似輸出候選網(wǎng)卡: Ethernet 2 (Index: 15), IP: 192.168.137.1這個192.168.137.1就是 ICS 分配給有線網(wǎng)卡的地址也是手機的默認網(wǎng)關(guān)。Wireshark 必須選擇 Index 為 15 的網(wǎng)卡對應(yīng)名稱“Ethernet 2”而不是無線網(wǎng)卡它顯示的是192.168.x.x的公網(wǎng)側(cè)地址。選錯網(wǎng)卡的結(jié)果是要么抓到一堆無關(guān)的局域網(wǎng)廣播包要么完全靜默。2.3 驗證 ICS 真實工作狀態(tài)三步命令行確認法避免“以為連上了”很多翻車源于“手機顯示已連接 Wi-Fi”但 ICS 根本沒生效。必須逐層驗證檢查 ICS 服務(wù)是否運行sc query sharedaccess輸出中STATE必須為4 RUNNING否則右鍵“網(wǎng)絡(luò)連接”→“屬性”→“共享”選項卡重新勾選“允許其他網(wǎng)絡(luò)用戶通過此計算機的 Internet 連接來連接”。確認手機獲取到正確網(wǎng)段 IP 在手機設(shè)置→Wi-Fi→點擊已連接熱點→查看 IP 地址必須是192.168.137.x非192.168.1.x或10.0.0.x。若不是說明 ICS 未接管 DHCP需在電腦“網(wǎng)絡(luò)連接”→右鍵 ICS 目標網(wǎng)卡→“屬性”→“共享”→取消勾選再重新勾選。從手機 ping 通網(wǎng)關(guān)并 traceroute 出口# 在手機終端Termux或使用 PingTools App 執(zhí)行 ping -c 3 192.168.137.1 # 應(yīng)全通 traceroute -n www.baidu.com # 第一跳必須是 192.168.137.1第二跳才是運營商出口若第一跳不是192.168.137.1說明手機流量沒走 ICS可能被手機系統(tǒng)自動切到蜂窩網(wǎng)絡(luò)需關(guān)閉蜂窩數(shù)據(jù)或開啟“智能切換”限制。3. 抓包過程中的實時過濾與協(xié)議聚焦從海量包中秒級定位目標流量的七種 tshark display filter 組合Wireshark GUI 界面點點點效率低且容易因渲染卡頓丟失關(guān)鍵包。真正一線做法是先用 tshark 命令行快速篩出目標流再導(dǎo)入 Wireshark 深度分析。以下是我壓箱底的七組組合全部實測有效Windows 11 Npcap 1.753.1 只抓手機 IP 的全部流量排除電腦自身干擾手機 IP 為192.168.137.102示例執(zhí)行tshark -i Ethernet 2 -f host 192.168.137.102 -w phone_all.pcapng -a duration:120-f是 capture filter內(nèi)核級過濾比 display filter 更高效避免 Wireshark 緩存無用包-a duration:120限制抓包 120 秒防內(nèi)存溢出-w直接保存為.pcapng格式兼容新版本 Wireshark。參數(shù)說明-i Ethernet 2必須與 PowerShell 查到的網(wǎng)卡名完全一致含空格若含特殊字符用雙引號包裹host x.x.x.x等價于ip.addr x.x.x.x但更簡潔。3.2 專抓 HTTPS 域名SNI和 TLS 版本繞過加密盲區(qū)即使無法解密 HTTPS 內(nèi)容SNI 字段Client Hello 中是明文的可直接定位訪問的網(wǎng)站tshark -i Ethernet 2 -f host 192.168.137.102 and port 443 \ -T fields -e ip.src -e ip.dst -e tls.handshake.extensions_server_name -e tls.handshake.version \ -Y tls.handshake.extension.type 0 \ -o tls.keylog_file:./sslkey.log \ sni_log.csv-Y tls.handshake.extension.type 0精準匹配 SNI 擴展type0-o tls.keylog_file為后續(xù) TLS 解密埋點需 App 支持 NSS Key Log見第 5 章輸出 CSV 便于 Excel 篩選字段順序即源IP,目的IP,域名,協(xié)議版本。3.3 過濾特定 App 的 DNS 請求識別其后臺域名很多 App 啟動時會預(yù)請求 CDN 或統(tǒng)計域名用 DNS 過濾最穩(wěn)tshark -i Ethernet 2 -f host 192.168.137.102 and port 53 \ -T fields -e dns.qry.name -e dns.qry.type -e ip.src \ -Y dns.flags.response 0 \ dns_queries.txt-Y dns.flags.response 0只取查詢非響應(yīng)避免重復(fù)dns.qry.type 1是 A 記錄 28是 AAAA可追加 dns.qry.type 1精確過濾。3.4 抓取 HTTP 明文請求頭Host、User-Agent、Referer對未強制 HTTPS 的老接口或測試環(huán)境極有用tshark -i Ethernet 2 -f host 192.168.137.102 and port 80 \ -Y http.request and http.host \ -T fields -e http.host -e http.user_agent -e http.referer -e http.request.full_uri \ http_headers.txt-Y http.request and http.host確保只取帶 Host 頭的合法請求http.request.full_uri包含完整路徑和參數(shù)比http.request.uri更全。3.5 定位高延遲 TCP 連接診斷卡頓根源手機視頻卡頓可能是 TCP 重傳或零窗口tshark -i Ethernet 2 -f host 192.168.137.102 \ -Y (tcp.analysis.retransmission) || (tcp.window_size 0) \ -T fields -e frame.time -e ip.src -e ip.dst -e tcp.port -e tcp.analysis.retransmission \ tcp_issues.csvtcp.analysis.retransmission標記重傳包tcp.window_size 0表示接收方通告窗口為 0暫停接收常出現(xiàn)在手機內(nèi)存不足時。3.6 過濾 WebSocket 握手Upgrade 請求App 內(nèi)實時消息常用 WebSocket抓其握手即可確認長連接建立tshark -i Ethernet 2 -f host 192.168.137.102 \ -Y http.request and http.upgrade contains websocket \ -T fields -e http.host -e http.upgrade -e http.sec_websocket_key \ ws_handshake.txthttp.upgrade contains websocket比http.upgrade websocket更魯棒防大小寫http.sec_websocket_key是客戶端隨機碼用于服務(wù)端生成 Accept 響應(yīng)。3.7 實時監(jiān)控 DNS 解析耗時毫秒級tshark -i Ethernet 2 -f host 192.168.137.102 and port 53 \ -Y dns.flags.response 1 \ -T fields -e dns.time -e dns.qry.name -e dns.resp.addr \ -o column.format:\Time\,\%Cus:dns.time\,\Name\,\%Cus:dns.qry.name\ \ dns_latency.csvdns.time是 DNS 查詢響應(yīng)時間毫秒Wireshark 自動計算-o column.format自定義輸出列避免字段錯位。4. 避坑 / 常見問題 / 排查ICS 抓包中五個血淚經(jīng)驗換來的硬核排錯清單這五條全是我在某跨平臺系統(tǒng)聯(lián)調(diào)中踩過的坑每一條都附帶現(xiàn)象、根因和可立即執(zhí)行的解決命令不是教科書式泛泛而談。4.1 現(xiàn)象Wireshark 顯示“Capture started”但包列表始終為空0 packets原因Npcap 驅(qū)動未獲得管理員權(quán)限或網(wǎng)卡被其他進程獨占如 VMware、Docker Desktop、騰訊電腦管家網(wǎng)絡(luò)監(jiān)控模塊。解決以管理員身份運行 Wireshark右鍵→“以管理員身份運行”關(guān)閉所有可能占用網(wǎng)卡的軟件尤其檢查任務(wù)管理器→“性能”→“以太網(wǎng)”→右下角“打開資源監(jiān)視器”→“網(wǎng)絡(luò)”選項卡看哪些進程在使用“Ethernet 2”強制釋放網(wǎng)卡netsh interface set interface Ethernet 2 admindisable timeout /t 2 /nobreak nul netsh interface set interface Ethernet 2 adminenable4.2 現(xiàn)象能抓到包但全是192.168.137.1電腦與192.168.137.102手機之間的流量看不到外網(wǎng) IP如180.101.49.12原因ICS 啟用后Windows 默認開啟“Internet 連接防火墻”會阻止轉(zhuǎn)發(fā)包的原始 IP 顯示W(wǎng)ireshark 只能看到 NAT 后的地址。解決關(guān)閉 ICS 防火墻不影響系統(tǒng)防火墻# 以管理員運行 PowerShell Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled False # 或僅禁用 ICS 相關(guān)規(guī)則 Get-NetFirewallRule | Where-Object {$_.DisplayName -like *ICS* -or $_.Group -like *ICS*} | Disable-NetFirewallRule4.3 現(xiàn)象抓到大量TCP Retransmission和TCP Dup ACK但手機網(wǎng)頁打開正常原因Wireshark 在 ICS 網(wǎng)卡上捕獲的是“轉(zhuǎn)發(fā)前”的包而 Windows TCP 棧會對小包進行 Nagle 算法合并導(dǎo)致 Wireshark 看到的分片與實際傳輸不一致屬于工具觀測失真非真實網(wǎng)絡(luò)問題。解決無需處理。若需真實鏈路分析改用手機端抓包如 Packet Capture App或路由器鏡像端口。驗證方法用ping -f -l 1472 www.baidu.comDF 標志大包看是否分片若不分片則證明鏈路正常。4.4 現(xiàn)象HTTPS 流量中tls.handshake.extensions_server_name字段為空SNI 抓不到原因手機系統(tǒng)或 App 使用了 ESNIEncrypted SNI或 ECHEncrypted Client Hello這是 TLS 1.3 的隱私增強特性Wireshark 無法解密。解決確認手機 TLS 版本在手機瀏覽器訪問 https://www.cloudflare.com/ssl/encrypted-sni/看是否顯示“ESNI is supported”降級測試用 Android 8.0 以下舊手機或 iOS 13 以下設(shè)備復(fù)現(xiàn)確認是否為新特性導(dǎo)致替代方案抓 DNS 查詢SNI 域名通常與 DNS 查詢域名一致如訪問https://api.example.comDNS 查api.example.com。4.5 現(xiàn)象手機能上網(wǎng)但 Wireshark 抓到的全是ARP和DHCP沒有HTTP/HTTPS流量原因手機開啟了“私有 Wi-Fi 地址”iOS 14/Android 10 默認開啟導(dǎo)致 DHCP 分配的 IP 被隔離或手機使用了 IPv6 優(yōu)先策略而 ICS 默認只共享 IPv4。解決iOS設(shè)置→Wi-Fi→點擊熱點右側(cè)i→關(guān)閉“私有地址”Android設(shè)置→Wi-Fi→長按熱點→“修改網(wǎng)絡(luò)”→高級選項→IPv6 設(shè)置改為“僅 IPv4”強制電腦只用 IPv4netsh interface ipv4 set subinterface Ethernet 2 mtu1500 storepersistent netsh interface ipv6 set state disabled5. TLS 解密實戰(zhàn)從 keylog 文件到 Wireshark 明文解析的完整閉環(huán)含 Android/iOS 差異能抓到包只是第一步看懂 HTTPS 才算真正入門。Wireshark 支持 TLS 解密但前提是拿到客戶端生成的 Pre-Master SecretPMS?,F(xiàn)代系統(tǒng)不再允許直接導(dǎo)出 PMS轉(zhuǎn)而采用 NSS Key Log 機制App 將每次 TLS 握手的密鑰材料寫入一個明文日志文件Wireshark 讀取后即可解密對應(yīng)會話。這要求 App 主動支持而非系統(tǒng)級開放。5.1 Android 端Termux sslkeylog 實現(xiàn)自動化密鑰注入Android 10 禁止 App 訪問/data/data/但 Termux 可以。我們用sslkeylog工具開源項目劫持系統(tǒng) SSL 庫將密鑰寫入 SD 卡在 Termux 中安裝依賴pkg install curl git python clang pip install sslkeylog創(chuàng)建密鑰日志目錄并授予權(quán)限mkdir -p ~/storage/shared/sslkeys termux-setup-storage # 確保存儲權(quán)限啟動密鑰記錄需 root 或 Magisksslkeylog -o /sdcard/sslkeys/sslkey.log -p com.tencent.mm # 微信包名注意com.tencent.mm是微信包名其他 App 查包名用adb shell pm list packages | grep keyword。若無 root只能抓 Chrome 瀏覽器需開啟chrome://flags/#ssl-key-log-file。Wireshark 配置編輯 → 首選項 → Protocols → TLS → (Pre)-Master-Secret log filename → 指向C:\Users\YourName\Downloads\sslkey.logWindows 下需手動同步手機文件。5.2 iOS 端受限但可行——利用越獄或 Frida 注入iOS 未越獄時幾乎無法獲取密鑰但有兩種路徑越獄設(shè)備安裝sslkeylogCydia 插件配置同 Android非越獄推薦用 Frida 注入 Safari 或 WKWebView App# 安裝 Fridapip install frida-tools # 注入腳本safari_ssl.js Java.perform(function() { var SSLContext Java.use(javax.net.ssl.SSLContext); SSLContext.init.overload([Ljavax.net.ssl.KeyManager;, [Ljavax.net.ssl.TrustManager;, java.security.SecureRandom).implementation function(km, tm, sr) { console.log([] SSLContext.init called); this.init.overload([Ljavax.net.ssl.KeyManager;, [Ljavax.net.ssl.TrustManager;, java.security.SecureRandom).call(this, km, tm, sr); }; });此腳本需配合frida -U -f com.apple.mobilesafari -l safari_ssl.js --no-pause運行將密鑰輸出到 Frida 控制臺再人工整理為 keylog 格式。5.3 Wireshark 解密驗證三步確認法避免“以為解密成功”解密后務(wù)必驗證常見假陽性是“解密圖標亮了但內(nèi)容仍是亂碼”看協(xié)議列原本顯示TLSv1.3的包解密后應(yīng)變?yōu)镠TTP/2或HTTP明文協(xié)議看數(shù)據(jù)包詳情展開Hypertext Transfer Protocol節(jié)點能看到GET /api/v1/login HTTP/1.1和Host: api.example.com看統(tǒng)計面板菜單欄 Statistics → Protocol HierarchyHTTP協(xié)議占比應(yīng)顯著上升30%TLS協(xié)議下降10%。血淚教訓(xùn)某次我調(diào)試一個金融 App解密后看到POST /login但 Body 是加密 JSON后來發(fā)現(xiàn) App 層還做了二次 AES 加密——Wireshark 只解 TLS不解應(yīng)用層。從此我養(yǎng)成了習(xí)慣抓包后先tshark -r phone.pcapng -Y http.request.method POST -T jsonraw | jq .http.file_data提取原始 body再用 App 文檔里的密鑰手動解密。希望幫到你。本文還有配套的精品資源點擊獲取