00:01
那咱们上节课给大家讲的内容呢,是偏理论化的啊,这个操作比较少,那呃,今天的内容呢,就是实际操作就比较多了,要结合我们前面给大家讲的这些加密理论啊,啊把各种加密的技术如何在生产中使用,那我们今天会涉及到确实有很多重要的内容。呃,咱们上次讲到了这个SSL协议,当然这个是老的名称了啊,呃,目前名称叫TS啊,因为这个习惯啊,所以SSL也非大家所使用比较啊常用。那实际上早就名称变成了了,那这两个呢,我们认为是同一个东西。
01:00
那TLS呢?它是实现了一种加密身份验证、数据完整性校验的完整的一个协议。那这个协议呢,可以保证数据的安全。当然单单T协议。实际用处不大,都是要配合应用层协议来保护应用层协议的。一些安全性。啊,那比方说我们平常用的HTTP协议。这个协议呢,本身是不加密的。所以我们可以配合TR协议。形成的新协议叫HTPS啊。
02:02
那通过HBS。它实际上可以等价于TL协议加HTTP协议。这个有噪音吗?有杂音吗?刚才李威我看说是有杂音。之前把那个音量调大了点,稍微有一点是吧。那那个桂圆上次是调哪了,稍微给他调小一点点,上次是不是调的稍大了点,有点杂音是啥?咱们先试试喂,现在现在怎么样,哎,现在是不是好多了,现在好多了,好,那就这样啊。嗯,郝总那边听不清了,吱一声啊。
03:08
然后坐在后面的同学啊,这个调大的话有杂音,调小了吧,这个后面听不清,嗯。好,那今天呢,我们就来看一看这个TR协议它的一些具体实现,我们在上次呢,给大家讲了一个叫open s SL的一个项目,那这个项目里面呢,它开发出来一些相关的软件啊,可以帮我们来实现这些加密啊,啊这个完整性校验呢,啊,包括还有什么所谓的这个签名啊,这些功能啊,它都能实现,那这个工具我们默认系统已经装好了,那上次我们提到了这个命令呢,有一个命令行的工具啊,叫open s SL。那这个工具呢,可以来实现很多功能啊,大家可以看一下,你看我们可以用open s套命令来实现对称加密呀,哈希算法呀,生成加密的口令啊,生成随机数啊,用它来实现证数啊,这都可以,所以这个命令功能非常强大,那但你讲这个加密之前,咱们先来说一说BASE64编码,这个BASE64编码是我们工作中啊接触非常多的啊,不知道大家有没有印象,上次我给大家啊看了一下什么叫公钥私钥,呃,有两个文件,当时我就说了,他这个实际上并不是真正的公钥私钥,他是用被六四编码转换过的结果。
04:40
大家有印象吗?哎,那什么是B64呢?那我们今天来给大家说一说,那B64在系统中用的非常多啊,刚才咱们说了,你像这个目录里面有很多公钥、私钥这些文件,实际上都是用BASE64来表示的,那这个倍六四呢?所谓倍六四实际上就是64个常见字符。
05:09
大家看这里面没有乱码,那没有乱码,那显而易见,它不是阿斯格码,我们都知道阿斯格码里面是有一些不可见字符的,大家知道的。20个码,128个字符,是不是有一些是不可见字符啊,而这里面只有64个。那这哪64个呢?实际上很容易理解,这64个就是我们平常用的最多的ABCD26个字母,当然又分大小写,那26乘二,那是不是就已经是52个了,52个吗?那大小写字母嘛,对吧,那再加上数字十个多少个了?62个了,还差俩,差俩啥呢?加号和斜杠。哎,这样的话就凑成了64个字符,而恰恰这六个字符是可见的,也是我们用的非常多的,那么由于这64个字符是可打印字符,可见字符,所以我们用它来存放那些有可能造成乱码的数据。
06:15
把它转化成64个可打印字符,将来再保存的话,那显示见就不会存放产生乱码了。那这就是64它的逻辑所在。那么它是怎么来把我们使用的平常用的这些,呃,有可能是不可见字符或者可见字符转化成64位的,就是64个这样的可见字符的编码呢?那它的转换过程,呃,也比较容易理解,那我们来看一下它的转换过程。首先。先把你的这个要转换的字符以三个字节为单位取出来。
07:00
比方说,你的字符有十个。假设一个字符占一个字节,那就是。十个字节,这十个字节我们要把它分成三个字节,三个一组,三个字节一组。啊,当然,那么因为我们是十个字节,你分三个一字节一组,它分不整,那么只能分成三个整个三字节再多出啊还不到一个字节来,就不到一个整的三个字节来。那这个不到整的,我们先不说它,我们先看把三个字节的字符。怎么转换成被六四?那大家可以看到,这就是转换过程,这边有个例子啊。啊,我们这儿有一个英文字母。组成的单词叫慢,那就是男人的意思是。那么单独到慢,它对应的实际上是个。
08:03
可以把它转换成二的编码。20个编码。M是大写字母,那对应的这个二编码是77。这十进制的,那当然这个东西你要记不住也没关系啊,我们查一下不就行了吗?对吧?啊,咱们这个man ask这里面是不是就写的非常清楚,你像我们这个MM是不是就是77。对吧,这不十进制嘛,当然你要说前面是八进制,后面是16进制,中间这个是十进制,对不对啊十进制啊,所以呢,慢就转换成了77的十进制。那同样方法A小A字母是97。N。对应的是一百一啊,一百一啊,这个地方可以来验证一下,小A97对吧,NN是一百一没错吧啊。
09:02
然后我们这是十进制,那最终我们都是计算机处理都是二进制的,所以我们把它转换成二进制。那么七十七二进制就是这个。啊,大家看这个计算。77的二进制,注意二这个码理论上它应该是。存成了七七个位。但是我们一般都按八倍来存。说是七位,实际上是八位来存,那八位来存的话,那么不足之位。那就是凑零嘛,对吧,凑零。所以77他的阿斯克码转换成这个所谓的二进制就是这个事了。大概这个没错吧,这个这64吧,64再加这是几啊,13吧啊,这个不是就是841是不是加起来吗?加起来就是那个77,当然这个不足八位,咱们得凑凑八位啊,所以得写个高位的零凑起来整八位。
10:12
那这就是八倍的。M了,那同样的方法,再把97也拼成二进制,110也拼成二进制,变成这个样子了。变成这样以后,我们接下来要把它转换成。倍六四,那怎么转呢?大家看B64 B64它只有64个字符。那么64个字符,如果我们想用二进制来表示64个字符,我们只需要占用几位的二进制就可以表达表达64种组合,二的几次方啊,二的六次方是不是这道理啊,二的六次方不就是60次吗?所以我们是不是用二进制的六位就可以表表达64个字符,所以呢,你看这个图表示的就是这个意思,当然它写的是十进制啊,啊,你看这个零对应的是A啊,一直到六十四六十六十三对应的这个斜杠。
11:11
但是最终还是要把它二转换成二进制的,那接下来问题就是我们接下来要转了,那么怎么转呢?刚才我们已经有三个字节,三个一组,三个字节一组组成了,这是24位,大家看是不是24位啊。嗯,八个八个位一个字节嘛,这不先在三个字节嘛,是不是啊,但是我们要转换成64,所以我们就得三个这个字节组成24位以后把它按照六位来分。六个位来分,怎么分呢?哎,从这分前六位拿出来,再拿64位,呃,六位再拿六位,大家想是不是就分成了四个部分的六位,好分出来以后,那我想大家应该从明就想到了这个是不是按照刚才的这个被动词编码表就查呗,它是几啊,它是19。
12:07
那19查出来对应的就是T嘛,啊,这个这个你可以看一下上面的表啊,你看19是不是T。是不是T啊,哎,那同样道理,这个是22,对应的是W,哎,这个是5F46,那最终转换出来就是TWU,明白了吗?就这个结果就这么来的啊,当然我们要验证这一点呢,咱们有个命令,这个叫B64,这个B64呢,它是可以来实现编码转换的啊,这个是个命令啊,它有个专门的命令叫B64啊,如果你想要转换,直接敲慢。诶,这个地方怎么转换出来的结果不像我们想象那样只有TWU,怎么多出一个CG杠杠等等,那这是因为我们刚才敲的时候是回车也算字符,回车符它也要转换的。
13:07
啊,那如果说你不想拿这个回车,那你就把那个回车去了。慢,这是不是现在就没有回车了。是吧,这不换行嘛啊,不换行啊,然后你再用这个,这就是纯粹的那个慢了,那你看它最终转换的是不是就是这个了。当然这是理想状态,我们刚才是把人家三个字节拿出来,三个字节拿出来,这不整三个字节来处理,那问题是人家有可能不是正好三个字节,那比方说万一我就俩字节呢?那万一我就两个字节呢?对不对,那马那那个马不就俩字符吗?俩字符一个字符二个码占八位,是不是才十十六个呀,那不够啊,那不够不够添零吗?不够添凑凑零吗?啊怎么凑零啊啊,我想那你应该知道,那你像这个码的话,是按照刚才这个二斯克码的编码,M是多少来着,呃,七十七七十七是01001101是这个吧,啊然后A呢,A是九十七九十七实际上是97,这97就是64加32加一是吧。
14:30
是吧,啊,那就是01100001。是是这个吧。啊,你们盯着点儿啊,我这数学不一定。很精通啊。好,那这不就分成两个字字节了吗?两个字节以后,我们刚才不是说了要分成六位,六位一组,所以我们是不是要开始把这六位取出来,取出来这是不是前六位,然后这是不是中间的六位,那后面这个后面不够不够,不够没关系,填零啊,凑零啊,但是呢,我们这个零是凑出来的,它本身不带俩零,它没有零,这俩零是凑出来的,所以这个我们如果按照阿格码,就是那个被六字编码,这是四是吧,这是不是四啊,四的话呢,你看这个这个方是几啊。
15:33
是E是吧,是不是E啊,是E,那这个E的话呢,它不是真E啊,这个你这俩零是凑出来的,所以呢,为了表示你是凑出来的E添个等号。等号就表示你这个不是争议,你是凑出来的,那当然前面这东西呢,就简单了,这个是多少啊,这是16加三是不是19啊。
16:00
是这样吧,啊19,那19查查这个19是多少,呃,T对吧,T。这就是那个T,那这个是多少。16加,呃,16加加六吧,22是吧,22啊,那22呢,看看这个表,22是多少。22是W。啊,We,好,那最终结果呢,就变成了TW,等于听懂了吗?这就是它的结果,你记住了,不凑全了,它就会出现等号。当然,那这个结果是不是这样呢?那事实上咱们刚才不是已经转换过了吗?你看这个结果是不是就是这个样。哎,那现在请问大家什么情况下会出现等号,什么情况下不出现等号,你现在能不能总结出经验来,那啥经验一句话。
17:01
一句话,一句话怎么总结?啊,那这小小的数学啊,实际上就是小小的数学。呃。小学数学一句话总结一下,什么时候会出现等号,是不是就是凑不整,啥时候凑不整啊,就是不能背整八个整二四位,也就是三个字节。不是整三个字节就会出现等号。那当然什么时候不是整三个字节呢?嗯,你为什么它不是三个字节呢?因为我们这是,呃,我们的背六四十六位,你的字节是八位,六和八的最大公约数,最小公约数啊,是不是就是这个24。也就是说,我们必须是24的整数倍,说白了必须是24位的整数倍,就是三个字节的整数倍,才不会出现等号的现象,否则就会有等号,听懂了吧?啊啊,那那现在咱们就搞清楚了,闹了半天你再来看以后你看这些东西就很敏感,发现这不就是贝六四吗?
18:20
因为它不就是abcd字母,再加上比如说下这个斜杠加号,有时候可能会出现等号吗?对不对,不就这些吗?那这就是倍六四。当然有人说那被六四这个算加密吗?这是不是加密,这是加密吗?哎,你说这个东西是加密了吗?哎,我这私钥,我这私钥,我们说私钥一定要保护好,但是这个是加密吗?这不是加密啊,费六四只是换了个转换存放形式,那你把它用公式一换,它不也就找到它的那个真正的值了吗?对不对啊,这个东西是可以反算回来的啊,你看这个地方我们还可以用倍六四,我记得有一个什么反向的一个计算啊,叫什么来着?诶有一个杠D-D就是把它反算回来,可以就转换成他原来的阿斯格码,理解了吗?这是可以转回来的。
19:19
所以这不是加密啊。啊,大家看起来一般不懂,可能觉得诶这乱七八糟的。那实际上这不算加密是吧,不算加密。啊,我们顶多叫贝六四编码是吧,我没说是加密啊,为什么加密。好,那被六四这个呢,大家就搞清楚了啊,搞清楚了,那那这个正好这个之前也有一个用贝六斯转化过的。同学们,你可以想象一下这个东西给你们发一下啊。发的家不让放。
20:01
这个说太长了。发了发了一半。我凑起来。我我这没登录QQ啊,分分成两部分凑起来了啊,他说太长,这个腾讯课堂这个聊天工具真是不行,好多符号打不出来是吧,竖线还打不出来。那这个你们可以。想想哎,怎么破解啊,这个下来你可以自己玩一玩。破解了,有些惊喜啊。小红花儿是吧。啊,当然这个实际上谈不上破解,这就是个转换嘛,对吧,转换。
21:01
这于在要。好,那这是咱们给大家讲的这个,你你们你们你们呃,如果说转换完了啊,自己可以呃私藏一下啊,不要分享,不要分享。啊,自己转啊,自己玩一玩。好,那接下来呢,我们来看看open s SL,诶这个工具,这个工具我们上次也提了啊,它的这个用法呢,呃,非常丰富,它可以交互式方式来运行,你看这里面它本身是个交互式命令,也可以非交互式方式运行。
22:01
那非交互式方式呢,就是直接把这个命令写在后面,直接后面跟东西跟这些命子命令就好了,这两种执行方案,那当然你要写在脚本里面,那肯定用应该是用非交互式方式了。对吧,哎,非交互式方式。那这个工具功能非常多啊,它可以分成有标准命令。你看这边有标准命令。有。摘要,也就是哈西。呃,摘要就数字签名啊,数字签名这是加密的相关的,所以他这有多种啊命令。这是哈希啊,这是哈希,你看MD5啊,这些哈希算法,不过这个版本不同啊,这里面需要注意这个命令的版本不同,它的用法还是有区别的,你看这个S7上面我敲help啊,你看它这就报这个错,他说help不是有效命令,而在八上面他就可以,所以这个版本之间是有差别的。
23:19
而且呢,大家看森斗七上呢,比较麻烦在哪呢?我们最目前非常常用的哈希算法SHA512加密算法竟然没有看到没,是不是没有啊,竟然没有啊,所以这个也是个很大的遗憾了,在三八上当然也也有了啊,人家这个有512,所以在七上啊,这个确实也是一个比较讨厌的地方,七上既然没有提供一个能生成SA512的。加密的密码的这样的一种方法啊,但是他这个地方有没有自己的这个512的啊,这个哈希算法的工具,这是有的啊,但是他这个open派里面是没带没有带,那你要是做哈运算,你就用这个命令吧,这。
24:14
啊。那下面咱们把这些命令的。一些常用的用法来说一说open SL,它能做很多功能,比方说来加密。那加密的话呢,呃,用的就是这段这段功能啊,他这个告诉你了,说看ec的命令帮助ec,那实际上也就是意味着你要去看他的帮助你敲ENC。那这个地方比较奇怪啊,就是我们一般看一个命令,帮助不都是写这个命令吗?但这个地方写的是enc,那他这写了enc,你看帮助得看这么这么看,大家看是是不是组合成了一个完整命令,但你看帮助你不是敲OPS的时候看啊,是看ec。
25:04
哎,然后这里面就有一些不同的选项。那这个ENC可以实现呃,加密啊,你像这边有例子。加密的时候我用哪种加密算法,上次咱们说过对称密钥加密算法有DS呀,3DS呀,什么AES对不对,那它这个地方用的就是。D3,那就是。他写成了D3啊,实际上是3DS的意思。然后对什么文件进行加密,那加密完了以后生成的文件叫什么?当然加密的时候呢,我们为了安全,可以在加密的时候故意的加盐。这个盐,相信大家记得什么是盐呀?那就是添上盐以后就不是有味儿了嘛,对吧,要不大家都会都一样啊,最典型的就是咱们的口令,我们都知道Linux里的用户名密码口令不就在放在这个shadow文件里吗?如果我们直接把密码加密完了。
26:14
放在这儿。虽然说你看到这个加密的结果,你破解不了它,但是由于有可能两个人用的是同一个密码,那么同一个密码你如果用相同的加密算法加密完了,那当然这个地方肯定是一样的。所以这样的话就会暴露了,让我们用户一看啊,这俩人密码一样,为了避免这种情况的发生呢,哎,我给他加上盐,那盐在哪呢,就这段。就是让你这看到的时候呢,因为加了盐,你不会直接看清楚,他俩密码一样不一样啊,当然这个并不是说特别特别安全,因为盐这个东西公开的这是盐,实际上你拿到盐以后,你可以把这个原来的这个,你只要保证盐一样,它的数据就可以看出来是一样的。
27:06
啊。这是可以算出来的,但是至少从表面上还是有一定的安全性的,所以它这个地方是加盐。啊A呢,是表示以被子六四来保存加密的结果,因为你要不不不加密完了以后,你不加杠A它又乱码了,就这个文件成了乱码了,你备六次编码保存,是不是就不会出现乱码。对吧,啊,那这就是刚才咱们看到的命令的一个用法。啊,在这边我们可以看一下,它这边有说明啊,你看A就是那个B的六次代码。啊。然后这个so,就是生成盐啊,生成盐,当然你也可以用杠S来指定盐也行啊,那咱们来试一试这个加密啊,比方说啊,我就拷一个文件过来,把这个文件来加密一下。
28:09
Open sce nc-E是加密,S3是三三,DS3的加密算法,当然这里面除了这种加密算法,应该也有别的算法啊。还有很多的好,那我就用这种加密算法了。然后杠表示以。备六四编码形式来保存延延的话,让它自动生成啊去加密哪个文件呢?啊加密这个test,那输出的时候生成的文件什么,如果你不输出,你看你输入口令输两遍,你看这不就是输出的结果,它没有保存到文件里啊,你看这个是不是显示一见就是贝六字编码的。对吧?啊,那当然我们还是希望保存到文件里,他说test是被加密的啊,输两遍口令123456123456行了,那这个文件呢,就安全了。
29:11
啊。啊,当然他这个地方说有一个什么过期的K的一个这个一个技术啊,觉得有点不安全了啊,建议加上这两个,那这个是加密算法内部的问题啊,那我们来看一下这个ENC文件就生成了啊,啊当然那你要说这个文件跟咱们原来的文件比。大小差别不大。啊,差别不是特别大,但是确实是被加密了,那这个文件你要直接看就看不懂了,那要解密怎么解呢?那解密是D。D。加上地就好了。2D解密,把这个地方改成D。啊,解密的时候啊,其他的选项看一下是不是都是保留的啊,基本上保留的就就就这个地方变成D,然后输入的文件呢,这个地方变成加密文件,输出的话呢,我存到一个另外一个文件里去叫T2。
30:14
来输入他的密码,因为对称密钥,哎,已经解开了。那就解开了,看到吧,这是对称密钥的加密算法啊。呃,用它也可以实现。哈,计算法摘要啊,摘要dIgEst。那这个摘要呢,嗯,在渗透S这个八的上面,它支持的这个摘要算法比较多,七上比较少。那这个摘要算法,我们刚才在帮助里面看到了,他支持非常丰富的摘要算法这么多。那就是哈希算法。
31:00
那这个地方你可以用慢DJ来查看它的帮助,然后怎么去用某一种算法,你后面跟上就行了,比方说我们用这个目前比较主流的SSA,好,我们就用这个。S啊,HA512,那对谁来做呢?比方说我们就对这个文件来做哈希运算,那这就是他的结果。啊,当然这个哈希结果呢,我们和我们之前用的那个SA3实际上是一样的,因为只要哈希算法是一样的,它得的结果肯定文件如果内容一样,那是肯定必须一样了。啊,只不过就是它格式上的一样啊,你看最后这个F73是不是F73没问题吧。啊,就是哈希运算。
32:00
啊,当然这个刚才我们也说了这个S啊七的上面就没有这个功能,没有这个功能。没有这个512没有这个算法。好,那这里面呢,还有一些这个相关的其他的一些这个单呃技术术语啊,比方说Mac Mac呢叫消息验证代码,也是属于单向哈希算法的一种延伸应用啊,这边有一个h Mac是基于哈希算法的Mac。啊,你就认为就是你可以等价,就是哎,差异算法的一种应用,差异算法的一个应用,那事实上咱们这个地方讲这个s saa。你看他目前在三七上只有这么几个EA开头的,在三八上大家看是不是多了一些h Mac的东西,那这也是一串哈希算法。
33:05
啊,这算法不一样而已啊。也算是S512,但是它是一种延伸应用。而这个上次我们演示了一下,要sa赛,你要对同样的这个文件做哈新运算,那如果是一个是S5121个是s h Mac,它的计算结果不同,那说明它都是哈希运算,但是呢,它在这个算法上还是不太一样,算法上啊,换句话说是也是相当于512的哈希算法,但是算法不同导致它结果不同。那open SL呢,还可以用来生成用户口令,这个面试不就经常出一道题说诶,你给我创建十个账号,并且每个人设置随机口令,这都是经常出的。面试题写个脚本之类的,相信大家对这个脚本应该很轻松了,那问题就是我们怎么让这十个用户使使用随机口令对吧?
34:11
那之前我们讲的方法用什么方法。啊,之前我们用什么方法来生成随机口令吗?那写一下,我听不见你们说什么啊,打一下。我看大家是不是还有印象啊?在聊天框里头输一下,我看看,诶,对了,有同学想起来了。哎,挺好啊,挺好。哎,对。这个。
35:00
这都是咱们以前讲过的啊。啊,尤其这个TRTR这个方法不是用的非常多吗。那TR就是把随机数U。因为这它打印出来的结果有可能是乱码啊,所以我们用TR把那些所谓的不可见字符乱码删了,只留下可见字符啊,可见字符呢,就是数字加字母留下来。这个用一个就够了,叫number是吧?哎,这是除了数字字母以外全删。然后删了以后我们得留下多少个,也不是全要留下几个呢。C比如说留前十个,这是不是就前十个呀啊,你留前12个就是前12个啊,这可以当口令。
36:10
啊,至少你得背下来一种啊,这个面试题出这种你顺手就写出来了,对吧。啊,当然我们今天来给大家说一下,因为这个实际上我们之前讲过一个生成随机口令的。你们有没有印象?叫什么来着,MK?哎,对了,你看李关同学还聪明的记得是吧,其他同学就想不起来呀,MK pass这个这个工具是在哪讲的?MK pass WD。哎。就是安装那个expect那个包的时候,他装上的,呃,这个命令也可以生成,这个命令更专业,这个命令它可以告诉你生成的密码里面包括多少个什么字母,多少个字,呃,这个数字它可以进行定义它这个密码策略。
37:12
这个工具功能更强而比较专业。好,那我现在呢,给大家来说的是另外一个open SL这个命令,它也可以生成加密的口令啊,注意它不是生成随机的,是加密的口令。那这个命令part WD。尤其这个地方,可以直接指定用哪种哈希算法来生成。加密的口令六六指的就是512。啊,所以我们现在可以用这个方法,Open s c pass WD-六。后面跟上一个你希望作为密码的字符串就生成了。
38:10
当然。大家对对比一下,咱们get ENT。然而一王。这个王的对应的这个加密的这个口令呢,实际上也是用512加密生成的。啊,他的这个密码呢,是马格E丢,那我这也用马格edu来生成口令。那我们看到他和王的这个口令呢?并不相同。虽然都是马格一丢,但是口令生成的结果不同,刚才我也说了,原因是什么呢?因为盐,因为盐不同导致的。那盐要一样了,是不是就能一样了,对吧,因为密码一样了啊。啊,那盐怎么加盐呢?哎,这个地方有一个叫。
39:03
你可以用杠杠sort来指定盐啊,比方说你这不是这个这个呃,王账号,王账号他言不在这吗?那我把这个盐给它复制出来。呃,盐在两个刀之间,这就是盐啊。哎,把它复制出来,然后用刚才写的这个命令。然后指定sort盐,然后再指定杠六马哥edu。前面是多了一个看。你看和王的口令对比一下。密码一样了吗?一样了吗?一样了吧?眼一样了吗?
40:00
眼像你都说哪个,那当然就一样了。看到了吧。所以盐有好处哈,加上盐你不就看不懂了吗?实际上你要真那盐也是公开的,你把那盐稍微转换一下,所以这个盐只是一个简单的处理。并不是其他实际意义,不过有盐总比没盐强是吧?不过那这个命令呢?它由于可以指定加密生成的口令。而我们user and这个命令恰恰它有一个选项可以调用加密口令哪个呢?P?所以我们实际上还有一个更为简洁的创建用户口令的方法,就是把那个加密的生成的这串口令拿过来。
41:02
然后直接创建新用户,听懂了吧。那这是不是就省得我们在什么建账号再改口令了?第一条命令就搞定了。啊。啊,看看生成没确认一下先,哈哈,你看他的口令是不是就是我们现在试试的这个试的这个口令。没问题吧,那这个方法适用于乌邦兔。也适用于S。只要你能生成。这个加密格式的口令用杠P就可以来引用。咱们之前虽然给大家讲过那个。通过这种方式来改用户的口径。可以改吧,但这个命令我强调过,乌帮助不支持。
42:02
所以你将来工作中,如果你要乌帮兔批量改口令,你竟然用不了。那将来。你将来在面试的时候,你可以写人家说,哎,你给我创建十个账号,每个账号是呃,这个某一个指定的口令。当然不一定是随机的啊,某一个指定的口令,比方说都初始化成123456,那兔,那你就不能这么写了,那你将来在答案里面应该写上乌帮兔,用我们说的这种方法。渗透是用可以用这种方法是吧,而你一看,哎呀你厉害。什么版本之间差别都清清楚楚。我估计对面试官他肯定印象非常深刻,一般一般人不会这么答的,一般人答出来就不错了,他什么乌帮兔渗透出来。是吧?所以希望你们把这些细节都掌握好,将来给面试官一个非常好的印象。啊,说明你学的很很扎实。
43:02
细节上都知道。这个你们可以试试啊,那有有打开U邦兔的吗?你试一试这个命令能不能执行它这个U邦兔是不支持这个写法的,乌邦兔没有这个杠杠stdin这个选项没有,用不了啊,乌邦兔呢,改口令这个命令是可以的,但是没有这个,没有这个。最后帮图里面,如果你想用脚本来改人的口令。不好改了。因为我们都知道这个命令它本身是个交互式命令,对不对。脚本里边我们是不是希望用的是非交互式方式,而乌方朋友不支持这种非交互式的写法?对吧。所以这个就比较麻烦啊。所以让你说创建一个账号给这个用户,哎,那你就直接把密码给他生成,当然这个东西你要生成的话,怎么做呢?你可以先用我们刚才给他讲的这个,先用这个命令生成一个口令,它把它存到一个口令里。
44:16
变量里,然后再用user and-P调用这个pass来生成新的用户不就完了吗?啊,Get烟shadow,嘻嘻。是不是这个道理啊?这写脚本不就可以这么写了,那这是通用的啊。不过呢,这里面我还要强调一点啊,这个杠六。但奋斗七不支持啊,刚才看了奋斗七没有这个。四斗七没有这个杠六写法啊,没有这个杠六写法,在这儿可以查一查。
45:06
啊,它只有杠一-一用的是被淘汰的MB5,没有杠六,所以这个可以说467是比较尴尬的一个版本啊,你三斗有没有啊,三斗六人家有三斗六呢,有一个命令可以生成。生成MD5,那就是生成SA512的密码,还记得这个命令吗?这个命令可以你要输两遍,这是不是SC512对吧?那到了六这个就是MD512啊,带带六的这个就是。所以这个七的话做不到,没这个SA512的方法。那当然我们要想真的实现的话呢,也不是不可以,而我这边呢。可以用个Python程序,这是需要通过Python间接的方式来实现,这段代码可以生成。
46:08
一个马哥edu来用MD5加密过的最终密码来可以,不过这个需要调Python啊,这个你你看这个是Python代码,Python代码啊,这个它调用了一个Python加密库。然后来实现。啊,不过呢,这段代码你现在也不用看它。你把它将来想用的话。前两天就有一个同学问我说,老师,我们企业里面用367有没有生成这个SA512加密密码的工具?但是六有八也有,就七找不着,确实七没有,没有你有写Python是吧,写Python。那这个呢,把它存到一个比方说变量里啊,就大写字母好看一点,那然后你就user and是不是就最又可以用了,是不是这个道理啊啊比方说我建一个test账号啊,Get BT sa对吧。
47:21
这不就行了吗?啊,但是它这个盐会变啊,就是每次生成它会生成一个随机盐,所以这个就不一样。啊,这些呢都是,呃,不一定你将来。面试一定问你这种,但是工作中用到了,你知道怎么做了啊,就是这个三个版本之间有差别,再加上乌邦兔还是有差别。好,这就是我们刚才给大家讲的啊,呃,这个乌帮兔呢,呃,我这儿也有一个这个这个记录,看这是乌邦兔的,乌邦也支持这种写法,乌邦兔也支持这种写法。
48:08
不拍四笑判他不定,这都支持。啊,这个命令。这个命令。啊。这个命令是在ubtu里面和CS8里面都通用的,这个命令就是创建用户同时指定口令啊,这个地方指定了一个马格一丢。然后通过open pass d-六来生成一个。加密的口令。当然这个地方指定的盐。啊,设置了一个张账号建好以后呢,他的密码,他的口令实际上就是把丢。那这段话这个三八支持啊,3S8支持,但是三七不支持,七没有这个杠六的功能。
49:03
乌班兔也支持,乌班兔也支持。啊,当然这个U邦兔它不支持这个3S7不支持杠六,但是杠一支持啊,你也可以用杠一-一是MB5。MD5的一个目前来讲已经不安全了,已经被破解了杠一啊,你这指定一个密码,那这就是杠一啊。啊,因为它这个地方加了一个盐,所以每次都不一样,那如果你指定盐啊,指定了盐,你指定了盐,那当然就一样了,随便指定一个12345。三套你看严固定的情况下,是不是就密码就一样了。五点了。
50:03
好,这是给大家演示的这个用法啊。那另外op sce命令呢,它还可以用来生成随机数。那随机数也可以用来将来拿过来当口令,它只生成随机数呢?呃,有两个设备可以帮我们来生成随机输入,一个叫red设设备,一个是U。这两个设备啊,都是我们系统中带的一个。字符设备DV啊,还有一个是U。都是字符设备。那这两个字符设备有什么区别呢?他们都能随时生成随机数,这两个共同点他们都是可以利用你硬件的信息,比方说利用你的键盘。
51:02
输入的按键,利用你的鼠标所在的光标位置,利用硬盘。它的所在的这个读取的磁盘位置等等这些硬件信息来结合它们生成随机数,我们都知道键盘敲什么,鼠标点哪,那不都是相对随机的吗?对吧。啊,所以用它来生成随机数,相对来讲是比较真实的啊,当然这个随机数也肯定是有范围的,你看我这个鼠标,鼠标虽然点哪是随机的,但是有有一个大概概率,比方说一般鼠标在中间点的几率是比较大。点旁边是不是几率要小对吧,所以你要说他真的随机嘛,那也不一定那么随机。对不对啊,但是这个至少还是有一定的随机性的。那么利用这些硬件信息来生成随机数,但是这些硬件信息可以用来生成随机数,它生成的虚息数会放到商池里面。
52:06
但是这个生成的商池的随机数啊,是根据你的硬件信息生成,如果需要大量的随机数,这时候你如果没有办法及时的提供。新的商持的随机数,因为随机数是用硬件信息生成的,而这些硬件信息有可能没有变化,比方说我现在鼠标就没动,鼠标没动,它光标位置不动,那生成随机数就一个再想要没了。那CG数用光了,那怎么办呢?哎,那么red就阻止了。那就是说没有随机数了,没有数那你就等着吧,等着你动动鼠标呗,你不动鼠标就就没有。哎,还记得上次我们做什么操作来着,好像就是说I及动动鼠标,什么动动硬盘,是不是这个GB命令不就是这么对吧?啊,你不动它就没有生成随机数,那也就就干干不下去了,卡在那了,等着,而U呢,他一旦发现不够了,不够了,那算了,也别等了,我就利用软件来生成随机数,但是它自己用一个软件算法来模拟生成随机数,但是这个软件它再模拟它不也是。
53:14
它有一个算法在里面嘛,那算法你说是不是有规律啊,所以它生成的是一个假随机数了,叫伪随机数。理解了吧,啊,但是呢,有个好处就是它不会让你等着啊,这你跑起来比较顺畅是吧。啊,这是两个设备的一个区别啊。那咱们有一个叫red。Open RA这样的一个命令可以生成随机数,生成的随机数呢,一种用BASE6次编码来表示,一种是用16进制来表示,啊,这都可以。那如果说我们直接在这来生成随机数,当然你要指定多少位啊,啊,这个地方指定位,这个位呢,我们要指定实际上应该是字节为单位,应该是。
54:03
啊,应该是以字节为单位啊,比方说我这。三就三个字节呗。啊。你看他这个输出虽然是随机的,但是有可能产生乱码。啊,所以呢,我们一般来讲建议还是用被六四或者什么16进制,那如果16进制就这个这16进制。哎,他这个16进制我写三,他这怎么输出是六啊,这咋回事啊,这六个字符为什么。为什么呀?为什么是六个呀,我这写三怎么写六个呀。16进制数啥叫16进制数?一个16进制数能表示几位的二进制啊?四位我三是指三个字节。三八二十四是不是24位,这是446是不是24。
55:07
这就对了嘛,对不对,它一个16进制数表大的是四位二进制,所以我们这实际上这一个是14位,这是四位。啊,四六二十四不就正好三个字节嘛,对吧。那这是16进制,那当然我们比较多的喜欢是用B64,我们刚学了B64。哎,这边被六四吗。啊,当然那。哎,你看可以,哎哎,我问大家问题,哎,这个怎么无使等号了,要是出现。那原因是什么原因?那为什么我刚才写了三就不等号,写了六就没等号,那么五就等号了,刚讲过道理,原因你该知道的什么道理啊?
56:03
你不是三个字节的整数倍就不能凑整,那就会出现等号,什么情况下两个啊两个,那比方说你如果是三个,你两两个都缺了,就是我们刚才说六十四六十四六十四呢,这个B64是六位六位凑的,六位六位凑的,如果有一个六位不不不全,比方说我们这有一个010啊,这是一假设我们这是这个啊,就随便写一个啊。这个这是正好是六三个字节。啊,六倍。那我这写上随便写一个多了一个,好,那这个是3824分成了四组六位,这是正常的,我们可以保证它不会出现等号,但是我们说了这个地方是不是有可能它不不够不够我们添了俩零凑的,这时候呢,这个东西就出现一个等号,但是还有更彻底的就是前面这个都不够,前面的都不够,你后面这全是凑出来的,听懂了吗?这个也会,这也是不够凑出来的,那这个不也是,那就也等号呗,这俩等号出来了。
57:31
你错了几个就几个等号。是吧,啊,当然,所以呢,五五那是不能被三个字节整除的呀。不确认等号了,那看来这个地方只要是三的整数倍就都不会有等号,不是三的整数倍就会出现等号是不是?哎,刚才你看九的话也不会出现等号是吧?哎七的话你看就俩等号,为什么呀,它有两个三六,两个六位都都是都是凑出来的,两个六位凑出来,那八的话呢,它应该是凑一个,所以就一个等号。
58:08
对吧,好,这是被六四啊,所以这个被六四你得知道啊,要不这个你就有些命令就看不懂啥意思啊。啊,这是,哎,当然你要说拿这个东西当口令行不行啊,这是不是也挺好啊,当口令这也是相对随机的嘛,对吧,随机的当口令可以啊,当口令挺好啊。啊,当然这个你将来要写口令的话,你最好不要出现等号。啊,那所以说你是不是设的时候,比方说369这个比较好,哎,369是吧,但九的话比较好,九的话你看这个位置也比较长1.363太短了,六的话有点有点短,是不是九稍微合适一点啊,实在不行,你12嘛,是吧12。
59:05
那当然,那面试题里万一要说我要取生成十个字符长的随机字符,那你不行就取一下吗?你把那前十个取出来不就得了,因为它这个九个的是超过了十个的啊,这个九个是几个呀,这是12个多了俩,那多了俩就把它去掉不得了吗?这这不好是吧?那就用head取上前12个,这不就行啊,前十个前十个前十个这不就行了是吧啊。多了也别少了,哎,你们总结啊。生成随机的口令,你是不是可以拿个小本总结一下了,几种生成随机口令,反正方法也做了,刚才讲了不少,你自己做做个总结。
60:00
面试的时候不行,你都给他写上。估计你要是真的是这种写法。那这个考官肯定是比较对你印象绝对深刻。啊。一般的啊,就是没有正儿八经像咱们这样踏实做点学习的,能总结出这么多方法的,要靠自己,不容易很少出现,即使老司机他们也做不到。干了好几年运维的,他们也不一定有这个经验啊。所以真问这种题,你要真答出好几种方法来,肯定印象会对你非常好。咱们去拼多多那个同学。他之所以我觉得。做的就是手上好几个offer啊,最终选了去拼多多了,他就是。学习比较认真啊。他确实也。知识打的比较扎实,方法也总结的比较好。
61:03
呃,亲,昨天跟我们在一块讨论,又一个同学那个47的说好像去华为要准备。去华为有个小女孩儿,47的,就四十七四十七就三个女生。啊,有一个女孩儿准备去华为。刚毕业吧,年纪就是22324这个样子,刚毕业一年好像啊,不过那那个同学都是比较认认真的上课,就是每次问问题都能积极回答啊,不一定答的对吧,但是都能参与,大部分还都答的不错,所以实际上就是你通过这个上课期间学的好坏,哎,每次我问问题你能不能参与。答,好答答错这个不重要,至少你得参与是吧?那通过这个参与你就知道,哎,你错在哪了,你纠正过来不就得了吗?那比我问问题从来不回答。
62:01
是吧,好像不存在一样。那将来你说真面试你了,你就从无到有就生成了啊,我我问你你都不当回事,真问你的时候你也答不出来了是不是。呃,咱们上课我问问题,你就把它当成面试啊。你就我现在问问题,你就当面试,你就想你怎么去面试,一个考官在问你,你怎么去把它答出来。啊,经过这么好长时间的训练,以后你将来面试。就应该有好好多了。所以大家还要积极的去回答问题啊。正确与否不重要啊,在这个阶段。重要的是你要参与。啊,这个就是生成随机口令啊,这个我们之前用过的这个方法,这都可以的。啊。那接下来咱们来看一下open sc来实现。
63:03
公钥、私钥。这个是我们工作中。啊,很实用的。公钥、私钥。上次我们讲非对称的妙加密算法,提到了公钥、私钥。公要需要的关系是什么关系?大家用几句话来总结。是什么?啊,打一下我看看。打一下在屏幕上打一下自己写啊,你写个123,你你你先写完了,啪1123,你写上几条,我看能不能把这个总结全。公钥私钥的关系。啥叫公要,啥叫私要是吧,公钥私钥啥关系?有什么特点?12点。
64:00
哎。那你看这个每次回答问题的就是这几个同学啊。其他同学。也正好动手一下,要不你这坐在那光听课,是不是又人在这身体还不思想,不知道在哪呢,是吧?还得动手。哎。那实际上我看大家的回答的问题啊,实际上也就能够想象出你将来面试会达成啥样。那好。哎,我看好多同学能写出来啊。呃,你像咱们刚才这个,呃,建龙同学啊,他说公钥在网络上传播,私要私自保存。
65:03
啊,这个这个,呃,这个说法呢,实际上怎么说呢,呃不是很严谨啊。这个没有说公钥和私钥就必须在网络上传播。我单机用行不行?也可以呀。我非得有网络吗?所以有些话咱们要严谨一点,它和网络没有直接关系,虽然说确实是网络中用的比较多,但是这不是必要的啊。啊,所以我看大家其他人做的还不错啊,答的不错。但实际上通过你们写这些话,也变相的就是我们把一些概念严谨一点啊,公钥私钥,我们实际上说过啊,公钥私钥,那公钥就是公开的。公开传播可以公开传播,私钥是不公开的,只有自己拥有,保护好它。
66:00
姑要。加密只能用对应的另一把私钥解密,而私钥加密也只能用另一把对应的公钥解密,公钥是不可推出私钥的值的。当然,C2是可以推出公钥的值的。公钥经常用于加密数据。啊,或者加密绘画密钥,就是那个对称密钥。而私钥是用来实现数字签名的,对吧?实现数字签名来证明数据的来源?啊,这是他们的用途,希望大家能理解。那么open s4同样它也是可以支持公钥私钥的。这边有一些例子啊,算法上它可以支持RC算法,DC算法。
67:01
还有DH密钥交换算法,DH什么意思?还有印象吗?啥叫D?哎,就是第伏赫尔曼算法嘛,这不上次咱们算了半天呢,哎,虽然说你记不住那个算法,当然你也不用记它,你至少知道,哎,它是用来实现妙交换的,对吧,你看到这些东你知道啊,因为这个算法这咱们不是咱们。咱们专业搞这个的数学家搞这个,但是你至少得知道它的功能是什么,那么我们这边有一个命令叫GRCGRC呢就是生成,并用RC算法来生成私钥。RC算法,RC算法呢,它可以实现公钥、私钥的加密。
68:01
好看这边G。RC。这个。DRC可以生成一个私钥文件,但是这个私钥文件呢,如果说你直接就生成放在那我们可能是有一个担心,就是被别人拿走偷走啊,比方说我们分生成一个文件叫data,下放一个文件就叫test key。啊,比方说或者叫PK,就表示给一个用程序用的一个私钥啊,而且呢,后面要指定它的位数啊,如果你不指定位数,它有个默认位数,默认位数是2048啊,你这也可以指定一下,比方说4096。你可以指定它的位数。那待会我换一个二。
69:00
你看这个位数是不是长了它就慢一些是吧?啊,当然我们现在看一下贝塔下的APP星。你看这一个是32431个是1679,是不是大了一些啊。啊,当然我们现在看一下这个K啊,啊,这个显而易见也是用BASE64编码转换过了吧,啊,这个是默认自动就给你转了啊,不过我们之前好像生成什么东西了,他没给你转。之前我们上次也用过一个命令,也可以生成公钥私料,对,但是他不给你转,看到了乱码,你们还记得吗?啥来着。是不是就是JPG那个命令,JPG命令呢,它会生成公钥四幺,对,但是它那个文件它不不给你转换就乱码。而这个命令他给你帮你转了被六次了,所以就不出去乱码了。啊,这个呢,是要private key。虽然转换了,我们刚才说了背六四并不是加密啊,只是为了避免乱码,哎,所以就这这个看起来比较舒服一点,你看这些整整齐齐的好看。
70:05
啊,但并不是加密,所以私钥文件呢是很危险的,如果你这么放被别人偷走了,那就没什么安全性了啊,所以呢,为了安全,我们也可以考虑对私钥在生成的时候给它加一下密。后面可以跟上加密的对称密钥加密算法,可以生成一个对称密钥加密算法啊,我们看一下它的选项啊。啊,这边。有没有那个生成对称密钥加密算法的指令?我这还没有写。没有写。有他这个帮助写的不详细啊,不详信你就在这里面看。啊,这里面看看它有没有那个生成的,诶这有看这是不是有这么多的。这都是最成名叫加密算法啊,比方说咱们现在这这些都都都比较老旧了啊啊,现在流行的是AES吧,你看A的话呢,比方说128的二百五六的是吧,啊那我们就用as吧,As。
71:15
啊,这个是杠横线。AES。AES256。啊,我在生成一个新的三。好了,这时候呢,你看他是要提供口令了。那是干嘛呢?就是对称密钥,你把这个私钥加一下密码啊,比方说我输一个123456,这车123456。啊,这样的话就生索完了啊,你看这个三文件就是被加密过的私钥啊,它会提醒你啊,这是个加密的,从哪能看到呢,这。
72:04
而且会告诉你我用的是AES256,看到吧,NEES256。八。当然这个加密的口令呢,嗯,一旦加密呢,将来就是每次你要用私钥就得必须要用。对称密钥,那个密钥把它解开才能用,知道吧,你不解开它,因为用不了。用不了。那所以为了实现。这个以后我们还是不想用这个。加密。我们后面会给大家讲,比方说有些服里面你要用这个私钥,结果你把这个私钥加了密,他这个服一启动,你就得输密码。那你将来这个就麻烦了,不能做成自动化了,你手工得输密码了,你是。
73:02
啊,不能变成批量的,变成交互的不方便,所以有的时候我们还是把这个私要的口令,一般还是要把它去掉啊,那去掉口令怎么去呢?我刚才给加了口令,那去了也能去,就这个。用这个。直接看能不能把它去掉硬。呃。啊。有一个去掉口令的。这是生产工药,不是这个。山中物料。哎,这个这是这有一个命令叫硬out,直接输出就好了,RC用RC就把它解密了啊,那就是open SL r sa,后面跟上刚才的这个APP3IP3,这不是被我加密过的了吗?啊在K,然后给它out输出到APP3。
74:14
呃,这个加上一个杠二吧,这就生成解密了,当然要解密的,输口令啊,你看这输那口令123456回车行了,那这时候呢,这个文件就被解密了,大概这就是解密完了的私钥了。啊,你可以加密也可以解密。好,这是这个密钥的处理啊。啊,这是生成私钥。啊,我再给他。这是解密私钥。
75:07
虾米。好,这边呢,用RC这跟一个文件。四要文件。然后是out。再跟上一个私要文件。就是解密。那这个加密算法,刚才我们也看到了,他这个加密算法也很多啊,在这个慢帮助里面看到这里面加密算法很多,这些全是加密算法,这对成品加密算法。
76:11
啊,这些都可以啊,我这写的是啊,实际上这些都可以做。好,那另外呢,我们可以利用私钥提取公钥,生成公钥。利用私钥生成公钥也是有对应的命令的。那方法是这个。
77:00
RC后面跟上四要文件popout。后面跟上公钥文件就行了啊,比方说我在对大下,现在全是私药这些。啊,把这些test的文件删了吧,大家看这里面呢,全是私钥。这个C要一般习惯性的加个K啊后缀,当然这个不是强制性的啊,你叫什么实际上不重要。啊,那这个地方用RC后面跟上一个pub out out就可以把私钥,利用私钥来生成公钥,比方说APP3的K,然后。Cub。然后杠out生成到一个文件里去,比方说APP3的part key。
78:06
这公要。诶,这怎么让我输密码啊,还记得吗?是不是我刚才对人家加口令来着,你看你只要用人家私钥,你加了口令你就得输,你不输用不了,哎,大家看这个就公效就生成了,但如果你用的是AB2AP2的,这个是我们没有加过口令的一个私钥,你看它是不是就直接生成了啊,所以你加了口令,你每次用就得输口令是吧。所以用私钥是可以推出公钥的值的,那反之肯定不行是吧,反之呢,要推出来那就麻烦了,那也没用了是吧,没用了,好,这是咱们提取工药,当然我们虽然说加口令这个事啊,不是好事,因为用起来会不方便,那将来每次用私钥我得输口令。
79:04
尤其我们将来把C钥将来会写到文件里,哎,经常用来启动某个服务,一启动就让我输口令,这个就不能做成自动化了,所以这个加口令这个事儿用的不多,当然加口令用的不多,那我们这个私钥万一被别人偷走怎么办呀?诶咱们也有一个方法,就是创建私钥的时候,创建私钥的时候我们把这个虽然说不给它加补丁,但是我们也可以换一个思路,什么呢?就是加一个权限不就得了吗?那比方说我们把这个文件生生成完了以后,给他设个权限吗?比方说设一个超级严格的权限,000。这这不就稍微好点吗?啊,当然要设000的话,你后面创建完了再再改,不如我们直接怎么样,还记得这个吗?是不是这种方法改起来非交互式方式一下就改完了对不对啊,一看要忘了你这还又加口令了,就把这口令删了。
80:11
好,你看现在这个APP4这就生成。啊,当然它只是临时用了u mask,我们现在的mask是不是就没改啊,不影响后续的命令吧,不影响,所以这个用法用的比较多,这是我们目前尤其生成四要喜欢用的配套写法,这喜欢怎么用?啊,当然实际上啊,在八上实际上啊,这个这个思八这个写法你也可以不用,为什么呢?你看看就知道了,我再生成一个啊,你看看这八上为什么说可以不用呢?你看它八上默认生成的权限,啥权限6006是root呀,所以这个实际上问题已经不大了。但是为什么我们还要建议大家用呢?因为你再看看老版本啊,比方说七也好六也好,呃,你你看看你看看他生成的这个文件也是那个权限吗。
81:09
是不就不是啊,他就不是那六我也就不看了,六我估计也这样,是不是写这个写法就更通用一些啊,写这个写法更通用吗?对不对,你不能让他系统啊八才能做到3637做不到啊啊不过我们发现高版本确实有好处是吧,高版本好多功能都是细细微的变化,都是有改进的。所以咱们提前学学孙总八是吧。等你们上班一年以后,四八就开始用了。啊,这是咱们给他讲的啊,这样的一些公钥私钥的使用,那这些例子啊,我都给你演示了。对,亚瑟兰。
82:00
好了,那这就是open SL的常见用法,不过呢,最重要的用法。接下来我们就要讲了啊,当然重要内容我们必须要下堂课讲是吧?啊,咱们休息一会再回来。
我来说两句