当前位置: 首页 > news >正文

ARP协议工作原理析解 (详细抓包分析过程)

目录

1. ARP 协议

2. 工作原理

3. ARP 协议报文格式

4. ARP 缓存的查看和修改

5. tcpdump 抓包分析 ARP 协议工作原理

5.1 搭建 2 台虚拟机

5.2 在主机 192.168.0.155 打开一个shell命令行开启抓包监听

5.3 在主机 192.168.0.155 打开另一个shell命令行 telnet 192.168.0.154

5.4 在主机 192.168.0.155 抓包监听的窗口可即可抓到头两帧数据即是 ARP 请求 和 ARP 应答包如下

5.4.1 ARP 请求帧分析

(1)站在数据链路层对以太网帧进行数据分析

(2)站在网络层对ARP请求包进行数据分析

5.4.2 ARP 应答帧分析

(1)站在数据链路层对以太网帧进行数据分析

(2)站在网络层对ARP请求包进行数据分析


1. ARP 协议

        ARP(Address Resolution Protocol,地址解析协议)协议属于网络层协议,它实现了将目的主机的 IP 地址转换为 MAC 地址(物理地址)。

2. 工作原理

        主机向自己所在的网络(比如家用路由器)广播一个 ARP 请求(request),该请求包含目的主机的IP地址,此网络上的其它主机都将收到这个请求,但只有被请求的目的主机会回应一个 arp 应答(reply)。

3. ARP 协议报文格式

字段字节数说明
硬件类型2表示物理地址的类型,对于以太网 MAC 地址,值为:0x0001
协议类型2发送方要映射的协议地址类型,对于 IP 地址,值为:0x0800
硬件地址长度1以太网 MAC 地址,占用 6 个字节,所以值为:0x06
协议地址长度1IPv4,占用 4 字节,所以值为:0x04
操作24种操作类型:ARP 请求,值为:0x0001;ARP 应答,值为:0x0002;RARP 请求,值为:0x0003;RARP 应答,值为:0x0004
源MAC地址6发送方的 MAC 地址
源IP地址4发送方的 IP 地址
目的MAC地址6接收方的 MAC 地址,对于 ARP 请求,不知道接收方的 MAC 地址,该值用 0 填充,即 0x0000 0000 0000
目的IP地址4接收方的 IP 地址

        上面表格的说明不能完全搞懂也不要紧,往下看,会有抓取 ARP 请求和 ARP 应答的帧数据,我们根据帧数据分析来理解,对于 ARP 请求协议的理解就容易多了。

4. ARP 缓存的查看和修改

        在抓取 ARP 请求、应答包进行数据分析前,还有要讲明白 ARP 缓存。因为假如 ARP 请求的目的 IP 地址的 MAC 地址在本主机已经有缓存的话,就可能不会向自己所在的网络广播一个 ARP 请求(request),从而抓取不到 ARP 请求、应答包。

        ARP 维护了一个缓存,包含了经常访问或最近访问的主机 IP 地址到 MAC 地址的映射,这样做的好处是避免了重复的 ARP 请求,从而提高发送数据包的速度。

        linux 操作系统下可以使用 arp 命令来查看和修改 arp 缓存。

例如:

arp -a        // 查看 arp 缓存信息

从上图可知:

网关 192.168.0.1 映射的 MAC 地址:3c:6a:48:e2:d5:67

主机 192.168.0.154 映射的 MAC 地址:00:0c:29:ba:f0:0d

主机 192.168.0.101 映射的 MAC 地址:b0:a4:60:28:96:f5

ens33 是网卡名

arp -d 192.168.0.154        // 删除目的主机 192.168.0.154 的缓存信息

5. tcpdump 抓包分析 ARP 协议工作原理

        tcpdump 是一个运行在命令行下的网络抓包工具,给使用者提供了大量的选项,用以过滤数据包或定制格式输出。

5.1 搭建 2 台虚拟机

 环境搭建链接:搭建多台能够互相 telnet 的 centos 虚拟机-CSDN博客

主机 192.168.0.154 的 MAC 地址为:00:0c:29:ba:f0:0d,网卡名为:ens33

主机 192.168.0.155 的 MAC 地址为:00:0c:29:83:72:68,网卡名为:ens33

