自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 操作系统基础:用户态与内核通信的方式

用户空间与内核空间的数据传递

2022-07-02 16:19:09 4317

原创 初次接触eBPF

ebpf

2022-06-05 19:57:23 349

原创 几乎零基础的git入门级分享

写在最前面:特意抽出时间学习git的原因是之后要攻读软件工程学位的博士,而git是大型软件开发很难绕过的一个东西。很惭愧,从大一开始接触计算机起的这四年中,居然从未给开源软件贡献过任何一行代码,也没有正式参与过大型软件的开发,仅仅是用于平时大作业或者下载论文源码,网页版的github已经足够满足需求。但是,在下一阶段的学习中,这肯定是不够滴,据我观察组内也是用自己搭建的git管理项目代码。本人习惯于先把早晚要做的事做完,再做别的事,所以也就有了这篇博客的诞生。本文将记录一个仅仅只有网页版github经验

2022-05-26 21:01:04 400 1

原创 Linux自主访问控制——有效ID与真实ID

在做毕设的时候,碰到了一个场景:需要在普通用户的情况下调用“特权程序”,来访问受保护的文件。相应知识网络安全课学过,这里再回忆并总结一下。有效ID与真实ID的关系在Unix的设计中,进程与多个用户ID和用户组ID相关联,包括如下:1、实际用户ID和实际用户组ID:标识我是谁,身份的识别,谁运行的程序。也就是登录用户的uid和gid,比如我的Linux以simon登录,在Linux运行的所有的命令的实际用户ID都是simon的uid,实际用户组ID都是simon的gid(可以用id命令查看)。2、有效

2022-03-18 16:09:25 1539

原创 基于上下文的权限管理模型设计——利用LSM机制

设计思路1.模仿SMACK的编码风格,所以首先要精读一遍SMACK的代码,找到有用的部分。(虽然之前也读过并模仿过,但是复杂度不是一个等级)。2.确定数据结构和hook函数。3.初步实现部分功能。4.调试bug,完善功能SMACK的系统调用chsmack:显示或设置 Smack 扩展属性值smackctl:加载 Smack 访问规则smackaccess:报告带有一个标签的进程是否可以访问带有另一个标签的对象Smack 使用扩展属性 (xattrs) 在文件系统对象上存储标签。属性

2022-03-04 20:01:18 4004

原创 毕业设计实验——汽车操作系统权限管理模型的优化技术研究

