【学习笔记】tcpdump+Wireshark抓包(2)
1. TLS我们学过 HTTP 明文这个TLS 可以当成同一件事只是内容被锁进保险箱里了。之前 curlhttp://www.example.com时连的是 80 端口Wireshark 里能直接看到GET / HTTP/1.1、200 OK如果改成https://连的是 443 端口数据先 加密再放进 TCPWireshark 看不到 GET 和网页只能看到 TLS 和 Application DataHTTP 明信片谁都能读HTTPS 封信封里面写了什么抓包看不到TLS 就是那只信封和锁1.1 抓包 查看平台说明下文-i any用于 Linux可同时监听所有接口。macOS 请先执行tcpdump -D查看接口再把any替换为实际接口普通网络流量通常选择en0本机回环实验选择lo0具体以本机列表和目标流量为准。终端 1开始抓 443sudo tcpdump -i any -nn -s 0 -w ~/Desktop/https-beginner.pcap port 443只抓 443比抓全部包干净很多。终端 2关掉代理访问 HTTPSunset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy ALL_PROXY curl -v https://www.example.comcurl 之后会出现一个ip大概在如下位置用Wireshark打开刚刚的这个.pcap包然后在顶部过滤刚刚你查出来的这个IP。可以看到如下三个点Protocol 多是 TLS 或 TLSv1.2 / TLSv1.3Source/Destination 是你的电脑和 example 服务器来回端口 一边是自己另一边是 443总过程为4段No.8–10 TCP 三次握手先接通 443No.11–20 TLS 握手商量加密、交换证书、切换密文No.21–34 加密传数据Application Data里面是 HTTPNo.35–39 TCP 四次挥手断开连接1.2 找 TLS 握手包号过程11Client Hello你开始 TLS 握手声明访问www.example.comSNI14TCP ACK服务器确认收到 Client Hello15Server Hello Change Cipher Spec服务器选定加密方式并通知后续改用密钥加密16–17服务器继续发握手内容证书、握手结束等TLS 1.3 中常已加密或打包18–19你发 TCP ACK确认收到服务器握手数据20Change Cipher Spec你这边也切换为加密通信TLS 握手基本完成这一阶段 在 TCP 之上建立 HTTPS 安全通道还没传或刚开始传业务网页数据。过滤条件再加一个 tls.handshake 。版本说明下面是便于入门理解的通用握手名称。TLS 1.2 与 TLS 1.3 的具体消息和可见性不同本次抓包以 Wireshark 实际显示为准不要求在 TLS 1.3 中逐项看到 Server Hello Done 或 Client Key Exchange。直接看 Info 字段Info谁发给谁白话解释Client Hello你 → 服务器我想用 HTTPS 连你我支持这些加密方式Server Hello服务器 → 你好我们用这一种加密Certificate服务器 → 你这是我的证书证明我是正规网站Server Hello Done服务器 → 你我这边说完了Client Key Exchange 等你 → 服务器交换密钥细节可先不管Change Cipher Spec双方后面开始加密Encrypted Handshake Message双方加密的握手收尾Client Hello 包SNI 里通常是访问的域名。含义虽然 HTTP 还没开始传但客户端会先告诉服务器「我要访问www.example.com」。这是 HTTPS 抓包里少数还能直接看到域名的字段之一。此时还没有传 HTTP GET只是在商量怎么加密。Change Cipher Spec切换加密含义 通知对方从下一刻起后面数据都用刚商量好的密钥加密就像双方说好密码后说好从现在开始用这套密码说话。界面上可能写 Version: TLS 1.2 (0x0303)这是兼容写法你这次整体仍是 TLS 1.3不用纠结这个显示。1.3 加密业务数据包号过程21、22、23、25、27–30、33、34Application Data加密的 HTTP 请求、响应和网页内容24、26、31、32TCP ACK确认上面数据已收到这一阶段 真正的 HTTPS 访问发生在这里。里面是 GET、200 OK、HTML但被 TLS 加密Wireshark 只能显示 Application Data。1.4 和 HTTP 明文对照之前学过的 HTTP80 端口TCP 三次握手 ↓ 明文 HTTP GETWireshark 直接看到 ↓ 明文 HTTP 200 OK HTMLWireshark 直接看到 ↓ TCP 四次挥手现在的 HTTPS443 端口TCP 三次握手和 HTTP 一样还是 TCP ↓ TLS Client Hello / Server Hello / Certificate...多出来的 TLS 握手 ↓ TLS Application Data加密的 GET看不见 ↓ TLS Application Data加密的 200 OK HTML看不见 ↓ TCP 四次挥手多出来的就是 TLS 握手 全程加密。2. tcpdump常见命令1. 基础结构sudo tcpdump [选项] [过滤表达式]抓包一般要sudo。不写过滤表达式 抓所有流量噪音大初学建议加过滤。2. 最常用选项选项含义示例-i any指定网卡any为所有网卡tcpdump -i en0-w 文件.pcap保存到文件给 Wireshark-w ~/Desktop/out.pcap-r 文件.pcap读已有 pcap不抓新包tcpdump -r out.pcap-c 数字抓满 N 个包就停-c 100-n不把 IP 转成主机名输出更快、更干净-nn不把 IP、端口转成名字推荐常用打开已存在的 .pcap 包进行查看如 ping-gateway.pcap 。步骤 1终端中 只看 ICMPtcpdump -r ~/Desktop/ping-gateway.pcap -nn icmp你应该看到类似10.2.73.219 10.2.72.1: ICMP echo request 10.2.72.1 10.2.73.219: ICMP echo reply顺便看一下加 -nn 和不加 -nn 的区别。中间可能夹杂unreachable报错正常。步骤 2终端中 只看和网关有关的tcpdump -r ~/Desktop/ping-gateway.pcap -nn host 10.2.72.1只保留和10.2.72.1有关的包噪音少很多。# 出现类似如下结果 reading from PCAP-NG file /Users/liyijun/Desktop/ping-gateway.pcap 13:53:35.444034 IP 10.2.73.219 10.2.72.1: ICMP echo request, id 4782, seq 0, length 64 13:53:35.453132 IP 10.2.72.1 10.2.73.219: ICMP echo reply, id 4782, seq 0, length 64 13:53:36.449209 IP 10.2.73.219 10.2.72.1: ICMP echo request, id 4782, seq 1, length 64 13:53:36.454207 IP 10.2.72.1 10.2.73.219: ICMP echo reply, id 4782, seq 1, length 64 13:53:37.454194 IP 10.2.73.219 10.2.72.1: ICMP echo request, id 4782, seq 2, length 64 13:53:37.477599 IP 10.2.72.1 10.2.73.219: ICMP echo reply, id 4782, seq 2, length 64 13:53:38.456592 IP 10.2.73.219 10.2.72.1: ICMP echo request, id 4782, seq 3, length 64 13:53:38.468613 IP 10.2.72.1 10.2.73.219: ICMP echo reply, id 4782, seq 3, length 64在Wireshark中其实就是如下的过滤条件之前演示过很好理解icmp ip.addr 10.2.72.1 icmp ip.addr 10.2.72.1如果要捕捉指定端口在tcpdump里直接使用port 端口号就行。比如打开之前捕捉百度dns解析过程的文件进行演示tcpdump -r ~/Desktop/dns-test.pcap -nn port 53# 结果如下 reading from PCAP-NG file /Users/liyijun/Desktop/dns-test.pcap 15:34:16.634264 IP 10.2.73.219.57470 10.2.255.2.53: 8489 A? www.baidu.com. (31) 15:34:16.648031 IP 10.2.255.2.53 10.2.73.219.57470: 8489* 3/0/0 CNAME www.a.shifen.com., A 110.242.69.21, A 110.242.70.57 (138)但是在Wireshark里不能直接用port字段需要指定是tcp还是udpdns是udp所以要输入的过滤条件是udp.port 53若tcp也要那就在顶部同时过滤udp.port 53 || tcp.port 53-v/-vv/-vvv更详细输出终端直接看时用-A以 ASCII 显示包内容看明文 HTTP 等-X十六进制 ASCII比-A更全-s 0抓完整包默认可能截断生产环境建议加上-s 0是 tcpdump 的抓包长度选项意思是每个包都完整抓取不截断。-ssnaplen单个包最多抓多少字节0不限制抓整包常见用法sudo tcpdump -i any -nn -s 0 -w ~/Desktop/capture.pcap抓包存文件时习惯加上-s 0保证 pcap 里是完整包。读已有文件用-r时一般不需要再加-s 0。3. 常见抓包组合可直接复制抓所有包存文件sudo tcpdump -i any -w ~/Desktop/all.pcap只抓某种协议的包如 ICMPpingsudo tcpdump -i any icmp -w ~/Desktop/ping.pcap只抓 50 个包 -c 选项后面加数字sudo tcpdump -i any -c 50 -w ~/Desktop/test.pcap终端直接看不存文件如 ping sudo tcpdump -i any -nn icmp抓完整包 不解析名字sudo tcpdump -i any -nn -s 0 -w ~/Desktop/full.pcap4. 过滤表达式重点按主机和某 IP 有关的所有包源或目的sudo tcpdump -i any host 10.2.72.1只抓源是该 IPsudo tcpdump -i any src host 10.2.73.219只抓目的是该 IPsudo tcpdump -i any dst host 172.66.147.243按网段整个网段sudo tcpdump -i any net 10.2.73.0/24按端口端口 80HTTPsudo tcpdump -i any port 80端口 443HTTPSsudo tcpdump -i any port 443源端口 / 目的端口sudo tcpdump -i any src port 57872 sudo tcpdump -i any dst port 80按协议sudo tcpdump -i any tcp sudo tcpdump -i any udp sudo tcpdump -i any icmp组合与 / 或 / 非某 IP 的 TCPsudo tcpdump -i any host 172.66.147.243 and tcp80 或 443sudo tcpdump -i any port 80 or port 443排除某 IPsudo tcpdump -i any not host 127.0.0.1某 IP 的 HTTP端口80sudo tcpdump -i any host 172.12.32.78 and port 80TCP 标志进阶SYN 包握手第一步sudo tcpdump -i any tcp[tcpflags] tcp-syn ! 0# SYN 且非 ACK纯 SYNsudo tcpdump -i any tcp[tcpflags] tcp-syn ! 0 and tcp[tcpflags] tcp-ack 05. 读已有 pcap读文件并过滤tcpdump -r 文件路径/文件名.pcap port 80读文件只看前 20 个sudo tcpdump -r 文件路径/文件名.pcap -c 20读文件ASCII 显示 HTTPtcpdump -r ~/Desktop/tcp-http.pcap -A port 806. tcpdump 与 Wireshark 过滤对照目的tcpdumpWireshark某 IPhost 10.2.72.1ip.addr 10.2.72.1源 IPsrc host 10.2.73.219ip.src 10.2.73.219端口 80port 80tcp.port 80只要 TCPtcptcp只要 ICMPicmpicmp只要 DNSport 53dns3. Wireshark 常见显示过滤器显示过滤器只在已经抓好的 pcap 里筛选不改变抓包内容。语法错了会红色对了是绿色。1. 逻辑运算符符号含义示例或and并且tcp and port 80||或or或者port 80 or port 443!或not非not arp2. IP 相关源或目的包含该 IPip.addr 10.2.73.21源 IPip.src 10.2.73.21目的 IPip.des 10.2.34.56某网段部分版本支持ip.addr 10.2.73.0/243. 端口与协议过滤协议的话直接输入就行tcp # 所有 TCP udp # 所有 UDP icmp # 所有 ICMP dns # DNS http # HTTP明文 tls # TLS/HTTPS过滤端口需要指定协议tcp.port 80 # TCP 端口 80 tcp.port 443 # HTTPS tcp.srcport 57872 # 源端口 tcp.dstport 80 # 目的端口 udp.port 53 # DNS 端口4. TCP 标志握手 / 挥手 / 异常含 SYNtcp.flags.syn 1含 ACKtcp.flags.ack 1含 FIN挥手tcp.flags.fin 1RST连接被拒或重置tcp.flags.reset 1纯 SYN握手第 1 步tcp.flags.syn 1 tcp.flags.ack 0SYNACK握手第 2 步tcp.flags.syn 1 tcp.flags.ack 15. DNS下面的 qry专门指 query 部分 的字段只显示 查询域名里包含 baidu 的 DNS 包dns.qry.name contains baidu只显示 DNS 查询里域名完全等于www.example.com的包dns.qry.name www.example.com只要 querydns.flags.response 0只要 responsedns.flags.response 16. HTTP明文httphttp.request # 只要请求http.response # 只要响应只看请求方法为 GEThttp.request.method GETHost 头包含 example 的请求或响应http.host contains example只看 HTTP 响应状态码是 200 的包http.response.code 2004xx、5xx 错误http.response.code 4007. HTTPS / TLStlsClient Hello: tls.handshake.type 1Server Hellotls.handshake.type 2tcp.port 443 tls8. Wireshark 实用操作非过滤但常用操作作用右键包 → Follow → TCP Stream看一次 TCP 会话完整内容右键包 → Follow → HTTP Stream看 HTTP 请求响应全文Statistics → Conversations看哪些 IP/端口通信最多点击包 → Response in frame / Request in frame跳到配对的请求/响应4. 按场景选命令速查场景tcpdump 抓包Wireshark 查看ping 网关tcpdump -i any icmp -w ping.pcapicmp ip.addr 网关IPDNS 查询tcpdump -i any port 53 -w dns.pcapdnsHTTP 访问tcpdump -i any port 80 -w http.pcaptcp.port 80然后httpHTTPS 访问tcpdump -i any port 443 -w https.pcaptcp.port 443然后tls排查连不上tcpdump -i any host 目标IP -w fail.pcaptcp.flags.reset 1减少噪音抓包时就加host/port!ip.addr 127.0.0.1