5.2 在主机 192.168.0.155 打开一个shell命令行开启抓包监听

tcpdump -i ens33 -en -x '(dst 192.168.0.154 and src 192.168.0.155) or (dst 192.168.0.155 and src 192.168.0.154)'

-i: 是 interface 的意思,指定要监听的网卡接口。"-i any"表示抓取所有网卡接口的数据包。

ens33:网卡接口名

-e: 是 ethernet (以太网) 的意思,显示以太网帧头部信息。

-n: 是 number 的意思,显示 IP 地址表示主机,而不是主机名;显示数字表示端口号,而不是服务名称。

-x: 是 hex 的意思,以十六进制显示数据包的内容,但不显示包中的以太网帧头部信息

'(dst 192.168.0.154 and src 192.168.0.155) or (dst 192.168.0.155 and src 192.168.0.154)':抓取目的IP地址是 192.168.0.154 并且 源IP地址是 192.168.0.155 或者 目的IP地址是 192.168.0.155 并且源IP地址是 192.168.0.154 的数据包

5.3 在主机 192.168.0.155 打开另一个shell命令行 telnet 192.168.0.154

telnet 192.168.0.154

5.4 在主机 192.168.0.155 抓包监听的窗口抓到头两帧数据即是 ARP 请求 和 ARP 应答包如下

5.4.1 ARP 请求帧分析
01:53:21.517518 00:0c:29:83:72:68 > Broadcast, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.154 tell 192.168.0.155, length 280x0000:  0001 0800 0604 0001 000c 2983 7268 c0a80x0010:  009b 0000 0000 0000 c0a8 009a

01:53:21.517518:抓包时的时间戳

(1)站在数据链路层对以太网帧进行数据分析

说明:对于以太网帧来说,携带的数据报字节数范围:46 ~ 1500字节。所以对于ARP数据报,前28字节是ARP协议报文,还需填充18字节(PAD,填充),才能组成最低46字节的数据报,填充的每个字节数据都为:0x00

00:0c:29:83:72:68 > Broadcast, ethertype ARP (0x0806), length 42

00:0c:29:83:72:68 > Broadcast: MAC地址为 00:0c:29:83:72:68 的主机发送给 MAC地址为 Broadcast 主机的帧,00:0c:29:83:72:68:主机 192.168.0.155 的MAC地址;Broadcast:表示这是一个网络广播帧,即向自己所在的网络广播,此网络上的其它主机都将收到这个包

ethertype ARP (0x0806):以太网帧类型,2个字节,ARP请求的值为:0x0806

length 42: 表示以太网帧的长度为 42 字节,实际上是 64 字节,tcpdump没有统计ARP请求数据报中填充的18字节(PAD)和以太网帧尾部4字节的CRC字段。42字节的组成:以太网头部14字节(目的MAC地址 6 字节 + 源MAC地址 6 字节 + 帧类型 2字节)+ ARP 请求协议报文28字节

(2)站在网络层对ARP请求包进行数据分析

Request who-has 192.168.0.154 tell 192.168.0.155, length 28

Request: 表示这是一个 ARP 请求包

who-has 192.168.0.154 tell 192.168.0.155: 请求 IP 地址 192.168.0.154 的主机告诉IP地址 192.168.0.155 的主机

length 28: 表示ARP请求在网络层是 28 字节(也就是上面说的ARP 协议报文格式的28字节),这 28 个字节数据如下:

        0x0000:  0001 0800 0604 0001 000c 2983 7268 c0a8

        0x0010:  009b 0000 0000 0000 c0a8 009a

现在我们用 ARP 请求数据包与ARP协议报文进行对号入座分析:

0x0001: 对应的是硬件类型的2字节,表示物理地址的类型,对于以太网 MAC 地址,值为:0x0001

0x0800: 对应的是协议类型的2字节,表示发送方要映射的协议地址类型,对于 IP 地址,值为:0x0800

0x0604: 高8位对应的是硬件地址长度1字节,以太网 MAC 地址,占用 6 个字节,所以值为:0x06

              低8位对应的是协议地址长度1字节,IPv4,占用 4 字节,所以值为:0x04

