基于Wireshark的网络数据包内容解析_第1页
基于Wireshark的网络数据包内容解析_第2页
基于Wireshark的网络数据包内容解析_第3页
基于Wireshark的网络数据包内容解析_第4页
基于Wireshark的网络数据包内容解析_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于wireshark的网络数据包内容解析学生姓名:¥ 指导老师:¥ 摘 要 本课程设计是利用抓包软件wireshark,对网络服务器与客户端进行网络数据收发过程中产生的包进行抓取,然后对所抓取的包进行分析,并结合的协议进行分析,达到了解各种数据包结构的目的。设计过程中对各种包进行抓取分析,各种包之间比较,了解每种包的传输过程与结构,通过本次课程设计,能很好的运用wireshark对数据包分析和wireshark各种运用,达到课程设计的目的。关键词 ip协议;tcp协议;udp协议;arp协议;wireshark;计算机网络;1 引 言 本课程设计主要是设计一个基于wireshark的网络数据

2、包内容解析,抓取数据包,然后对所抓取的包进行分析,并结合的协议进行分析,达到了解各种数据包结构的目的1.1 课程设计目的 wireshark是一个网络封包分析软件。可以对网络中各种网络数据包进行抓取,并尽可能显示出最为详细的网络封包资料,计算机网络课程设计是在学习了计算机网络相关理论后,进行综合训练课程,其目的是: 1.了解并会初步使用wireshark,能在所用电脑上进行抓包; 2.了解ip数据包格式,能应用该软件分析数据包格式。1.2 课程设计要求 (1)按要求编写课程设计报告书,能正确阐述设计结果。 (2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。 (3)学会文献

3、检索的基本方法和综合运用文献的能力。 (4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。1.3 课程设计背景 一、wireshark(前称ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。网络封包分析软件的功能可想像成 "电工技师使用电表来量测电流、电压、电阻" 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。 在过去,网络封包分析软件是非常昂贵,或是专门属于营利用的软件。wireshark的出现改变了这一切。在gnugpl通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源

4、代码,并拥有针对其源代码修改及客制化的权利。wireshark是目前全世界最广泛的网络封包分析软件之一。2、 网络嗅探需要用到网络嗅探器,其最早是为网络管理人员配备的工具,有了嗅探器网络管理员可以随时掌握网络的实际情况,查找网络漏洞和检测网络性能,当网络性能急剧下降的时候,可以通过嗅探器分析网络流量,找出网络阻塞的来源。网络嗅探是网络监控系统的实现基础。 网络嗅探需要用到网络嗅探器,其最早是为网络管理人员配备的工具,有了嗅探器网络管理员可以随时掌握网络的实际情况,查找网络漏洞和检测网络性能,当网络性能急剧下降的时候,可以通过嗅探器分析网络流量,找出网络阻塞的来源。嗅探器也是很多程序人员在编写网

5、络程序时抓包测试的工具,因为我们知道网络程序都是以数据包的形式在网络中进行传输的,因此难免有协议头定义不对的。网络嗅探的基础是数据捕获,网络嗅探系统是并接在网络中来实现对于数据的捕获的,这种方式和入侵检测系统相同,因此被称为网络嗅探。网络嗅探是网络监控系统的实现基础,首先就来详细地介绍一下网络嗅探技术,接下来就其在网络监控系统的运用进行阐述。2 网络协议基础知识2.1 ip协议 (1) ip协议介绍ip是英文internet protocol(网络互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的

6、一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守 ip协议就可以与因特网互连互通。 (2)ip协议的网络互连实现各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为“帧”)的格式不同。ip协议实际上是一套由软件程序组成的协议软件,它把各种不同“帧”统一转换成“ip数据包”格式,这种转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实现互通,即具有“开放性”的特点。 (3)ip数据报tcp/ip协议定义了一个在因特网上传输的包,称为ip数据报(ip dat

7、agram)。这是一个与硬件无关的虚拟包, 由首部和数据两部分组成,其格式如图2.1所示:数据报的数据区数据报首部 图2-1 ip数据报一般格式 ip数据报的详细格式如图2.2所示: 0 3 7 15 31版本首部长度服务类型总长度 标识标志片偏移生存时间协议头校验和源ip地址目的ip地址选项填充域数据部分 图2-2 ip数据报的详细格式ip数据报固定部分各字段含义:(1)版本 占4位,指ip协议的版本。通信双方使用的ip协议版本必须一致。目前广泛使用的ip协议版本号为4(即ipv4)。关于ipv6,目前还处于草案阶段。 (2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所

8、表示数的单位是32位字长(1个32位字长是4字节),因此,当ip的首部长度为1111时(即十进制的15),首部长度就达到60字节。当ip分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现ip协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。 (3)区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年ietf把这个字段改名为区分服务ds(differentiat

9、ed services)。只有在使用区分服务时,这个字段才起作用。 (4)总长度总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为216-1=65535字节。 在ip层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元mtu(maximum transfer unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的mtu值。 (5)标识(identification) 占16位。ip软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识

10、字段。但这个“标识”并不是序号,因为ip是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的mtu而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。 (6)标志(flag) 占3位,但目前只有2位有意义。 标志字段中的最低位记为mf(more fragment)。mf=1即表示后面“还有分片”的数据报。mf=0表示这已是若干数据报片中的最后一个。 标志字段中间的一位记为df(dont fragment),意思是“不能分片”。只有当df=0时才允许分片。 (7)片偏移 占13位。片偏移指出:较

11、长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。 (8)生存时间 占8位,生存时间字段常用的的英文缩写是ttl(time to live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为ttl的单位。每经过一个路由器时,就把ttl减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把ttl值减1。当ttl值为0时,就丢弃这个数据报。 (

12、9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的ip层知道应将数据部分上交给哪个处理过程。 (10)首部检验和 占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。 (11)源地址 占32位。 (12)目的地址 占32位。ip数据报可选部分字段含义:ip首部的可变部分就是一个可选字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。某些

13、选项项目只需要1个字节,它只包括1个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。2.2 arp协议 (一)arp协议简介:arp协议是“address resolution protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的mac地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的mac地址。arp是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标ip地址转换成目标mac地址的过程。arp协议的基本功能就是通过目标设备的

14、ip地址,查询目标设备的mac地址,以保证通信的顺利进行。 硬件类型,ar_hrd(arphrd_ether) 协议类型,ar_pro(ethertype_ip) 硬件地址长度,ar_hln(6) 协议地址长度,ar_pln(4)ether_dhost ether_ahost ether_type ar_op arp_sha arp_spa arp_tha arp_tpa以太网目的地址以太网源地址帧类型op发送者硬件地址发送者ip地址目标硬件目标ip地址 6 bytes 6 2 2 2 1 1 2 6 4 6 4 以太网首部 arp首部 ether_header() arphdr() 以太网a

15、rp字段 ther_arp() 图2-3 arp请求回答格式 (二)arp协议的利用和相关原理介绍:一、交换网络的嗅探arp协议并不只在发送了arp请求才接收arp应答。当计算机接收到arp应答数据包的时候,就会对本地的arp缓存进行更新,将应答中的ip和mac地址存储在arp缓存中。因此,在上面的假设网络中,b向a发送一个自己伪造的arp应答,而这个应答中的数据为发送方ip地址是(c的ip地址),mac地址是dd-dd-dd-dd-dd-dd(c的mac地址本来应该是cc-cc-cc-cc-cc-cc,这里被伪造了)。当a接收到b伪造的arp应答,就会更新本地的arp

16、缓存,将本地的ip-mac对应表更换为接收到的数据格式,由于这一切都是a的系统内核自动完成的,a可不知道被伪造了。arp欺骗的主要用途就是进行在交换网络中的嗅探。有关交换网络的嗅探不是本文的讨论内容。二、ip地址冲突在网络连接的时候,如果网络中存在相同ip地址的主机的时候,就会报告出ip地址冲突的警告。假设某主机b规定ip地址为,如果它处于开机状态,那么其他机器a更改ip地址为就会造成ip地址冲突。其原理就是:主机a在连接网络(或更改ip地址)的时候就会向网络发送arp包广播自己的ip地址,也就是freearp。如果网络中存在相同ip地址的主机b,那

17、么b就会通过arp来reply该地址,当a接收到这个reply后,a就会跳出ip地址冲突的警告,当然b也会有警告。因此用arp欺骗可以来伪造这个arpreply,从而使目标一直遭受ip地址冲突警告的困扰。三、阻止目标的数据包通过网关在一个局域网内通过网关上网,那么连接外部的计算机上的arp缓存中就存在网关ip-mac对应记录。如果,该记录被更改,那么该计算机向外发送的数据包总是发送到了错误的网关硬件地址上,这样,该计算机就不能够上网了。这里也主要是通过arp欺骗进行的。以下两种办法达到这样的目的:1、向目标发送伪造的arp应答数据包,其中发送方的ip地址为网关的地址,而mac地址则为一个伪造的

18、地址。当目标接收到该arp包,那么就更新自身的arp缓存。如果该欺骗一直持续下去,那么目标的网关缓存一直是一个被伪造的错误记录。当然,如果有些了解的人查看arp-a,就知道问题所在了。2、欺骗网关。向网关发送伪造的arp应答数据包,其中发送方的ip地址为目标的ip地址,而mac地址则为一个伪造的地址。这样,网关上的目标arp记录就是一个错误的,网关发送给目标的数据报都是使用了错误的mac地址。这种情况下,目标能够发送数据到网关,却不能接收到网关的任何数据。同时,目标自己查看arp-a却看不出任何问题来。四、通过arp检测混杂模式节点在混杂模式中,网卡进行包过滤不同于普通模式。本来在普通模式下,

19、只有本地地址的数据包或者广播(多播等)才会被网卡提交给系统核心,否则的话,这些数据包就直接被网卡抛弃。现在,混合模式让所有经过的数据包都传递给系统核心,然后被sniffer等程序利用。通过特殊设计的arp请求可以用来在一定程度上检测处于混杂模式的节点,比如对网络中的每个节点都发送mac地址为ff-ff-ff-ff-ff-fe的arp请求。对于网卡来说这不是一个广播地址(ff-ff-ff-ff-ff-ff),所以处于普通模式的节点就会直接抛弃该数据包,但是多数操作系统核心都认为这是一个广播地址,如果有一般的sniffer程序存在,并设置网卡为混杂模式,那么系统核心就会作出应答,这样就可以判断这些

20、节点是否存在嗅探器了。可以查看,很多基于arp的攻击都是通过arp欺骗实现的。至于arp欺骗的防范,还是尽可能使用静态的arp。对于win,使用arp-s来进行静态arp的设置。当然,如果能够完全使用静态的ip+mac对应,就更好了,因为静态的arp缓存只是相对的。可以有一些方法来实现arp欺骗的检测。设置一个arp的嗅探器,其中维护着一个本地网络的ip-mac地址的静态对应表,查看所有经过的arp数据,并检查其中的ip-mac对应关系,如果捕获的ip-mac对应关系和维护的静态对应关系对应不上,那么就表明是一个欺骗的arp数据包了。3 网络嗅探的工作原理与分析3.1 基于winpcap捕获数

21、据的机理运用以太网数据捕获的原理使得信息捕获系统能够拦截到我们所要的信息,这是捕获数据包的物理基础。在网络数据包的捕获过程中,首先,数据包捕获系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包,这就要求一部分程序要运行在操作系统核心内部,直接与网络接口驱动交互。这个部分是系统依赖的,在winpcap 的解决方案里它是由内核级的数据包监听设备驱动程序npf 实现的。winpcap 开发小组针对不同版本的windows 操作系统提供了不同的驱动。这些驱动不仅提供了基本的特性,例如抓包和injection;还有更高级的特性,例如可编程的过滤器系统和监视引擎等。其次,数据包捕获系统必须有用户级

22、的程序接口,通过这些接口,用户程序可以利用内核驱动提供的高级特性。在winpcap 的解决方案中是由两个不同的库:packet.dll 和wpcap.dll 库来实现的。winpcap 的优势在于提供了一套标准的抓包接口与libpcap 兼容,可使得原来许多unix 平台下的网络分析工具快速移植过来便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于npf 内核层次上的过滤器支持, 支持内核态的统计模式, 提供了发送数据包的能力。前者提供了一个底层api, 伴随着一个独立于windows 操作系统的编程接口,这些api 可以直接用来访问驱动的函数;后者导出了一组更强大的与libp

23、cap 一致的高层抓包函数库(capture primitives)。这些函数使得winpcap 在数据包的捕获过程中可以以一种与网络硬件和操作系统无关的方式进行。3.2 基于winpcap数据包捕获的过程在利用winpcap 捕获分析网络数据时, 主要是调用packet.dll 和wpcap.dll 中提供的api 函数进行操作。以下是基于winpcap 的网络数据包捕获流程及相应的winpcap 库函数。(1) 获取网络适配器信息利用winpcap 捕获数据包的第一步是要获得本地的网络适配器(网卡)列表。winpcap 提供pcap_findalldevs()和pcap_findallde

24、v_ex()这两个函数来实现些功能,这两个api 函数都返回一个pcap_if 结构列表,列表的每项内容都含有全面的网卡信息, 尤其是字段名字和含有名字的描述以及有关驱动器的易读信息。(2) 设置并编译过滤器winpcap 使用的过滤规则兼容tcpdump 的过滤规则, 它提供一种高效的方法来捕获网络数据包的某些数据, 且常和系统的捕获机制相集成。函数pcap_compile()和pcap_setfilter()用来实现过滤数据的功能。pcap_compile()来编译一个过滤设备,它通过一个高层的boolean 型变量和字串产生一系列的能够被底层驱动所解释的二进制编码。boolean 表示语

25、法能够在这个文件的过滤表示语法中找到。pcap_setfilter()用来联系一个在内核驱动上过滤的过滤器,这时所有网络数据包都将流经过滤器,并拷贝到应用程序中。(3) 打开网络设备使用函数pcap_open()或者pcap_open_line()。函数有三个参数snaplen、promisc、to_ms。snaplen 用于指定要捕获数据包的长度,最大为65535,如果设定一个值,则捕获到大于这个设定值的数据时,后面的数据会被截断掉。promisc 表示是否把网卡设置为混杂模式,如果是1 表示设为混杂模式,在通常情况下网卡只接受发往它的数据包而忽略发往其他主机的数据包。但网卡处于混杂模式时它

26、将接收所有的流经它的数据包,这就意味着在共享介质的情况下我们可以捕获到其它主机的数据包;大部分的数据包捕获程序都将混杂模式设为默认。to_ms 参数指定读数据的超时控制,超时以毫秒计算,当在超时时间内网卡上没有数据到来时对网卡的读操作将返回。(4) 捕获数据包一旦网卡被打开,就可以调用pcap_next(),pacp_next_ex()或pcap_loop()进行数据包的捕获。pcap_next()和pacp_next_ex()表示捕获一个可用数据包就返回;而pcap_loop()表示捕获多个数据包,可以循环捕获数据包,直到出现错误为止。这三个函数都有返回一个指向pcap_pkthdr 结构的

27、指针,pcap_next()与pcap_next_ex()的功能相似,不过后者只在win32 环境下运行。(5) 读取离线数据包 pcap_dump_open()被用来打开一个savefile以供写入数据包。pcap_open_offlin()被用来打开savefile,并用pcap_next()来逐条读取数据包。4 基于wireshark的网络数据包内容解析4.1 捕获数据包运行wireshark软件,点击,点击开始如图:图4-1 对数据包进行捕获一段时间后,捕获到网络数据包,如图:图4-2 捕获到的数据包4.2 数据包解析运用wireshark捕获的数据包,如图图 4-3 捕获数据包如上图

28、所示,可看到很多捕获的数据。第一列是捕获数据的编号;第二列是捕获数据的相对时间,从开始捕获算为0.000秒;第三列是源地址,第四列是目的地址;第五列是数据包的信息。选中其中7号数据包,双击,得到整体wireshark的窗口,主要被分成三部分,如图:图4-4 数据帧整体图 上面部分是所有数据帧的列表;中间部分是数据帧的描述信息;下面部分是帧里面的数据。各层数据包解析:帧号 时间    源地址          目的地址     

29、 高层协议  包内信息概况no.  time    source         destination      protocol    info1  0.000000  25   2  tcp     2764 > http syn seq

30、=0 len=0 mss=1460              源端口>目的端口请求建立tcp链接(1) 、物理层的数据帧: frame 1 (62 bytes on wire, 62 bytes captured)  / 1号帧,线路62字节,实际捕获62字节 arrival time: jan 21, 2008 15:17:33.910261000      / 捕获日期和时间 time delta from

31、 previous packet:0.00000 seconds / 此包与前一包的时间间隔 time since reference or first frame: 0.00 seconds / 此包与第1帧的间隔时间 frame number: 1                             

32、  /    帧序号 packet length: 62 bytes                      /     帧长度 capture length: 62 bytes       

33、60;              /    捕获长度 frame is marked: false                       /   此帧是否

34、做了标记:否 protocols in frame: eth:ip:tcp              /    帧内封装的协议层次结构 coloring rule name: http        /   用不同颜色染色标记的协议名称: httpcoloring rule string: http | tcp.por

35、t = 80    / 染色显示规则的字符串: (二)数据链路层以太网帧头部信息:ethernet ii, src: acertech_5b:d4:61 (00:00:e2:5b:d4:61), dst: jetcell_e5:1d:0a (00:d0:2b:e5:1d:0a) / 以太网协议版本ii,源地址:厂名_序号(网卡地址),目的:厂名_序号(网卡地址) destination: jetcell_e5:1d:0a (00:d0:2b:e5:1d:0a) / 目的:厂名_序号(网卡地址)    so

36、urce: acertech_5b:d4:61 (00:00:e2:5b:d4:61)  / 源:厂名_序号(网卡地址)  type: ip (0x0800)  / 帧内封装的上层协议类型为ip(十六进制码0800)(3) 互联网层ip包头部信息: internet protocol, src: 25 (25), dst: 2 (2)          &#

37、160;  / 互联网协议,源ip地址,目的ip地址version: 4 互联网协议ipv4(ipv4数据报字段结构),如图图4-5 ip数字报结构header length: 20 bytes                           /  ip包头部长度differentiated s

38、ervices field:0x00(dscp 0x00:default;ecn:0x00) / 差分服务字段(4) 传输层tcp数据段头部信息: transmission control protocol, src port: 2764 (2764), dst port: http (80), seq: 0, len: 0                      /

39、0; 传输控制协议tcp的内容source port: 2764 (2764)源端口名称(端口号) destination port: http (80)                 /  目的端口名http(端口号80) sequence number: 0    (relative sequence number)   / 序列号(相对序列号) header

40、length: 28 bytes                                      /  头部长度 flags: 0x02 (syn)    &#

41、160;  / tcp标记字段(本字段是syn,是请求建立tcp连接) window size: 65535                              /   流量控制的窗口大小 checksum: 0xf73b correct  &

42、#160;                 /  tcp数据段的校验和 options: (8 bytes)                          

43、           /    可选项4.3 数据帧内容分析 在下图中filter的编辑框中输入arp,选中其中一个arp的数据帧内容解析。如图:图4-6 filter筛选出来的arp数据帧 选择第一个帧进行内容分析:这个帧分为三部分,先展开第一部分,如图: 图4-7 帧的基本信息在上图中我们看到这个帧的一些基本信息:帧的编号:1(捕获时的编号)帧的大小:60字节。再加上四个字节的crc计算在里面,就刚好满足最小64字节的要求。帧被捕获的日期和时

44、间:2012.14.06.58因为是第一个帧,所以捕获前一个帧跟第一个帧的时间都为0;帧装载的协议:arp展开帧的第二部分,如图:图4-8 帧的网络信息目的地址(destination):ff:ff:ff:ff:ff:ff (这是个mac地址,这个mac地址是一个广播地址,就是局域网中的所有计算机都会接收这个数据帧)源地址(source):compalin_20:49:b6(70:5a:b6:20:49:b6)帧中封装的协议类型:0x0806,这个是arp协议的类型编号trailer:是协议中填充的数据,为了保证帧最少有64字节展开帧的第三部分,如图:图4-9 帧的地址信息硬件类型:以太网协议类型:ip硬件大小:6协议大小:4发送方mac地址 compalin_20:4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论