流量分析的学习

基本理论概念

HTTP请求的基本概念

超文本传输协议(HypertextTransferProtocol,简称 HTTP)是一种用于Web通信的协议。

在现代互联网中,负责在客户端和服务器之间传输数据,并实现万维网的基本功能,HTTP是使用最为广泛的协议之一。而HTTP请求是指客户端将请求发送到服务器,请求服务器提供指定资源的过程。

在进行HTTP请求时,客户端会先建立与服务器的TCP连接,并向服务器发送HTTP请求报文。一个完整的HTTP请求包含了请求行、请求头和请求体三个部分。请求行中包含了请求的方法、URI(Uniform Resource Identifier)和HTTP协议版本。常用的HTTP请求方法有GET、POST、HEAD、PUT等,根据不同的方法,客户端可以向服务器请求资源、提交数据以及获取服务器的响应。

请求头是HTTP请求中除请求行外的另一项重要内容。请求头包含用于告知服务器有关客户端信息和意图的额外信息和参数。常用的请求头有User-Agent,Referer,Cookie等,它们能够帮助服务器判断资源定位,识别用户,判断请求处理逻辑。此外,客户端还可以将自定义的头部字段添加到请求头上,以实现额外信息的传递。

而请求体则是将特定数据承载在某些HTTP请求中的一部分。例如,在POST请求中,传递表单数据、上传文件等往往采用请求系统。请求的格式和具体内容要根据请求的方式和要求的资料而定。

深入研究HTTP请求的关键特性,在进行HTTP请求流量分析时,对后续取证工作至关重要。攻击行为的迹象可以通过分析请求头、请求体、应答头等部分来揭示,同时也有助于取证人员对攻击者的攻击种类、攻击目的、攻击意图等进行判断。

HTTP请求分析

|-----------------------------------------|------------------------------------|-----------------------------------------|
| 请求行 | 请求头 | 请求体 |
| HTTP请求是用于在Web上进行通信的协议,负责在客户端和服务器之间传输数据。 | 请求头包含了附加的信息和参数,用于告知服务器关于客户端的信息和意图。 | 请求体是承载具体数据的部分,比如在POST请求中用于传递表单数据、文件上传等。 |

HTTP请求流量的组成

请求头

请求头是HTTP请求流量中的一个关键组成部分,它包含了很多有关请求的信息,深入分析和研究请求头能够识别出不同类型的HTTP请求并为后续的取证工作打下基础,同时也可以从请求中获得很多关键信息,包括请求类型的来源用户身份等,这些都将为后续的取证工作提供重要线索,因此深入研究和分析HTTP请求流量中的请求头是分析和研究HTTP请求流量的取证方法中的一项重要步骤。

请求体

请求体是包含在HTTP请求中的数据内容。一般出现在用户提交的用于传输表单数据等的POST请求中。用户提交的具体数据,包括用户名,密码,搜索关键词等,都可以通过分析请求体获得。对取证工作而言,通过请求体分析,为后续取证过程提供有力证据,有助于用户行为和意图的认定。

响应头

HTTP请求中的响应头是包含服务器响应客户端请求信息的重要组成部分。关键的取证信息可以通过对响应头的分析获得。响应头包括状态行,响头域,响头实体。状态行反映的是服务器处理请求的结果。响应头域包含一系列键值对,这些键值对响应有额外的信息。响应实体是服务器向客户端返回的实际内容。通过分析响应实体,取证线索还可进一步获取。综上所述,对 HTTP 请求中的响应头进行深入分析,对取证工作意义重大,能为后续取证过程提供可靠依据。

流量特征分析

流量捕获技术

在对HTTP请求流量特点进行分析的过程中,首先要对网络中的HTTP流量进行获取。为了达到对HTTP流量的监控目的,论文提出了一种利用流量捕获技术的方法,通过使用网络流量监控软件Wireshark,对网络中的HTTP请求流量进行监控和分析,以获得与HTTP请求相关的数据包,从而得到请求头数据包,请求体数据和响应头数据包,从而对HTTP请求的特征进行深入的研究,并为后续取证工作提供准确的基础数据,因此提出基于流量捕获技术的方法。应用流量捕获技术,既能提高取证工作的效能和精确度,又能对网络中潜在的攻击行为进行分析和识别,所以论文中对流量捕获技术的应用是必不可少的一环。

