<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>抓包工具 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/tags/%E6%8A%93%E5%8C%85%E5%B7%A5%E5%85%B7/</link><description>Recent content in 抓包工具 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 04 Aug 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/tags/%E6%8A%93%E5%8C%85%E5%B7%A5%E5%85%B7/index.xml" rel="self" type="application/rss+xml"/><item><title>抓包工具</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/network/network-020/</link><pubDate>Mon, 28 Jul 2025 00:00:00 +0800</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/network/network-020/</guid><description>&lt;h2 id="抓包的原理"&gt;抓包的原理&lt;/h2&gt;
&lt;h3 id="什么是抓包"&gt;什么是抓包？&lt;/h3&gt;
&lt;p&gt;抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作，通过抓包可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分析网络问题&lt;/li&gt;
&lt;li&gt;业务分析&lt;/li&gt;
&lt;li&gt;分析网络信息流通量&lt;/li&gt;
&lt;li&gt;网络大数据金融风险控制&lt;/li&gt;
&lt;li&gt;探测企图入侵网络的攻击&lt;/li&gt;
&lt;li&gt;探测由内部和外部的用户滥用网络资源&lt;/li&gt;
&lt;li&gt;探测网络入侵后的影响&lt;/li&gt;
&lt;li&gt;监测链接互联网宽频流量&lt;/li&gt;
&lt;li&gt;监测网络使用流量（包括内部用户，外部用户和系统）&lt;/li&gt;
&lt;li&gt;监测互联网和用户电脑的安全状态&lt;/li&gt;
&lt;li&gt;渗透与欺骗&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;回顾下计算机网络知识，数据在网络上是以很小的&lt;code&gt;帧&lt;/code&gt;的单位传输的，帧通过特定的称为网络驱动程序的程序进行成型，然后通过网卡发送到网线上，通过网线到达目的机器，在目的机器的一端执行相反的过程。接收端机器的以太网捕获到这些帧，并告诉操作系统帧已到达，然后对其进行存储。在这个传输和接收的过程，就可以使用抓包工具（Sniffers）进行抓包，作为前端开发者，通常是抓取应用层的 HTTP/HTTPS 的包。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://amatsuzero.github.io/LastStand/posts/frontend/network/network-020/image-01.webp"&gt;&lt;/p&gt;
&lt;h3 id="httphttps-抓包原理"&gt;HTTP/HTTPS 抓包原理&lt;/h3&gt;
&lt;p&gt;HTTP/HTTPS 是应用层使用的通信协议，常见的应用层体系结构是客户端-服务器体系。&lt;/p&gt;
&lt;p&gt;对运行在不同端系统上的客户端程序和服务端程序是如何互相通信的么？实际上，在操作系统上的术语中，进行通信的实际上是&lt;code&gt;进程&lt;/code&gt;而不是程序，一个进程可以被认为是运行在端系统中的一个程序。&lt;/p&gt;
&lt;p&gt;在 web 应用程序中，一个客户浏览器进程与一台服务器进程进行会话交换报文。&lt;/p&gt;
&lt;p&gt;浏览器进程需要知道接收进程的主机地址，以及定义在目的主机中的接收进程的标识符，也就是目的端口。&lt;/p&gt;
&lt;p&gt;多数应用程序由通信进程对组成，每对中的两个进程互相发送报文。进程通过一个称为套接字的软件接口向网络发送报文和从网络接收报文。&lt;/p&gt;
&lt;p&gt;进程可以类比一座房子，而它的套接字可以是它的门，&lt;code&gt;套接字&lt;/code&gt;是应用层与运输层之间的端口。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://amatsuzero.github.io/LastStand/posts/frontend/network/network-020/image-02.webp"&gt;&lt;/p&gt;
&lt;p&gt;知道了两个进程的通信流程，我们要怎么抓包呢？举一个生活中的例子，小明暗恋小雯，于是他写了一封情书，但他有点害羞，找了小雯的好朋友小花帮忙传递情书。这个时候，小花可以负责小雯与小明之间的情书传递，作为中间人，她可以偷偷查看他们的情书内容。&lt;/p&gt;
&lt;p&gt;思路就是设置一个中间人进程负责抓包，每次目标进程之间的会话都先与中间人进程通信，再进行转发。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://amatsuzero.github.io/LastStand/posts/frontend/network/network-020/image-03.webp"&gt;&lt;/p&gt;
&lt;h4 id="http-抓包原理"&gt;HTTP 抓包原理&lt;/h4&gt;
&lt;p&gt;在 http 标准中，没有对通信端身份验证的标准。对于服务器来说，它接收的 HTTP 请求报文只要格式符合规范，就发送响应报文。&lt;/p&gt;
&lt;p&gt;对于客户端来说也是如此，它无法校验服务器的身份，比如它连接的 &lt;code&gt;http://www.jecyu.com&lt;/code&gt; 的主机，但由于中间节点的存在，最终连接的可能是 &lt;code&gt;http://www.jerry.com&lt;/code&gt; 的主机。&lt;/p&gt;
&lt;p&gt;因此，对于 HTTP 抓包，无需做过多的处理，只需要让中间人负责转发客户端和服务端的数据包。&lt;/p&gt;
&lt;h4 id="https-抓包原理"&gt;HTTPS 抓包原理&lt;/h4&gt;
&lt;p&gt;HTTP 是明文传输，容易受到中间人攻击，不安全。&lt;/p&gt;
&lt;p&gt;HTTPS 语义仍然是 HTTP，只不过是在 HTTP 协议栈中 http 与 tcp 之间插入安全层 &lt;code&gt;SSL/TSL&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;安全层采用&lt;strong&gt;对称加密的方式加密传输数据和非对称加密的方式来传输对称密钥&lt;/strong&gt;，解决 http 数据没有加密、无法验证身份、数据容易纂改三个核心问题。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;HTTP + 加密 + 认证 + 完整性保护 = HTTPS&lt;/p&gt;</description></item></channel></rss>