0x0001: 对应的是操作2字节,4种操作类型:ARP 请求,值为:0x0001;ARP 应答,值为:0x0002;RARP 请求,值为:0x0003;RARP 应答,值为:0x0004。我们这个是ARP请求包,所以,值为:0x0001

0x000c 2983 7268: 对应的是源MAC地址6字节,即发送方MAC地址,我们的发送方是主机 192.168.0.155,它的MAC地址就是:00:0c:29:83:72:68

0xc0a8 009b:对应的是源IP地址4字节,即发送方的IP地址,我们发送方是主机 192.168.0.155,点分十进制转换成点分十六进制表示就是:0xc0.a8.0.9b

0x0000 0000 0000: 对应的是目的MAC地址6字节,即接收方MAC地址,我们的接收方是主机 192.168.0.154,在 ARP请求中,不知道接收方的 MAC 地址,该值用 0 填充,即 0x0000 0000 0000

0xc0a8 009a: 对应的是目的IP地址4字节,即接收方IP地址,我们的接收方是主机 192.168.0.154,点分十进制转换成点分十六进制表示就是:0xc0.a8.0.9a 

至此,ARP 请求数据包与ARP协议报文进行对号入座都一一对应上了

5.4.2 ARP 应答帧分析
01:53:21.517737 00:0c:29:ba:f0:0d > 00:0c:29:83:72:68, ethertype ARP (0x0806), length 60: Reply 192.168.0.154 is-at 00:0c:29:ba:f0:0d, length 460x0000:  0001 0800 0604 0002 000c 29ba f00d c0a80x0010:  009a 000c 2983 7268 c0a8 009b 0000 00000x0020:  0000 0000 0000 0000 0000 0000 0000

01:53:21.517737:抓包时的时间戳

(1)站在数据链路层对以太网帧进行数据分析

00:0c:29:ba:f0:0d > 00:0c:29:83:72:68, ethertype ARP (0x0806), length 60

00:0c:29:ba:f0:0d > 00:0c:29:83:72:68: MAC地址为 00:0c:29:ba:f0:0d 的主机发送给 MAC地址为 00:0c:29:83:72:68 主机的帧,00:0c:29:ba:f0:0d:以太网源MAC地址(即主机 192.168.0.154 的MAC地址);00:0c:29:83:72:68:以太网目的MAC地址(即主机 192.168.0.155 的MAC地址)

ethertype ARP (0x0806):以太网帧类型,2个字节,ARP应答的值为:0x0806

length 60: 表示以太网帧的长度为 60 字节,实际上是 64 字节,tcpdump没有统计以太网帧尾部4字节的CRC字段。60字节的组成:以太网头部14字节(目的MAC地址 6 字节 + 源MAC地址 6 字节 + 帧类型 2字节)+ ARP 请求协议报文28字节+18字节PAD

(2)站在网络层对ARP请求包进行数据分析

Reply 192.168.0.154 is-at 00:0c:29:ba:f0:0d, length 46

Reply: 表示这是一个 ARP 应答包

192.168.0.154 is-at 00:0c:29:ba:f0:0d: IP 地址 192.168.0.154 的MAC地址为:00:0c:29:ba:f0:0d

length 46: 表示ARP应答分用到网络层有 46 字节(也就是上面说的ARP 协议报文格式的28字节+ 18字节PAD),这 46 个字节数据如下:

        0x0000:  0001 0800 0604 0002 000c 29ba f00d c0a8

        0x0010:  009a 000c 2983 7268 c0a8 009b 0000 0000

        0x0020:  0000 0000 0000 0000 0000 0000 0000

现在我们用 ARP 应答数据包与ARP协议报文进行对号入座分析:

0x0001: 对应的是硬件类型的2字节,表示物理地址的类型,对于以太网 MAC 地址,值为:0x0001

0x0800: 对应的是协议类型的2字节,表示发送方要映射的协议地址类型,对于 IP 地址,值为:0x0800

0x0604: 高8位对应的是硬件地址长度1字节,以太网 MAC 地址,占用 6 个字节,所以值为:0x06

              低8位对应的是协议地址长度1字节,IPv4,占用 4 字节,所以值为:0x04