请求头特征分析方法

请求头特征分析表

|---------------------|----------|--------------|
| 特征选择和特征 | 分类结果 | 进一步分析和解析 |
| 以大量真实的HTTP请求流量数据为样本 | 新的请求头的分类 | 可能存在的攻击行为的识别 |

请求头是HTTP请求中的关键部分,它包含了丰富的信息,可以用于进行取证和分析。首先,以大量真实的HTTP请求流量数据为样本,进行特征选择和特征提取,选取了与取证相关的关键特征。然后,对请求头进行分类,判断其是否属于可疑的或者异常的请求。最后,通过对异常请求头的进一步分析和解析,可以识别出可能存在的攻击行为。这种方法能够提高取证工作的效率和准确性,为网络安全和法律调查提供了有力的支持。

请求体特征分析方法

请求体是HTTP请求流量特征分析过程中包含用户发送给服务器的特定数据的重要组成部分。首先,将请求体分成不同的领域和参数,通过结构化的方式处理。其中的关键信息可以通过对请求体结构和内容的分析而得到鉴别。其次,关键词提取、关联性分析在请求体中的数据。从请求体中提取关键词,并进行关联分析,找出与取证对象有关的信息,通过文字挖掘和自然语言处理技术。比如涉及网络诈骗的案件,通过对请求体中的"骗局"、"诈骗"等关键词进行分析,就能发现其中的猫腻。此外,二进制数据在请求体中也可以通过分析和特征提取的方式获得。例如,对于上传的文件,其文件的种类、大小、修改时间等特征信息,都可以被提取出来。通过分析二进制数据,可以发现上传恶意代码或涉及违规内容等不正常行为。

请求体特征分析方法

|--------------|----------------------------------|
| 分析方法 | 描述 |
| 结构化处理 | 将请求体分为不同字段和参数 |
| 关键词提取与关联分析 | 使用文本挖掘和自然语言处理技术从请求体中提取关键词并进行关联分析 |
| 二进制数据解析与特征提取 | 提取上传文件的类型、大小、修改时间等特征信息 |

响应头特征分析方法

响应头是HTTP请求流量特征分析中的重要内容。通过分析响应头,揭示要害信息,为取证工作的后续开展奠定基础。本节将以HTTP响应头部特征为基础,介绍一种分析方法。首先,要识别出HTTP响头并进行提取。然后,关于服务器类型、文件类型、编码方式等详细信息都可以通过观察响应头中不同的字段来获得。同时,对于可能出现的攻击行为,也可以通过统计响应头中的错码信息进行分析。

HTTP响应头特征分析

|--------------|------------|
| 字段 | 描述 |
| Content-Type | 文件类型 |
| Server | 服务器类型 |
| 编码方式 | 文件的编码方式 |
| 错误码 | 表示文件未找到等错误 |

HTTP请求流量分析取证

HTTP请求流量分析取证方法

针对HTTP请求流量的取证分析,以下是一些常用的方法和步骤:

HTTP请求流量的取证分析方法

HTTP请求流量的提取和分析

请求头数据提取和分析

请求头数据中包含了诸多关键信息,如请求方法、Cookie等。将对这些信息进行分析,以便在后续的取证工作中能够准确识别和追踪相关的HTTP请求。

通过请求头数据的分析,可以了解到请求的目标、请求的来源以及请求的行为等重要信息。例如,根据User-Agent字段,可以判断请求是由哪个浏览器或用户代理发起的;通过Cookie字段,可以获取到用户的身份验证信息或其他关键数据。此外,在请求头数据的分析过程中,还需要注意信息的完整性和准确性。可以对字段的取值范围进行判断和筛选,以剔除异常或非法的请求。

综上所述,请求头数据的提取和分析是HTTP请求流量取证中的关键一步。通过深入研究和分析HTTP请求的请求头,能够为后续的取证工作提供基础,实现对恶意行为的识别和分析。

请求体数据提取和分析

