常见的几种网络抓包及协议分析工具

本文详细介绍了网络抓包的几种常见方法,包括Wireshark在PC上的使用、路由器抓包功能、抓包网卡配合Omnipeek的应用,以及在iOS和Android设备上的真机抓包技术。重点讲解了网络协议分析和抓包工具的选择与配合使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见的几种网络抓包及协议分析工具

引言

网络工程师必备技能-抓取网络数据。

在本篇博客中,我们将集中记下几个问题进行探讨:

  • 如何抓取电脑本机发送/接收的网络数据?
  • 如何在主机 A 上抓取 主机 B 上的网络数据?
  • 如何使用第三方设备抓取抓取 主机A 与 主机B 的网络数据?

Wireshark

Wireshark 是免费的抓取数据包、分析数据包的工具,兼容 Windows、Linux、Mac等主流平台。

使用 wireshark 抓包需要的工具是:安装了 wireshark 的 PC。

wireshark 抓包的范围是:抓取安装了 wireshark 的 PC 本机的网卡上流经的数据包。

其中,网卡指的是 PC 上网使用的模块,常见的包括:以太网网卡、wifi 无线网卡,PC 分别使用它们用于连接以太网、wifi 无线网络。

linux 或在 windows 下分别可使用 ifconfig 命令或者 ipconfig /all命令查看当前 PC 上已经安装了哪些网卡。以 linxu 系统为例子,在 linux 输入 ifconfig命令:

$ ifconfig
enp2s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 40:89:84:3c:6b:60  txqueuelen 1000  (以太网)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (本地环回)
        RX packets 12251  bytes 1382881 (1.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12251  bytes 1382881 (1.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.102  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::2ffd:2ae9:e62a:a40b  prefixlen 64  scopeid 0x20<link>
        ether 1c:d0:5a:4b:7d:d2  txqueuelen 1000  (以太网)
        RX packets 398700  bytes 540655478 (540.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 149381  bytes 20219957 (20.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

上述命令显示该台 linux 主机有两个网卡:一个以太网网卡:enp2s0,一个无线网卡:wlp3s0。

windows 下可以打开 cmd 窗口,输入 ipconfig /all 查看本机的网卡情况:

在这里插入图片描述
在使用 wireshark 时,可以选中这查询到的本机网卡,抓取通过以太网网卡的数据或者通过 wifi 无线网卡交互的数据。
在这里插入图片描述
注意:打开 wireshark 软件时,可能需要打开管理员权限才能正确打开上述界面。linux 下打开 wireshark 软件时,使用 sudo wireshark,命令打开它;windows 下打开 wireshark 时,右键选择以管理员权限打开

一些 wireshark 使用的示例可参考 wireshark基本使用(如果你感兴趣,可以留言或者点赞,你的支持,就是我的动力奥)。

wireshark 通常只能抓取本机(通常是电脑)网卡的发送和接受的网络数据,不能抓取其他主机、其他网络设备如路由器的网络数据。当一些设备是简单的网络设备,如手环、手机时,这些设备无法安装 wireshark,此时便无法通过这种方法进行抓包分析。

带抓包功能的路由器

路由器是网络环境中转发数据的设备,现在的路由器不仅提供以太网网线连接的功能,也充当 wifi 连接热点,有时为了分析网络数据,定位网络问题,拥有一台带抓包功能的路由器实在是开发人员的福利。

一些路由器提供了 开发者选项的功能,如这款华为 P20 型号的路由器,通过网页登陆路由器后,可以看到它提供了如图 2-1 所示的系统设置功能,在该选项下,可以使用如图 2-2 所示的“开发者选项”功能,该功能可以用于抓取流经路由器的数据包。但是,目前考虑到一些数据安全问题,拥有该功能的路由器不多,但对于网络设备的开发者而言,拥有一台这样的路由器是在是方便很多了。
在这里插入图片描述

图 2-1

在这里插入图片描述

图 2-2

路由器抓包功能可以抓取大部分流经路由器的数据,这为在一台主机 A 上,抓取局域网内另一台主机B的网络数据提供了方法(因为A与B连接的是同一个路由器,A <–>路由器<–>B,启动抓包后,经过路由器的数据包被记录下来,A 可以查看记录的数据包,分析主机B 的网络情况 )。如图 2-3,在 A 主机上,登陆路由器的网页,并点击开始抓包,抓取一定时间后,点击结束抓包,稍等一段时间后将提示正在下载抓取的数据包文件。在示例中,该文件为 如图 2-3 右上角pktDump.cap文件,它可以通过 wireshark 软件打开,并进行分析。
在这里插入图片描述

图 2-3

如图,在 wireshark 的数据包过滤选项中输入主机 B 的网卡 mac 地址,可以在主机 A 上查看 主机 B 发送到路由器以及路由器转发数据到主机 B 的数据(即主机 B发送和接收的数据)。

在这里插入图片描述

抓包网卡

抓包网卡是一种特殊的网卡,通常用于作为网络嗅探、网络扫描。当通信双方既不是能安装类似 wireshark 抓包工具,也不是能提供抓包功能的路由器时。比如通信双方是两个 wifi 模组(没有屏幕、键盘、windows/linux 系统)时,我们就无法使用上述两种方法实现抓取 A 和 B 的数据包了。一种常用的方法是使用抓包网卡,并配合特殊的抓包软件 Omnipeek(全称 WildPackets Omnipeek,空中无线抓包,并提供网络故障诊断功能),抓取并分析 A 和 B 的数据包。

如图 3-1 所示,A、B、C 三个主机在进行无线通信,抓包网卡 Omnipeek 的作用类似于一个“雷达”,接收它们三者的通信流量。其会将接收的通信数据保存到一个文件内,该文件可以被 wireshark 等网络分析软件打开分析。
在这里插入图片描述

常见的 Omnipeek 抓包网卡形状如下,它们有的像 U 盘,有的像天线。感谢强大的互联网,在很多电商平台,搜索 抓包网卡,我们就能看到很多类似的设备:
在这里插入图片描述

同样的,搜索关键字OmniPeek,我们也能看到一些如何安装及使用 OmniPeek软件的教程。

如果感兴趣,后续我将提供两个典型的案例,简要说明如何使用这种方法进行抓包(点赞更新快)。

其他抓包软件或者工具

就如同使用电工师傅测量电路的电流、电压一样,网络开发维护人员使用上述网络分析工具测量网络情况。除上述几种网络抓包分析工具外,常见的网络分析工具还有 Wirelessmon、Inssider、ixia chariot和 iperf 等工具,读者可自行搜索并了解它们。



一、为什么要抓包

  1. 定位网络接口问题
  2. 分析其他App数据接口
  3. 学习网络协议,使用抓包工具分析网络数据更直观

大部分场合都可以通过程序调试来定位问题,但有些场景使用抓包来定位接口问题更准确、更方便,如以下场景:

  • 你发送数据给后台,但后台没有收到,可以对接口进行抓包分析,看是后台处理有问题,还是App没有将数据发出去,或是App发送数据格式有误;
  • 你和后台接口联调测通,但业务数据对不上,你认为是后台问题,后台认为是你发的问题,可以抓包确认问题所在;
  • 线上App出现bug需要定位,但你没在公司,没有代码可调试,可直接抓包分析;
  • App页面渲染缓慢,抓包看下接口响应时长,是不是后台出现性能问题;
  • 需要测试弱网环境下App的体验?抓包工具可设置流量限制,可设置接口堵塞;
  • 想改变某接口的响应报文?想多次重发某一请求,但App业务流程有限制?可以试试抓包工具提供的功能。

二、网络抓包原理

要实现对App的网络数据抓包,需要监控App与服务器交互之间的网络节点,监控其中任意一个网络节点(网卡),获取所有经过网卡中的数据,对这些数据按照网络协议进行解析,这就是抓包的基本原理。

但是中间网络节点,不受我们控制,所以基本无法实现抓包的,只能在客户端和服务端进行抓包。

通常我们监控本地网卡数据,如下图:

img

手机、本地网络属于客户端侧的抓包,接入设备、服务器属于后台侧的抓包,两者没有什么不同。

本地网络指的是WIFI的路由,如果直接抓路由器的包还是比较麻烦的,因此我们会在手机和本地路由之间加一层代理服务,这样只要抓代理服务的网络数据即可:

img

虽然在手机侧也可实现抓包,但和本地路由一样,抓包比较麻烦,如果不是没有办法,尽量还是不在手机侧抓包。但是有一种情况必须在手机端抓包,那就是在4G网络情况下:

img

除了通过代理,直接利用网卡驱动捕获所有流经网卡的数据:

img

这样的好处是不用设置代理,但它的缺点也很明显,只能对数据进行分析,无法进一步的控制。

例如无法解析https报文(除非有https整数);无法篡改报文数据等。

三、网络协议

抓包实际上是分析网络协议的一种过程,尽管繁琐的细节劳动都让抓包工具做了,但我们还是需要了解基础的网络协议,好帮助我们更好地分析问题。

首先需要了解下经典的OSI七层网络模型,以及每层的作用,其次对TCP、HTTP协议简单了解。

img

注:http,https,tcp,udp,ip等着重了解。

HTTPS与HTTP有什么不同?

HTTPS是基于HTTP协议的一种改进,在TCP之上的会话层增加安全处理。对于应用层来说,HTTPS和HTTP没有什么不同,也就是说,HTTPS是保证网络传输的安全性,对业务数据无侵入。

简化理解大概是这个样子:

img

SSL和TLS是保证安全传输的协议,包括证书认证、加解密和数字签名。

项目中HTTPS的链路:

img

因此,客户端与后台,编写网络接口时,不需要关心SSL或TLS,按照HTTP协议处理即可。

既然HTTPS在网络传输是经过加密的,那么抓包抓到的数据就是密文,不经过解密是无法看到报文的。针对这个问题,如上图WIFI环境下设置代理的方式可以解决,具体思路是:

img

所以整个网络链路依然是HTTPS在传输,但代理服务自己可以获取到明文数据。

四、常用抓包工具

比较常用的抓包工具大概有4个,主要用作互补,配合使用基本所有平台、所有抓包需求都能满足:

图片

  • fidder windows平台最受欢迎抓包工具,免费、易用
  • charles Mac平台下最佳抓包工具,易于使用,收费软件,可一直试用
  • wireShark 老牌抓包工具,跨平台,功能齐全、强大
  • tcpdump 命令行程序,适用于手机系统和后台系统

需要说明的是,tcpdump可将数据保存成文件,直接用wireShark打开分析,针对后台或手机抓包使用起来十分方便。

fidder、charles属于代理类的抓包工具

wireShark、tcpdump属于网卡抓包工具

几个工具间的使用关系:

  1. 如果是windows平台,使用fidder
  2. 如果是Mac平台,使用charles
  3. 如果是linux平台(手机或后台),使用tcpdump
  4. 如果抓非HTTP(S)协议的包,如TCP包,则使用wireShark

tcpdump命令

抓取所有网络接口的数据,并保存到当前目录的capture.pcap文件中:

tcpdump -p -vv -s 0 -i any -w capture.pcap

  • -p 关闭混合模式
  • -vv 产生更详细的输出
  • -s 0 抓去完整的数据包
  • -i any 监听任意网络接口
  • -w 将抓去的包保存文件

混合模式,即可以监听所有经过该网卡的数据(关闭混合模式可以过滤掉一些垃圾数据)。

五、真机抓包

为什么要真机抓包?必定是没有办法设置代理服务了,如4G网络情况下直接和移动基站链接,没法设置代理服务。凡是非4G网络状态下,都不建议真机抓包。

iOS真机抓包

iOS 5后,apple引入了RVI remote virtual interface的特性,它只需要将iOS设备使用USB数据线连接到mac上,然后使用rvictl工具以iOS设备的UDID为参数在Mac中建立一个虚拟网络接口rvi,就可以在mac设备上使用tcpdump,wireshark等工具对创建的接口进行抓包分析。

具体步骤:

  1. 获得iOS设备的UDID
  2. 使用USB数据线将iOS设备和MAC连接
  3. 创建RVI接口 rvictl -s
  4. 使用wireShark抓取rvi0虚拟接口
  5. 移除RVI接口 rvictl -x

真机抓包,意味着无法获取HTTPS的明文数据,因此真机抓包的意义不大,只能用户分析网络接口连通性、正确性,无法分析业务报文是否正确。

android真机抓包

android是linux系统,和后台一样可以使用tcpdump命令来抓包,但是需要root权限,因为一般手机系统不带有抓包命令tcpdump,需要自行安装。

安装tcpdump:

  1. 下载android版本的tcpdump
  2. adb shell
  3. su #切换root用户
  4. chmod 777 /data/local #修改目标路径权限,这里是/data/local
  5. adb push tcpdump /data/local #将tcpdump拷贝到目标路径

若tcpdump命令不能执行,需要赋予该文件chmod +x tcpdump

使用tcpdump:

  1. adb shell
  2. su
  3. /data/local/tcpdump -p -vv -s 0 -i any -w /data/local/capture.pcapng

这就已经进入抓包状态,手机所有的网络请求都会被捕获,并保存到capture文件中。

导出capture文件:

  1. adb pull/data/local/capture.pcapng.#导出到当前目录
  2. 使用wireShark打开capture文件,进行浏览分析

若进行push及pull操作不成功,可能是因为不让直接操作/data/local等系统目录,可以先pull到sd卡,在将文件从sd卡拷贝到/data/local,反之依然。

HTTP/HTTPS协议分析工具(Http Analyzer)7.5.3.455 汉化特别版 HTTP Analyzer 分两部份,可以集成在IE浏览器中抓包,也可以单独的安装应用程序的包,非常实用。 压缩包内有注册机,大家根据需要选择相应的产品获取注册码。 这是一款实时分析 HTTP/HTTPS 数据流的工具。它可以实时捕捉HTTP/HTTPS 协议数据,可以显示许多信息(包括:文件头、内容、Cookie、查询字符窜、提交的数据、重定向的url地址),可以提供缓冲区信息、清理对话内容、HTTP状态信息和其他过滤选项。同时还是一个非常有用的分析、调试和诊断的开发工具。 Http Analyzer是一个HTTP/HTTPS协议分析工具,用此工具可以非常快速的分析出绝大多数视频博客的视频地址。尽管有一些网站提供了诸如 YouTube ,Google Video 等视频网站的php解码程序,不过那些php程序并不是通用的。当博客视频网站对视频地址加密算法做些变动时,php程序又需要大规模改动才能对应解码。 使用类似Http Analyzer协议分析工具就不同了,所有的博客视频都是http方式提供的,最终的http路径是肯定要明文出现的,所以获取此路径是可能的。 HTTP/HTTPS协议分析工具(Http Analyzer)使用方法 第一步:设置好Http Analyzer的过滤器选项大部分的视频博客的Type都是 video/flv ,video/x-flv ,application/octet-stream 极少部分采用application/x-shockwave-flash 或干脆不表明类型。http的返回结果肯定是2XX,所以在Result 要设置成<300。返回的Size最好采用倒序排列,视频博客的大小一般比较大,倒序容易发现。 第二步:运行Http Analyzer:(点击工具栏第一个绿色箭头图标)打开YouTube 或6rooms视频博客网站。回到Http Analyzer窗口,看你需要的视频地址是不是老老实实的呆在里面呢?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Archie_java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值