毕设工作组成:1.威胁场景 2.源码分析 3.复现论文(实验),这篇博客关注第三部分。实验设计实验目的在linux系统上复现《Context-Aware Access Control in Novel Automotive HMI Systems》,并尽可能提出改进。实验背景&实验动机随着汽车软件功能多样性的增加,在越来越多的汽车应用程序之间共享可用的屏幕区域变得越来越重要。目前已经提出了许多行业规范(ISO26262 等),来保障功能图像显示的安全性。(此处安全性的定义:保证显示安全

2022-02-25 21:05:20 4513

原创 汽车操作系统攻防综述

一. 针对PKES系统的Relay Attack1. PKES(Passive Keyless Entry and Start)系统简介传统的物理钥匙+锁定系统的设计已经有了很高的安全性,但是为了提高用户的使用体验(便利性),汽车制造商推出PKES(汽车无钥匙进入与启动)系统。具备 PKES 系统的车辆,当车主的车钥匙靠近车辆时,车辆能检测和识别到射频信号,进而解锁车辆,这使车主接近或启动车辆时不必到处找车钥匙。PKES系统是射频技术在汽车门禁系统上的应用,通过继电器控制汽车的开关。在这个攻防场景下,

2022-02-08 11:51:46 8013

原创 《Kernel安全学术分享》观后记录

备注报告人是明尼苏达大学的卢康杰教授,四大顶会发的非常多,主要学习其汇报思路以及对领域风向的把握。一.操作系统内核(OS kernel)在计算机系统中的地位直接与硬件(hardware)和 devices交互,是默认的可信计算根,管理系统资源与用户。最著名的操作系统内核:Linux内核存在大量漏洞(A hard problem) 的原因:由不安全的语言编写,模块间的关系过于复杂,编译器,供应链安全问题等。难以解决的原因:复杂且大量的代码;由于开发者的trick而导致的许多特殊的情景;缺少对bug

2022-01-17 17:02:30 2559

原创 网络安全期末复习

考试题型:七道大题分值:100分(占总评50%)官方划出的考试重点:缓冲区溢出、DDOS、web安全、中间人攻击防御1.缓冲区溢出攻击缓冲区溢出的含义是为缓冲区提供了多于其存储容量的数据,就像往杯子里倒入了过量的水一样。通常情况下,缓冲区溢出的数据只会破坏程序数据,造成意外终止。但是如果有人精心构造溢出数据的内容,那么就有可能获得系统的控制权!如果说用户(也可能是黑客)提供了水——缓冲区溢出攻击的数据,那么系统提供了溢出的容器——缓冲区。更正式的定义:程序企图在预分配的缓冲区之外写数据。2.DD

2022-01-06 20:54:30 3824

原创 《如何撰写和发表SCI期刊论文》阅读笔记

一.SCI论文的格式和整体构思现代的SCI论文的结构一般包括三个核心部分:引言(Introduction)、主体(Body)和讨论(Discussion)。目前,最常见的格式是IMRaD格式(Introduction,Method,Result and Discussion),这使读者能够按照合理的思路获取具体的信息,知道从稿件的哪个部分去了解某一特定结果。SCI论文的格式写作要点AbstractWhat did I do in a nutshell?Introduciton

2022-01-05 22:39:56 1161 1

原创 Linux安全模块(LSM)学习——推荐一个非常好的博客

0.网址博客地址该博客基于linux 5.10.17,含有三个lsm demo,难度为递进顺序,作者展示了其如何逐步完成一个有实际使用价值的简单的lsm demo。1.Whitelist demohook函数由于是第一个demo,所以只用到了一个hook函数bprm_check_security,该函数在exec()时被调用,返回值为0时允许执行二进制文件,返回值为负时会拒绝此次调用。原理不加载未知的二进制文件,未知这里被定义为无扩展属性security.whitelisted,即只允许存在扩

2021-12-01 10:51:18 1219

原创 Linux安全模块(LSM)学习——简单的LSM demo(2)

一. 实验目的在初步熟悉LSM的基础上,仿照SMACK的编码风格,复现Pindown模块(https://github.com/node3/Linux-Security-Module)。二. 实验环境本博客用到的linux内核版本为4.19.163,若版本不同则需要对代码进行部分修改。三. 实验原理和工作流程实验原理:该实验将二进制文件的路径与被保护文件的路径相关联。二进制文件的路径被存储在被保护文件inode的扩展属性xattr中,当一个进程尝试访问文件时,在调用exec()时,会加载已存储

2021-11-23 22:04:19 1904

原创 Linux安全模块(LSM)学习——简单的LSM demo(1)

设计基于LSM的安全模块1.确定需要hook的函数2.对hook函数进行填充,添加自己的逻辑(安全检查)3.添加到在security_hook_list的数据结构里4.对这个有注册逻辑的函数进行注册1.确定需要hook的函数:这里我们希望在创建进程时进行**“额外的安全检查”,所以需要对task_creat()**进行hook1.用户创建进程需要调用系统调用 sys_fork()/sys_vfork()/sys_clone()2.sys_fork()等函数中调用 do_fork()3.do

2021-11-13 10:52:46 5273

原创 Linux安全模块(LSM)学习——SMACK

0.概述SMACK(Simplified Mandatory Access Control Kernel)的机制是类型增强(Type Enforcement),而没有去更贪心的实现基于角色的访问控制和多级安全,所以将其作为第二个学习的模块。类型在SMACK中的具体体现是label,定义一个策略(规定主体可以对客体进行什么操作)的格式为subjectlabel objectlabel access结构体cred中的security指针会指向SMACK定义的数据结构task_smack的一个实例。

2021-11-11 16:50:22 4944 2

原创 Linux安全模块(LSM)入门及Yama源码分析

LSM是什么由于Linux内核开发中安全人员的边缘地位(误),安全模块并没有并入主线,而是作为单独的模块存在。LSM的设计思想是在最少改变内核代码的情况下,提供一个能够成功实现强制访问控制模块需要的结构或者接口。LSM对内核主要有5处改动:1、在特定的内核数据结构中加入安全域;2、在内核源代码中不同的关键点插入对安全钩子函数的调用3、加入一个通用的安全系统调用4、提供了函数允许内核模块注册为安全模块或者注销5、将capabilities逻辑的大部分移植为一个可选的安全模块LSM机制之所以简单

2021-11-03 22:08:05 5682

原创 网络安全——技术与实践(第3版)课后题答案

第八章:密码协议1.计算机网络中使用的好的通信协议,不仅应该具有有效性,公平性和完整性,而且应该具有足够高的安全性。 通常把具有安全性功能的协议称为安全协议,安全协议的设计必须采用密码激素,也称作密码协议。2.为有效地防止中间人攻击,在密钥交换协议中应采用数字签名技术。3.密钥建立协议主要分为采用单钥体制的密钥交换协议和采用双钥体制的密钥交换协议。4.Diffie-Hellman算法的安全性是基于在有限域上计算离散对数的难度,可以用作密钥交换。5.密钥认证分为隐式密钥认证,密钥确证和显式密钥认证三

2021-09-08 17:16:14 13182 1

原创 数据库系统——考前回顾

教材:《数据库系统概论》(作者:王珊等)1-5章应该不是主要内容,先从第六章开始回顾。在读本文的朋友,我想如果你能跟着我的思路顺下来,那么您对本书应该有了一定的了解了。第6章 关系数据理论首先是函数依赖(完全函数依赖,部分函数依赖)和多值依赖。然后学了范式的概念,以及判断范式级别的方法(2NF,3NF,BCNF)。然后学了数据依赖的公理系统,并使用这些定理求闭包和属性集关于函数依赖集的闭包。第7章 数据库设计概述数据库设计是指对一个给定的应用环境,构造优化的数据库逻辑模式和物理结构,并据此建立数据

2021-06-22 21:37:28 173

原创 SDTE: A Secure Blockchain-Based Data Trading Ecosystem论文阅读

本文介绍了一个安全的数据交易生态系统,并提出了一种新的基于区块链的数据交易生态系统(以下简称为SDTE)。在生态系统中,数据经纪人和买方都无法获得对卖方的原始数据的访问,因为它们只是访问他们所需的分析结果。实验基于Ethereum和Intel的软件保护扩展(SGX)。发展现状及不足为方便交换数据集,近年来,作为卖家和买家之间的桥梁,数据交易平台发展飞速。例如:贵阳大数据交易所http://www.gbdex.com/website/我国乃至全球第一家大数据交易所, 贵阳大数据交易所发展会员数目

2021-05-30 17:33:37 1831 2

原创 初次体验eEVM

环境配置1.github上下载EVM2.解压到指定文件夹创建build文件夹,作用是保存编译后的结果mkdir buildcd build编译cmake ..make编译成功后的build文件夹里会有对应的可执行文件erc20这个是执行智能合约,所以必须要有对应的json文件总结:配置了eEVM的依赖环境cmake3.16,并成功运行体验了eEVM的三个例子,接下来将通过阅读代码,试图改写这三个例子。...

2021-05-07 11:06:40 374 2

原创 SGX入门

如何设计SGX程序:SGX分为可信部分和不可信部分,可信部分由enclave组成(一个应用程序可以拥有一个或多个enclave),enclave存储在加密的内存中,受SGX保护,enclave一旦被建立就不能更改,所以通常认为是可信的,如果被恶意篡改那么enclave便不会加载。非可信部分指不受SGX保护的内存和应用程序。设计一个SGX程序要求将代码分成不同部分,首先应判断哪些代码应该放到enclave,哪些不用,以及他们之间的交互。1.确定机密信息。机密信息指不希望除处理它的程序外被看到的信息。2

2021-04-08 18:31:45 1947 5

原创 网络系统实验:ping不通的问题解决

今天在做网络系统实验时突然出现了ping不通的问题,这里记录一下解决问题的思路,希望能帮到别的出现此问题的人常规思路:1.检查防火墙是否关闭2.ipconfig查看ip地址是否改为同一网段3.可以尝试网线直连,看是否为程序或交换机的问题4.换几根网线,看是否为网线的问题我们在尝试网线直连后发现连网线直连都ping不通!最后发现是此处的配置网络发现没有打开打开之后重新打开cmd,发现这次ping通了!但是过了一会又ping不通了,再次打开此处,发现网络发现又自动关闭了!最后是在此处开启DDS

2021-04-06 16:09:37 2579

原创 面试好文推荐

https://www.cnblogs.com/JavaArchitect/p/7586949.html

2021-03-07 11:18:24 214

原创 shell脚本实战——处理批量化执行程序

项目的代码一次只能处理一个音频数据,原实验设置是选取了100个数据(实际上我感觉还有些少了),如果一直手动输入,一来你要一直等着他跑代码,跑完马上输入下一条指令(是不是很呆?),二来反复输入数据手不酸吗?shell脚本可以帮助我们自动的执行一些重复的指令我的实验是将100个音频数据分为10组,每组要隐写的信息都不相同,我想将每一个组的输出放到一个文件夹内(便于对比而且不会显得太乱)最后写出来就是这样。简单解释一下每行:先定义一个i,初始化为0然后定义一个数组t,里面包含着十个待隐写的短语对

2021-01-19 14:44:22 807

原创 shell脚本语言学习

因为项目需要批量化处理数据,而且实验室的服务器由于静电原因损坏(我人傻了),所以闲着也是闲着,不妨学习一下shell脚本的编写〇.shell脚本简介脚本(Script),是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,所以java,python以及shell都可以被称为脚本语言。与java,python不同,shell语言并不能作为正式的编程语言,因为它是在linux的shell中运行的,所以称为shell脚本。事实上,shell脚本就是一些命令的集合。假如完成某个需求需要一口气输入10

2021-01-19 10:55:54 349

原创 物理世界的鲁棒语音对抗样本(源码阅读笔记)下

这篇博客记录IJCAI19发表的Robust Audio Adversarial Example for a Physical Attack的源代码的Attack部分的阅读过程。Attack类有两个方法,init和attack。def init 是构造函数,用来定义实例的属性,在创建对象时自动执行def attack中实现对抗样本的生成(只有三个参数,self实例,输出路径,迭代次数)init方法init的作用:配置攻击过程,创建TF图以使用它来实际生成对抗性示例。这一串参数不明觉厉 de

2021-01-16 16:00:07 747 1

原创 物理世界的鲁棒语音对抗样本(源码阅读笔记)上

在看源码的时候感觉到些许吃力,写这篇博客是为了push自己坚持看完代码,该代码为IJCAI19发表的Robust Audio Adversarial Example for a Physical Attack的源代码,版权归作者所有。首先是导入相关库和函数,用了import和from import语句from __future__ import print_functionimport argparseimport mathimport osimport randomimport shuti

2021-01-15 23:34:11 658 2

原创 操作系统复习:文件系统实现

O.文件系统实现 课程大纲教学内容:文件系统结构,文件系统实现,目录实现,连续分配、链式分配、索引分配,剩余空间的管理。教学重难点:连续分配、链式分配、索引分配,剩余空间的管理,集中分配方式的及优劣比较。教学要求:理解文件系统实现方法。一.文件系统结构为了提供对磁盘的高效且便捷的访问,操作系统通过文件系统来轻松地存储、定位、提取数据。文件系统帮助我们存储,定位,提取磁盘上的数据。文件的定义:逻辑存储单元具有名称的相关信息的集合文件系统驻留在外部(二级)存储(disks)上文件

2021-01-15 21:37:16 300

原创 操作系统:内存管理

O.课程大纲第八章、内存管理教学内容:逻辑与物理地址空间,覆盖、交换技术,重定位技术与基本内存管理,各种管理算法及应用,多重分区管理和动态分区管理,分页存储管理、分段存储管理、段页式存储管理的虚拟存储管理及应用。教学重难点:逻辑与物理地址空间、重定位技术与基本内存管理、重分区管理和动态分区管理、分页存储管理、分段存储管理、段页式存储管理的虚拟存储管理及应用。教学要求:理解和掌握内存管理方法。一.逻辑地址和物理地址1.逻辑地址源程序经过编译、链接以后,其中的符号地址就会变成数字式的逻辑地址

2021-01-15 21:37:03 567

原创 操作系统概念:虚拟内存

〇.教学大纲教学内容:虚拟内存的概念,请求调页机制,进程创建之内存映射,case study-Windows内存映像文件,页面替换算法,页框分配策略,case study-Linux中内存的分配和回收。教学重难点:虚拟内存的概念,请求调页机制,页面替换算法及性能评价。教学要求:理解和掌握虚拟内存及请求调页机制。由教学大纲可以看出,这章主要内容就是调页机制,本章实验和作业也都是相关内容。一.虚拟存储器的定义虚拟存储指仅把作业的一部分装入内存便可运行的存储管理系统,通过作业各部分的动态调入和置

2021-01-15 21:36:46 175

原创 python程序设计:类和继承

一.类和对象在python中,类的建立使用class语句,python中的所有数据类型都可以视为对象,自定义的对象数据类型就是面向对象中的类(class)的概念,类是具有相同属性和方法的对象的抽象化。类不代表具体的事物,而对象表示具体的事物。class语句:class Myclass(object):def infor(self):print(“this is a class”)注意:1.类名的首字母一般大写2.object表示该类是从哪个类继承下来的3.类的方法至少有一个参数self,s

2020-12-27 22:40:08 383

原创 操作系统期末复习:磁盘调度,进程调度(简单题)

磁盘中文件的访问时间有以下两个主要部分寻道时间:磁臂将磁头移动到包含目标扇区的柱面的时间。旋转延迟:磁盘需要将目标扇区转动到磁头下的时间。寻道时间可以近似的用寻道距离来表示。本节中学了以下几种磁盘调度的方法:1.FCFS调度(最简单)先来先服务,按照请求顺序访问每个扇区2.SSTF调度最短寻道时间优先算法(shortest-seek-time-first),其实是贪心的思想,每次都优先访问离当前磁头距离最近的请求。缺点是容易饥饿。(类似于SJF,我之后也会把作业调度的内容更新在这篇博客中)

2020-12-24 20:16:59 1251 1

原创 python音频处理

准备工作:首先,我们需要 import 几个工具包,一个是 python 标准库中的 wave 模块,用于音频处理操作,另外两个是 numpy 和 matplot,提供数据处理函数。一:读取本地音频数据处理音频第一步是需要从让计算机“听到”声音,这里我们使用 python 标准库中自带的 wave模块进行音频参数的获取。(1) 导入 wave 模块(2) 使用 wave 中的函数 open 打开音频文件,wave.open(file,mode)函数带有两个参数, 第一个 file 是所需要打开的文

2020-12-22 16:47:16 9803 4

原创 LFSR python实现

一.LFSR部分(线性反馈移位寄存器)LFSR的优点:a.非常适合硬件实现b.能产生大的周期序列c.能产生好的统计特性的序列d.能应用代数方法进行分析实现思路:a是n个寄存器(状态)c是种子密钥,对应着a的系数输出是a1&cn迭代方程为:ai(t+1)=ai+1(t)(i=1,2,…,n-1)an(t+1)=Σ(ci*an-i(t))class LFSR(): def __init__(self, c=None, a=None, lenc=0): #c是开关(系数

2020-12-21 19:51:29 3413

原创 信息安全数学基础(七):运算和群

映射:设A和B是两个集合,R是A和B的元素之间的对应关系,如果R满足:对于A中的每一个元素,通过R在B中都存在唯一一个元素与之对应,则称对应关系R为从A到B的映射。其中A称为原像集,B称为像集。集合A有a个元素,集合B有b个元素 。则集合A到集合B的不同映射有ba个(a轮,每轮b种选择)注:这里可能会出道填空题设S是一个非空集合,S×S到S的映射f叫做S的运算(二元运算);称S是具有运算的集合。运算的性质:设S是一个具有运算 “·”的非空集合。1.结合律如果对S中的任意元素a, b, c都

2020-12-20 17:05:48 1060 1

原创 信息安全数学基础(三):同余式

同余式对应着之前学的等式设m是一个正整数,f(x)为多项式f(x)=an * xn+…+a1 * x+a0则f(x)=0 (mod m)叫做模m同余式若an!=0(mod m),则n叫做f(x)的次数,记为degf,此时上述同余式又称作模m的n次同余式。在模m的完全剩余系中,使得同余式成立的剩余个数叫做同余式的解数同余式求解的基本思路(1) 求解归约( f(x) (mod m)<= f(x) (mod pα)<= f(x) (mod p))说实话没明白什么意思,应该是难度从右往左

2020-12-19 19:42:52 2283 2

原创 信息安全数学基础(四):二次同余式与平方剩余

一.平方剩余设 m 是正整数。若同余式x2≡a (mod m ) 且(a, m)=1有解,则 a 叫做模 m 的平方剩余(或二次剩余);否则,a 叫做模 m 的平方非剩余(或二次非剩余)。是否有解,就看b2-4ac+m*k是否为平方和,但是通常很难用这种方法判断,尤其数很大的时候,所以就有了欧拉判别条件:设p是奇素数,(a,p)=1,则a是模p的平方剩余的充分必要条件是a(p-1)/2=1(mod p)a是模p的平方非剩余的充分必要条件是a(p-1)/2=-1(mod p)并且当a是奇素数

2020-12-19 17:25:15 1867 2

原创 操作系统:文件-系统接口

一.基本概念文件是具有符号名(文件名)的一组相关元素的有序序列,是一段程序或数据的集合。文件系统包含文件管理程序(文件与目录的集合)和所管理的全部文件,是用户与外存的接口,系统软件为用户提供统一方法(以数据记录的逻辑单位),访问存储在物理介质上的信息。文件为外部信息存储提供了统一逻辑接口,文件是逻辑外存的最小分配单元,即数据除非在文件中,否则不能写到外存即,内外部信息的交换存储是以文件为单位的。打开文件open(Fi)对应着:在磁盘上的目录结构中查找Fi,并将其内容复制到内存关闭文件close(

2020-12-18 15:15:32 359

原创 inter处理器芯片的史诗级漏洞

上课的时候又有老师提到x86架构下有一些漏洞,搜索之后发现正是这两个老熟人,重新了解之后,这两个实际上都是缓存侧信道攻击。基于缓存的侧信道攻击原理:缓存通过数据共享来加快数据访问,所以缓存命中与失效对应的响应时间是有差别的,攻击者可以利用这种时间的差异性来推测缓存中的信息,从而获得隐私数据。一.Meltdown(恶意数据缓存加载)软件世界的一个基本安全原则就是用户空间的代码(平民阶层,低特权)不可以访问内核空间(管理阶层,高特权),而meltdown和spectre漏洞之所以称为史诗级漏洞,就是因为他

2020-12-18 11:24:50 358

原创 信息安全数学基础(五):原根与指标

一.指数及其基本性质1.指数和原根设m是大于1的正整数,a是与m互素的正整数,则使得ae=1( mod m)成立的最小正整数e叫做a对模m的指数,记作ordm(a)。如果a对模m的指数是m的欧拉函数值,则a叫做模m的原根。2.指数的基本性质类似于周期序列u的最小周期p(u)设m>1是整数,a是与m互素的整数,则整数d使得ad=1( mod m)的充分必要条件是ordm(a) | d推论1:设m>1是整数,a是与m互素的整数,则有 ordm(a) | oula(m)即m的欧拉函

2020-12-17 20:07:18 4483 3

原创 信息安全数学基础(二):欧拉函数

这篇博客将复习欧拉函数的定义及性质,然后给出三个关于欧拉函数的重要定理,最后介绍一种加速平方运算的方法(模重复平方计算法)一.欧拉函数的性质定理:设m1,m2是互素的两个正整数,如果k1,k2分别遍历模m1和模m2的简化剩余系,则m2k1+m1k2遍历模m1,m2的简化剩余系所以对于欧拉函数:设m,n是互素的两个正整数,则f(m * n)=f(m)*f(n)欧拉函数值的计算:f(m)=m * Π (1-1/pk)对于素数的幂次,其实就是f(pn)=pn-pn-1二.欧拉定理设m是大于1的

2020-12-17 19:33:44 1571

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除