在HTTP请求流量取证过程中,请求体数据的提取和分析是非常重要的一步。通过对请求体数据的提取,可以获取到用户发送的具体内容,包括表单数据、文件上传等信息,进一步分析可以揭示用户的操作行为和意图。在数据分析方面,可以对请求体数据进行特征提取和模式识别,以识别出异常行为和潜在的攻击行为。通过请求体数据的深入分析,可以为后续的取证工作提供更加准确和全面的证据。

响应头数据提取和分析

在进行基于HTTP请求流量的取证工作中,对响应头数据的提取和分析是非常重要的一步。对于每个HTTP请求,服务器都会返回一个包含响应状态码、响应内容类型、响应长度等信息的响应头。通过分析响应头数据,可以获得关键的证据,如服务器的响应状态、所返回的文档类型等。具体的方法是通过抓包工具捕获HTTP请求流量,然后提取出每个请求中的响应头数据。接着,可以对响应头数据进行进一步的分析,例如使用正则表达式匹配特定的关键词,以识别是否存在异常的响应状态码或特定类型的响应。这样的分析能够帮助发现潜在的攻击行为或异常情况,提高取证工作的效率和准确性。

HTTP请求的电子证据属性分析

对于HTTP请求的电子证据,通常会包含以下属性

HTTP请求的电子证据属性

|------------|---------------------------------------------|
| 1. 请求时间戳 | 记录请求发生的时间和日期,可以确定事件发生的确切时间 |
| 2. 请求方法 | 标识HTTP请求使用的方法,如GET、POST、PUT、DELETE等 |
| 3. 请求URL | 包括请求的完整URL路径,包括主机名、端口号和资源路径等 |
| 4. 请求头部信息 | 包含了用户代理、来源、Cookie等相关信息,可用于识别请求的来源和具体信息 |
| 5. 请求主体 | 对于POST请求,包含了提交的数据内容,如表单数据、JSON数据等 |
| 6. 请求IP地址 | 记录请求发起的IP地址,可用于追踪请求的来源和定位用户位置 |
| 7. 请求参数 | 包含了请求中的各种参数,如查询参数、表单参数等,用于传递数据和参数信息 |
| 8. 请求状态码 | HTTP请求返回的状态码,用来表示请求的处理结果,如200表示成功、404表示未找到等 |
| 9. 请求响应时间 | 记录请求的响应时间,可以用于分析请求的处理效率和性能 |
| 10. 请求用户信息 | 如果请求需要用户认证,可能会包含用户的登录信息或令牌,用于验证用户身份 |

这些属性可以通过审查HTTP请求的原始数据或日志文件来获取,用于分析和还原具体的网络事件、行为或交互过程。在法律调查或网络安全事件处理中,分析HTTP请求的电子证据属性可以帮助确定事件的起因、过程和责任方,从而提供关键的证据支持。

流量电子证据分析

HTTP协议作为互联网通信的基础协议,其请求参数在网络流量分析中扮演着关键角色。HTTP请求参数包含在URL、请求体或头部中,用于传递客户端到服务器的数据。

IP地址与MAC地址

对IP地址的定义体现了电子数据的客观性,具体表现在,通过对IP地址的定义。对于IP地址而言,每个设备在网络上都有唯一的IP地址。这意味着可以通过IP地址来唯一标识一个特定的设备或主机。IP地址与MAC地址通过电子证据的真实性、合法性和相关性确定了虚拟计算机与真实计算机的一一对应。

|----------------------------------------------------------------------------|---|
| |
| | |

虚拟计算机与真实计算机电子证据相关示例图

SQL数据库

对SQL数据库的定义体现了电子数据的客观性,具体表现在,SQL数据库存储的数据具有良好的可追溯性和可验证性。可以通过查询数据库来获取特定时间段、特定条件下(即在爆破密码登录之后,所创建的文件)的数据,从而对分析结果进行验证和复现,这确保分析结果的客观性和准确性。

状态码

对HTTP状态码的定义体现了电子数据的客观性,即HTTP协议规范定义的标准化代码,具有客观性和一致性。具体表现在,不同的服务器在处理请求时,会根据相同的规范返回相同的状态码,确保了客观性和可比性。

请求和响应数据

在本案例中,电子数据的客观性体现在请求和响应数据的记录具有良好的可追溯性和验证性。在本案例中,通过查看原始数据包或数据记录来验证分析结果的准确性和可信度,这一过程确保了分析过程的客观性。