相关新闻

5 分钟搞定 B站视频下载:BiliTools 跨平台下载工具新手速通

5 分钟搞定 B站视频下载:BiliTools 跨平台下载工具新手速通

5 分钟搞定 B站视频下载:BiliTools 跨平台下载工具新手速通 【免费下载链接】BiliTools 本项目已停止维护。 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 说到 B站视频下载,很多人的第一反应是:官方 App 不是能缓…

2026/10/18 19:14:56 阅读更多 →
快手与星竞威武达成战略合作,持续完善游戏直播与电竞内容生态

快手与星竞威武达成战略合作,持续完善游戏直播与电竞内容生态

8月14日,第二届快手夏日游音节现场,快手与星竞威武集团举行战略合作启动仪式。未来一年,双方将围绕直播生态、电竞内容和商业合作三个方向展开深入合作,共同探索主播长期运营、职业电竞内容建设及游戏生态商业合作的新空间。作为快…

2026/10/18 19:14:56 阅读更多 →
从零到第一张图只要5分钟:这份ComfyUI中文工作流合集,是AI绘画新手的“作弊码“

从零到第一张图只要5分钟:这份ComfyUI中文工作流合集,是AI绘画新手的“作弊码“

从零到第一张图只要5分钟:这份ComfyUI中文工作流合集,是AI绘画新手的"作弊码" 【免费下载链接】ComfyUI-Workflows-ZHO 我的 ComfyUI 工作流合集 | My ComfyUI workflows collection 项目地址: https://gitcode.com/GitHub_Trending/co/Comf…