0x0002: 对应的是操作2字节,4种操作类型:ARP 请求,值为:0x0001;ARP 应答,值为:0x0002;RARP 请求,值为:0x0003;RARP 应答,值为:0x0004。我们这个是ARP请求包,所以,值为:0x0002

0x000c 29ba f00d: 对应的是源MAC地址6字节,即发送方MAC地址,应答数据报的发送方是主机 192.168.0.154,它的MAC地址就是:00:0c:29:ba:f0:0d

0xc0a8 009a:对应的是源IP地址4字节,即发送方的IP地址,应答数据报的发送方是主机 192.168.0.154,点分十进制转换成点分十六进制表示就是:0xc0.a8.0.9a

0x000c 2983 7268: 对应的是目的MAC地址6字节,即接收方MAC地址,我们的接收方是主机 192.168.0.155,它的MAC地址就是:00:0c:29:83:72:68

0xc0a8 009b: 对应的是目的IP地址4字节,即接收方IP地址,我们的接收方是主机 192.168.0.155,点分十进制转换成点分十六进制表示就是:0xc0.a8.0.9b 

0x0000 0000 0000 0000 0000 0000 0000 0000 0000: 18字节PAD

至此,ARP 应答数据包与ARP协议报文进行对号入座都一一对应上了,本文也到了跟大家 say goodbye 的时候了

相关文章:

ARP协议工作原理析解 (详细抓包分析过程)

目录 1. ARP 协议 2. 工作原理 3. ARP 协议报文格式 4. ARP 缓存的查看和修改 5. tcpdump 抓包分析 ARP 协议工作原理 5.1 搭建 2 台虚拟机 5.2 在主机 192.168.0.155 打开一个shell命令行开启抓包监听 5.3 在主机 192.168.0.155 打开另一个shell命令行 telnet 192.168.…...

axure动态面板

最近转管理岗了,作为项目负责人,需要常常与客户交流沟通,这时候画原型的能力就是不可或缺的本领之一了,关于axure可能很多it行业者都不是很陌生,简单的功能呢大家就自行去摸索,我们这次从动态面板开始讲起。…...

[论文笔记]Making Large Language Models A Better Foundation For Dense Retrieval

引言 今天带来北京智源研究院(BAAI)团队带来的一篇关于如何微调LLM变成密集检索器的论文笔记——Making Large Language Models A Better Foundation For Dense Retrieval。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们&quo…...

Linux平台屏幕|摄像头采集并实现RTMP推送两种技术方案探究

技术背景 随着国产化操作系统的推进,市场对国产化操作系统下的生态构建,需求越来越迫切,特别是音视频这块,今天我们讨论的是如何在linux平台实现屏幕|摄像头采集,并推送至RTMP服务。 我们知道,Linux平台&…...

梧桐数据库|中秋节活动·抽奖领取大闸蟹

有话说 众所周不知,我的工作就是做一个国产的数据库产品—中国移动梧桐数据库(简称WuTongDB)。 近期我们举办了一次小活动,来提升梧桐数据库的搜索量和知名度,欢迎大家来参加,免费抽奖领取大闸蟹哦~~~ 具…...

Python怎么发送邮件:基础步骤与详细教程?

Python怎么发送邮件带附件?怎么使用Python发送邮件? 无论是工作中的通知、报告,还是生活中的问候、邀请,电子邮件都扮演着不可或缺的角色。那么,Python怎么发送邮件呢?AokSend将详细介绍Python发送邮件的基…...

[译] 大模型推理的极限:理论分析、数学建模与 CPU/GPU 实测(2024)

译者序 本文翻译自 2024 年的一篇文章: LLM inference speed of light, 分析了大模型推理的速度瓶颈及量化评估方式,并给出了一些实测数据(我们在国产模型上的实测结果也大体吻合), 对理解大模型推理内部工…...

vue3 响应式 API:readonly() 与 shallowReadonly()

readonly() readonly()是一个用于创建只读代理对象的函数。它接受一个对象 (不论是响应式还是普通的) 或是一个 ref&#xff0c;返回一个原值的只读代理。 类型 function readonly<T extends object>(target: T ): DeepReadonly<UnwrapNestedRefs<T>>以下…...

迁移学习与知识蒸馏对比