时间戳

时间戳通常采用标准的时间格式和时区表示,体现了电子数据的客观性,如UTC时间,以确保一致性和标准化。在本案例中,这个一致性使得不同系统和工具在分析时间相关数据时能够进行有效的协作和比较。同时,这种精确记录确保了事件时间的客观性和准确性。时间戳的电子证据原理图如图4-21。

图4-21 时间戳的电子证据原理图

实操

在此之前,先大致介绍一下wireshark

Wireshark网络抓包(六)------快速上手,入门指南_怎么快速学习抓包-CSDN博客

Wireshark入门指南:详细教程及实践技巧_capture interfaces在哪-CSDN博客

安恒八月试题为例

一、题目背景

某公司内网网络被黑客渗透,简单了解,黑客首先攻击了一台web服务器,破解了后台的账户密码,随之利用破解的账号密码登陆了mail系统,然后获取了vpn的申请方式,然后登陆了vpn,在内网pwn掉了一台打印机,请根据提供的流量包回答下面有关问题

二、关卡列表

1 某公司内网网络被黑客渗透,请分析流量,给出黑客使用的扫描器

2 某公司内网网络被黑客渗透,请分析流量,得到黑客扫描到的登陆后台是(相对路径即可)

3 某公司内网网络被黑客渗透,请分析流量,得到黑客使用了什么账号密码登陆了web后台(形式:username/password)

4 某公司内网网络被黑客渗透,请分析流量,得到黑客上传的webshell文件名是,内容是什么,提交webshell内容的base编码

5 某公司内网网络被黑客渗透,请分析流量,黑客在robots.txt中找到的flag是什么

6 某公司内网网络被黑客渗透,请分析流量,黑客找到的数据库密码是多少

7 某公司内网网络被黑客渗透,请分析流量,黑客在数据库中找到的hash_code是什么

8 某公司内网网络被黑客渗透,请分析流量,黑客破解了账号ijnu@test.com得到的密码是什么

9 某公司内网网络被黑客渗透,请分析流量,被黑客攻击的web服务器,网卡配置是是什么,提交网卡内网ip

10 某公司内网网络被黑客渗透,请分析流量,黑客使用了什么账号登陆了mail系统(形式: username/password)

11某公司内网网络被黑客渗透,请分析流量,黑客获得的vpn的ip是多少

1.扫描器

常见的WEB扫描器有Awvs,Netsparker, Appscan, Webinspect, Rsas,Nessus, WebReaver, Sqlmap。有的CTF题会考察攻击者使用的是哪一种扫描器,所以在做这类题之前,先要了解各个扫描器所含的特征。

先按协议类型排序分类

稍微筛选一下,就能看见相关的信息,发现有acunetix的特征

为了验证猜想,这里使用http contains "acunetix" 或者 http contains "wvs"

找到了很多相关的信息

所以基本可以确认黑客所使用的扫描器就是awvs

2.登录后台

常见后台地址

admin

manager

login

system

尝试去直接直接过滤地址 http contains "admin"

我们就会发现 登陆的尝试字段admin/login.php?rec=login

其次我们可以从登录后台的方法去判断

登录后台的方法无非就两种 post和get

因为get的方法不安全 在提交url的时候会有问题

所以第一步,基本可以确定登录后台的方法百分之99就是POST方法

这里我们使用 http.request.method== " POST " POST大写

我们依然可看到他的登录地址是admin

如果还不确定

所以我们下一步 就是去追踪tcp流 我们只要看到302重定向,就表示登录成功了

或者说,如果黑客要攻击后台,一定会去请求,web出现大量的404 Not Found 而且是从黑客ip发现请求,所以我们也可以选择筛选,从前两题分析得到的黑客的IP地址,以及含有404的记录

ip.addr==192.168.32.189(黑客ip)&&http contains "404"

经过分析,可以得到对应的后台地址/admin/login.php?rec=login​

3.账号密码

这里的思路也很简单,当黑客扫描到后台登陆页面时,肯定会先使用万能密码和弱口令进行尝试,而登陆页面一般都是​​POST​​请求,万能密码和弱口令一般都是含有​​admin​​的,而且登陆页面一般是有​​login​​这个关键字的,所以可以利用这些进行过滤