2026/10/16 11:49:04 阅读更多 →

最新新闻

C#股票量化实战:掘金行情接口封装与板块数据接入

C#股票量化实战:掘金行情接口封装与板块数据接入

简介:面向C#股票量化开发者的实战资源包,以掘金量化接口为主线,讲解如何获取股票行情与同花顺版块数据,并融入量化交易策略。内容从量化交易的概念与数学模型出发,系统梳理了通过HTTP调用掘金接口获取实时价格、历史K线…

2026/10/18 19:14:15 阅读更多 →
亿图图示 EdrawMax 6.8 绿色便携版部署避坑指南

亿图图示 EdrawMax 6.8 绿色便携版部署避坑指南

简介:亿图图示EdrawMax 6.8中文绿色便携版面向需要快速绘制专业图表的办公人群、学生与设计爱好者,免安装、不写注册表,可直接在U盘或移动硬盘运行,解决多设备切换时无法随时使用图形设计工具的问题。压缩包为rar格式,…

2026/10/18 19:14:15 阅读更多 →
深度强化学习双目标动态感知路径规划:毕设源码拆解与实战

深度强化学习双目标动态感知路径规划:毕设源码拆解与实战

简介:基于深度强化学习的双目标动态感知路径规划毕业设计源码,以Python实现,主要面向计算机、人工智能、自动化、物联网等专业的在校生、教师或研发人员,适用于毕业设计、课程设计、项目演示及深度学习入门进阶。项目聚焦动态环境…