应用场景不同 迁移学习&#xff1a;通常用于不同但相关的任务之间的知识迁移。特别是当目标任务的数据量不足时&#xff0c;可以从一个已经在大规模数据上训练好的模型中获取有用的特征或参数。典型场景包括计算机视觉任务&#xff0c;比如你在ImageNet上训练了一个ResNet&…...

【Java-反射】

什么是反射&#xff1f; JAVA反射机制是在运行状态中&#xff0c;创建任意一个类&#xff0c;能获取这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性&#xff1b;这种动态获取的信息以及动态调用对象的方法的功能称为java语言…...

移动UI设计要求越来越高,最为设计师应如何迎头赶上

一、引言 在当今数字化高速发展的时代&#xff0c;移动设备已经成为人们生活中不可或缺的一部分。随着科技的不断进步和用户需求的日益增长&#xff0c;移动 UI 设计的要求也越来越高。作为移动 UI 设计师&#xff0c;我们面临着巨大的挑战&#xff0c;需要不断提升自己的能力…...

大数据-121 - Flink Time Watermark 详解 附带示例详解

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

国行 iPhone 15 Pro 开启苹果 Apple Intelligence 教程

一、前言苹果在 iOS 18.1 测试版上正式开启了 Apple Intelligence 的内测&#xff0c;但国行设备因政策原因不支持&#xff0c;且国行设备在硬件上被锁定。不过&#xff0c;我们可以通过一些方法来破解国行 iPhone 15 Pro&#xff0c;使其能够开启 Apple Intelligence。 以下是…...

conda、anaconda、pip、torch、pytorch、tensorflow到底是什么东西?(转载自本人的知乎回答)

转载自本人的知乎回答&#xff08;截止2024年9月&#xff0c;1700赞同&#xff0c;2400收藏&#xff09; https://www.zhihu.com/question/566592612/answer/3063465880 如果你是一个大四的CS准研究生回去补基础课&#xff0c;假如是科班CS甚至科班EE的话那你基础也太差了。你…...

数据库系列之GaussDB数据库中逻辑对象关系简析

初次接触openGauss或GaussDB数据库的逻辑对象&#xff0c;被其中的表空间、数据库、schema和用户之间的关系&#xff0c;以及授权管理困惑住了&#xff0c;与熟悉的MySQL数据库的逻辑对象又有明显的不同。本文旨在简要梳理下GaussDB数据库逻辑对象之间的关系&#xff0c;以加深…...

如何进行不同数据库的集群操作?--从部署谈起,今天来看MySQL和NoSql数据库Redis的集群

篇幅较长&#xff0c;主要分为mysql和Redis两部分。找想要的部分可见目录食用。。 目录 什么是集群&#xff1f;为什么要集群&#xff1f; 1.1 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 1.2 为什么还要用 NoSQL 数据库呢&#xff1f; ----------------…...

第 6 章图像聚类

本章将介绍几种聚类方法&#xff0c;并展示如何利用它们对图像进行聚类&#xff0c;从而寻找相似的图像组。聚类可以用于识别、划分图像数据集&#xff0c;组织与导航。此外&#xff0c;我们还会对聚类后的图像进行相似性可视化。 6.1 K-means聚类 K-means 是一种将输入数据划…...

HC-SR501人体红外传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 body_hw.h文件 body_hw.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 HC-SR501人体红外模块是基于红外线技术的自动控制模块&#xff0c;采用德国原装进口LHI77…...

关于武汉芯景科技有限公司的IIC电平转换芯片XJ9517开发指南(兼容PCF9517)

一、芯片引脚介绍 1.芯片引脚 2.引脚描述 二、系统结构图 三、功能描述 1.电平转换 2.芯片使能/失能 EN 引脚为高电平有效&#xff0c;内部上拉至 VCC&#xff08;B&#xff09;&#xff0c;允许用户选择中继器何时有效。这可用于在上电时隔离行为不良的从机&#xff0c;直到…...

C语言:scanf()、getchar()、gets()

一、gets() gets()能吸收空格和换行&#xff0c;因此输入后&#xff0c;对输出要去除空格 和换行\n; #include <stdio.h> #include <string.h> int main() {char str[1000];int count0;gets(str);for(int i0;i<strlen(str);i)count;printf("%s\n",str…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...