筛选结束以后,可以看到大量的爆破账号密码的记录,按照经验而言,一般最后得到的流量信息就是,最后成功爆破出来的账号密码

到最后,可以发现,有两个IP是成功登录的,192.168.94.59和192.168.94.233,从记录以及内容都可以分析得到,黑客的ip为192.168.94.59,而且后面该ip,使用该密码,进行了一系列改密码夺权的操作

所以,可以确定账号密码为password=g00dPa$$w0rD&user_name=klwuqlfj

4.webshell上传

这里的思路就是,上传webshell的方式大部分都是POST,get传参风险比较大,而且尝试过滤eval,system,assert等关键字。

通过过滤发现,在image的目录下,多了一个a.php文件是比较可疑的,追踪流可以发现,其中含有类似一句话木马的内容

而且后面有一段base64解码的内容,通过删掉一些url编码的内容以后,可以看见,很大概率,这个a.php就是webshell。而且很明显可以知道,这里的1234就是传入的参数,而且eval为执行函数,尝试检索木马前缀。

没有,那这里就考虑换个协议看看

在第一个里面追踪tcp流找到了对应的木马内容

base64编码以后如下

5.在robots.txt 找flag

很简单,直接检索robot.txt,追踪流

flag:87b7cb79481f317bde90c116cf36084

也可以选择导出文本对象,把robots.txt导出来来查看flag

6.数据库密码

找数据库密码就涉及到三个关键字,分别是​​mysql、database、password​​,可以通过这几个关键字来进行查询。直接过滤http数据包,查看数据包的末尾,如果数据库登陆成功,那么http响应码应该为200,逐一查看响应码为200的数据包,即可找到数据库密码

输入命令 http contains "database"&&http.response.code==200(这个流量只有一条)

定位到了这个http流量

答案为:e667jUPvJjXHvEUv

7.hash_code

在上面的一题里面得到了较为关键的信息,就是,数据库的ip

所以这里先选择筛选一下关键字和这个ip

mysql contains "hash_code" && ip.src==10.3.3.101

没什么技巧之类的,只能是多搓几个包

最后通过筛选得到这个内容

8.ijnu@test.com得到的密码

也挺简单的,直接在tcp协议中过滤这个,然后分组详情查询,得到相关的md5值

解密

得到答案,密码为:edc123!@#

9.网卡内网ip

网卡问题 , 就是eth0 eth1 ens33 lo 等等这些网络接口,所以进行关键字搜索tcp contains "eth0"

找到了内网ip和外网ip:192.168.32.189(外),10.3.3.100(内)

eth0, eth1, ens33, lo 是不同的网络接口名称,它们用于标识计算机上的网络接口。不同的操作系统和不同版本的Linux可能使用不同的命名规则来标识这些接口。

网络接口名称解释
eth0eth1
  • eth0eth1 是传统的网络接口名称,通常用于表示以太网接口。
  • 在较早的Linux发行版中,网络接口通常按照这种方式命名。eth0 表示第一个以太网接口,eth1 表示第二个以太网接口,依此类推。
  • 这种命名方式被称为 传统接口命名
ens33
  • ens33 是一种新的网络接口命名规则,称为 "一致性网络接口命名"(Predictable Network Interface Names)。这种命名规则由系统d(systemd)引入,用于提供更一致和稳定的接口名称。
  • 在这种规则下,接口名称通常包括一个前缀(如 ens 表示以太网接口),后跟一个数字或其他标识符。ens33 中的 33 可能指示接口的特定设备路径或其他硬件相关信息。
lo
  • lo回环接口(Loopback Interface) 的名称。回环接口用于计算机内部的网络通信,通常指 127.0.0.1 地址。
  • 这个接口用于在计算机内部进行网络请求和测试,即使在没有物理网络连接的情况下,计算机也能通过 lo 接口进行网络通信。
  • 这个接口的IP地址范围是 127.0.0.0/8,最常用的是 127.0.0.1
接口名称的变化