2026/10/18 19:14:15 阅读更多 →
Agent项目落地全流程:从Demo到生产的工程化实务

Agent项目落地全流程:从Demo到生产的工程化实务

做Agent项目这几个月,我最大的感受是:Demo和落地是两回事。会议室里跑通一个“会调用工具、能自动回答问题”的原型只需要一下午,但真要把它放到生产环境里面对真实流量、真实数据、真实用户的奇怪输入,问题一个接一个地冒出来。工…

2026/10/18 19:14:15 阅读更多 →
基于深度学习的机械振动信号故障诊断:从数据生成到模型部署

基于深度学习的机械振动信号故障诊断:从数据生成到模型部署

简介:这份资源面向机械故障诊断方向的学习者与工程实践者,提供一套基于深度学习的完整项目源码,帮助理解如何用Python将振动、温度等传感器数据转化为可用的故障识别模型。包内共88个文件,以45个py源码与43个pyc编译文件为主&…

2026/10/18 19:14:15 阅读更多 →
OpenClaw智能体全流程部署:从环境配置到多Agent自动化实战

OpenClaw智能体全流程部署:从环境配置到多Agent自动化实战

说实话,我早就受够了在不同AI工具之间来回切换、复制粘贴、手工串联任务的繁琐日子。直到我把一个开源智能体框架OpenClaw完整部署下来,从环境准备、角色配置、工具接入到多流程联动跑通,才发现原来AI智能体全流程操作并没有想象中那么玄乎&a…

2026/10/18 19:13:14 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →