00:00
下啊,我们先来回顾一下啊,就是咱们前边实现了两控的两个功能啊,一个是这个反弹shell,一个是这个桌面截图啊,然后今天咱们就实现这个键盘监听啊,反弹she这个呢,我们来看一下啊。诶否好,一个服务端,一个客户端啊,然后由服务端下发这个指令啊,然后来给这个客户端进行一个执行,然后呢,如果说是e it就退出,否则呢,就去用这个open执行,这是反弹,如果说你需要其他指令的,比如这边如果你需要发送的是其他指令,那么你在这边接收的时候呢,就加一个啊用这个L,然后呢去判断是不是等于你的新指令,比如说截图,我们上节课呢,也实现了一个这个截图桌面的这么一个功能。啊,就这个东西啊,这个是截图桌面的这么一个功能啊,截图完之后啊,进行了一个保存啊,保存到我们的这个本地了啊,然后呢,我们这节课呢,就实现一个这个键盘记录的这么一个功能啊,然后你也可以下发,然后保存到本地的一个文件里之后,你可以通过文件把它发送送给这个服务端啊,由服务端再次进行接收,进行处理啊,啊它可以做很多很多的事情,比如说你可以这个记录一下这个密码啊,记录一下其他的输入啊,聊天的这个内容啊之类的,当然这个咱们现在这种记录方法是不太好的啊,因为这种记录的实际上是你按了什么键啊,它并没有组合起来,把你输入的内容拿下来,比如说你如果输入一个汉字啊,输一个能啊,那它就是ne这种啊,那不是什么呢?不是能就是这个啊,这个汉字啊,所以说呢,它看起来可能不是那么方便啊,然后呢,我们接下来呢,以一个纯Python的形式啊,这个来创建一个新的项目,我们选择这个Python的一个解解释器啊,你用哪个都行啊,我一般情况下呢,用这个,然后我们来创建。
01:56
推出我们的项目。
02:07
好,然后呢,我们把这个多余的东西删除掉啊,还是把这些没有用的用的东西删除掉,删除掉之后呢,我们开始来写我们的代码,这节课呢,我们写代码呢,相对而言呢,也是比较简单的啊,总体而言应该用不了20行啊,就能把我们的功能实现出来啊,这也是我们Python的一个这个方便之处啊,因为它这个库确实这个多了一点啊。首先啊,我们倒库。啊,我们用这个。啊put啊,对,没错。
03:02
List。对,类似的。选择安装我们的软件包。好,安装成功了啊,这就没有报错了,没有报错之后呢,我们这节课呢,使用这个库啊,这个库啊,这个库呢是也用起来是比较简单的啊,我们其实呢,在这里边儿呢,我们只需要做一件事,就是在主调的时候啊,就是我们首先用一个上下文管理器呃的一个方式啊,来进行打开啊进行监听。啊,就是我们刚才导入的这个函数啊,我们用这个函数进行监听,它这个监听呢,它有几个东西啊,可以让你去这个使用啊,就是它的参数里有几个东西啊,什么东,比如说是这个个监听,那还有一个是什么呢?还有一个呢,是我们看一下啊,它这有一个什么呢?这个这个啊就release这个,这是什么意思呢?这个是你按键在释放的时候被这个监听啊什么意思呢?就是我们在按一个键的时候啊,它不是有两个动作,实际上比如说你按一个这个回车键啊,你摁下去它是一个这个动作,你手了它是另一个动作啊,那这两个它的参数呢,就是这对针对这两个的啊,它可以监听它不同的东西,一个按下去,一个释放啊,那你键盘记录的时候呢,其实通常情况下你监监视两个都可以啊,那我们用什么呢?我们就用它这个释放的时候啊,因为你这个键按下去了,它肯定就会释放嘛,我们在释放的时候监听。
04:36
是没有问题的,那么它后边跟的是什么呢?它是一个回调函数啊,回调函数什么叫回调函数呢?就相当于你在按下这个键,然后开这个键的时候,它不是有这个动作了吗?那么这个动作就会触发一个回调函数,因为我们这在这里相当于什么,相当于注册了一个回调函数啊,用这个监听函数注册了一个回调函数,就是这个触发的条件是什么呢?就是按键开啊,也就是说你按键开就会触发这个函数,所以说它叫回调函数啊,那我们如何去编写回调函数呢?啊,那很简单啊,就跟普通函数一样编写就可以了啊。
05:19
它里边有一个参数啊,我们要写上啊,就是一个K啊,就是我们按键。然后呢,我们可以给他来一个这个全局的列表啊,就是用来保存我们按了什么的一个列表。好,然后呢,我们现在呢,就可以开始来操作我们这些东西了,那我们如果说要使用这个全局列表,首先呢,我们要把它声明成这个要使用全局变量,否则呢,你使用的就不是它了,这个是一个Python的一个语法特性啊,所以说呢,你先要用这个global啊,把它声明成一个声明,我们要改变的是全局变量。
06:04
啊,给他操作完之后呢,我们现在接下来呢,要对它的这里边的一些东西呢啊做一些这个替换啊,比如说我们按的键啊,因为它有可能是里边有一些这个点之类的东西啊,我们要把它这个冒号都替换掉啊,就是我们比如说我们用一个string啊,等于str强把这个K啊把这个key强转成字符串,然后呢对它的里边一些东西啊进行换,比如说我们要替换一个这个单引号啊。好,然后呢,我们接下来呢,就要对它呢做一个连接。好,然后呢,我们要这个显示的情况下呢,我们就把它打印一下,如果不显示的情况下呢,你也可以直接给它这个呃,写出到文件里,那我们在这儿呢,我们对它呢,做出一个打印操作,然后呢,如果说我们要把它写入到这个文件里啊,我们就可以直接啊给它进行一个打开。
07:15
呃,你也可以判断一下啊,到一定指定长度之后啊,再给他进行写出啊也是可以的。啊,这个呢,接下来呢,就是你的一个路径啊,你要把这个东西存到哪儿啊,然后呢,你现在呢,就可以给它存到一些指定的路径,也可以存到自己当前的工作目录下啊,如果当前的工作目录下呢,它就是一个什么呢?它就是一个这个呃,相对路径啊,你直接不用写前边的部分啊,就直接写后边部分就行了,然后以追加的形式写进去啊,否则如果你用W往里写的情况下呢,它前边写的前前一次写的东西呢,就会被覆盖掉啊,如果你使用追加的形式呢,它就不会被覆盖啊,这是区别,然后呢,现在打开文件,打开文件之后呢,我们对它呢进行一个写出。
08:09
啊外啊外呢,就是外,我们这个拼装成的这个字符串,然后呢,我们啊给它重新。指空,然后我们接下来呢,就要给它进行一个调用了啊,把它这个回调函数传入到我们这个监听的函数里边啊,然后呢,给它来进行一个这个别名啊,取一个别名,取完别名之后呢,我们就可以用这个别名啊,让他呢在这个位置上啊,进行一个参与啊,也可以说是把它暂停,等待这个结束啊,啊相当于阻塞在这里啊,然后我们现在呢,其实呢,就已经完事了,一共16行不到20行啊,然后我们运行。运行之后呢,现在比如说啊,我现在在我的随机的一个位置啊,新建一个这个文本啊,然后我在里边进行输入啊,你看我这样进行输入,输入完事之后呢,我现在呢,回到我的这个界面上啊,然后诶。
09:09
我这个怎么没有呢?诶奇怪了啊,等一下我看我是不是写错了啊,我给他终止一下啊,然后我看一下我本地的目录啊,有没有创建出来啊。啊,没有创建出来啊,我检查一下啊,检查一下我看看哪有问题啊。啊,我们在列表里没有添加东西啊,我这啥也啥也相当于啥也没添加进去啊。A。呃,我们给它换个行,然后加上我们T啊T的值。好啊,这样就对了啊,然后我们重新再来一次。
10:08
看到没有啊,现在我的这个控制台里边啊,就已经展示出来啊,包括按了什么键啊,这是阿码,然后上边呢,有的呢是可以直接显示出是什么按键的,比如说这个字母,或者说enter啊,Enter回车之类的。你看啊输入啊,然后比如说摁摁一个什么shift啊,什么乱七八糟的啊,他说这shift啊都可以显示出来啊,摁一个CR啊,你看CR那一个空格啊,你看空格这个都有这这种的,它是都有显示的,看到没啊,这个cup look啊,还有什么,还有这个tab,你看这种都有显示,然后呢,你像是这种大写小小写字母还有符号都可以显示出来,然后呢,但是呢,小键盘这种数字呢,它显示的就是这个阿克码了啊,但是如果说是你是这个大键盘上边这个上这个数字啊,它是可以直接显示出来的啊,这个主要是因为它这个库啊,显示的没那么全啊,但是呢,一般情况下的东西呢,也都是可以正常显示出来的,那我们现在呢,就把它暂停掉啊,给它停止终止一掉这个脚本,然后呢,我们来看一下。
11:10
打开我们的文件管理路径。在这啊有一个I,这就是我们生成的,然后呢,我们直接打开,打开之后你可以看到啊,我们输入的东西啊,基本上就已经记录下来了啊,并且呢,相对而言呢,也是比较友好,可以能看出来是什么的啊,因为这种东西都都由这个库啊给你翻译过了,它这里翻译不了的呢,只有什么呢?只有这种东西啊,这种东西因为它是小键盘啊,它没有做翻译,所以说呢,你只能看到它的啊,这个呢,你就需要用这个。Ask ask码表来进行一个对照啊,对照翻译啊,好,那这个呢,就是咱们今天的一个内容啊,然后呢,就是实现了这么一个功能,但是我们先不把它往这个远控里组合啊,之后咱们都写完了之后再给它拼装起来,嗯,对于这几行代码有没有什么问题,如果没有问题呢,我们就进行下一步啊。
我来说两句