在较新的Linux发行版中,系统可能使用 一致性网络接口命名 (Predictable Network Interface Names),以替代传统的 eth0, eth1 等命名。这种命名方式基于硬件的固件信息或系统配置,以提供更加稳定和可预测的网络接口名称。例如:

  • enp0s3 :表示一个以太网接口,其中 en 表示以太网(Ethernet),p0s3 表示硬件位置(例如 PCI 总线 0, 槽 3)。
  • wlp2s0 :表示一个无线接口,其中 wl 表示无线(Wireless),p2s0 表示硬件位置(例如 PCI 总线 2, 槽 0)。
使用和配置
查看网络接口 :在Linux系统中,可以使用 ip aifconfig 命令来查看所有网络接口及其状态。
配置网络接口 :配置网络接口通常涉及编辑网络配置文件或使用网络管理工具。例如,在 Ubuntu 上,可以使用 netplan 工具配置网络接口,而在 CentOS 上,通常使用 network-scripts

10.登录mail系统的账号

既然要筛选黑客登录的mail系统的账号,还是选择先过滤post请求和关于"mail"的信息

在筛选出来的流量包中,密码显示的是被加密以后的结果,而且在尝试以后发现并不是base64,而是AES

AES加密算法原理的详细介绍与实现-CSDN博客

那么这里的思路就是通过查找黑客进行了大量爆破以及尝试的记录里面去找密码的加密函数。还是要重新过滤到服务器返回的信息里面去找,找状态码为200的记录中去找服务器返回的信息。

取出来发现是AES的CBC加密,填充格式为ZeroPadding,密钥为字符串1234567812345678的hash值,偏移量为1234567812345678

Var key_hash = CryptoJS.MD5('1234567812345678');

var key = CryptoJS.enc.Utf8.parse(key_hash);

var iv = CryptoJS.enc.Utf8.parse('1234567812345678');

form.password.value = CryptoJS.AES.encrypt(form.password.value, key, { iv: iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});

在下一次的数据请求中,发现登录用户还是wenwenni

因为这个用户刚刚推出,所以猜测是使用cookie登录的,查看一下返回数据44号中出现{"success":true},代表登陆成功。

在42号数据请求中,发现登录用户为wenwenni,再查看一下返回数据44号中出现{"success":true},代表登陆成功。

(http contains "{\"success\":true}" or http.request.method=="POST") and ip.addr==192.168.94.59

从后往前看,18152是登陆成功的返回结果,对应的17126则应该就是正确的加密后的密码

1234567812345678的hash加密MD5值为d959caadac9b13dcb3e609440135cf54

在线aes解密

得到了密码:admin!@#PASS123

账号为:admin

密码判断

总结:

流量分析是监控和评估网络流量的过程,目的是理解网络性能、检测异常行为和优化网络资源。主要内容包括:

  1. 流量监控

    实时或定期检查网络流量,以检测网络带宽使用情况、流量峰值和带宽瓶颈。

  2. 数据收集

    收集网络数据包、流量统计和日志。常用工具有 Wireshark、tcpdump 和网络流量分析器(如 NetFlow、sFlow)。

  3. 流量分析

    • 流量分类:根据应用、协议或IP地址对流量进行分类。
    • 异常检测:识别异常流量模式或潜在的安全威胁。
    • 性能评估:分析延迟、丢包率和吞吐量等网络性能指标。
  4. 报告和可视化

    使用图表和报告展示流量趋势、带宽使用和网络健康状况。工具如 Grafana、Nagios 和 SolarWinds 常用于可视化。

  5. 优化和调整

    根据分析结果调整网络配置、带宽分配和负载均衡策略,以提高网络性能和可靠性。

相关推荐
贾saisai39 分钟前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发
北岛寒沫44 分钟前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习
铁匠匠匠2 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
架构文摘JGWZ4 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
小齿轮lsl4 小时前
PFC理论基础与Matlab仿真模型学习笔记(1)--PFC电路概述
笔记·学习·matlab
Aic山鱼4 小时前
【如何高效学习数据结构:构建编程的坚实基石】
数据结构·学习·算法
qq11561487074 小时前
Java学习第八天
学习
天玑y5 小时前
算法设计与分析(背包问题
c++·经验分享·笔记·学习·算法·leetcode·蓝桥杯
2301_789985945 小时前
Java语言程序设计基础篇_编程练习题*18.29(某个目录下的文件数目)
java·开发语言·学习
橄榄熊5 小时前
Windows电脑A远程连接电脑B
学习·kind