专栏名称: python实战
Python实战
目录
相关文章推荐
Python中文社区  ·  买不到,根本买不到!试试沪深300ETF ·  昨天  
Python爱好者社区  ·  某公司领导:我不喜欢提拔老实人,因为老实人一 ... ·  3 天前  
Python爱好者社区  ·  这可能是中国最“恨”地铁的高校,甚至写了篇论 ... ·  5 天前  
Python爱好者社区  ·  李飞飞:若我夺下诺贝尔奖,定以中国人身份去领 ·  1 周前  
51好读  ›  专栏  ›  python实战

python-实现键盘记录器

python实战  · 公众号  · Python  · 2016-12-04 19:37

正文

Hi!

 

今天要分享的python实现键盘记录器。




 

开始之前,照例说点别的。我想说说我弄这个公众号的原因。

 

一开始学习编程的时候,是谭先生把我领进门:


 

看不懂于是我换了一本书:


 

之后我又接触到了java:


 

 

 

….....


 

几番反省


我终于知道我为什么学不好。

因为要创造一样东西,需要一个目标,和需要很多东西的支撑来实现这个目标。在一开始学习python的时候,急功近利,一步登天,心里想着学了这个,立马能做出点什么,却发现书里只教你怎么计算,怎么使用条件判断,怎么使用循环这些简单知识点。更糟糕的是,你连自己要实现什么都不知道,谈什么如何实现?写一个程序需要很多背后的知识来支撑。并不是一本XXX从入门到精通就能帮到你的。而背后的知识点支撑也不是你能学得完的。更重要的你得明白自己要实现什么。举个例子,你想用python开发一个web,简单的http网络协议你得学一点,html,cssjs三个基本你也要学一点,数据结构你要学一点,软件结构你也要学一点,而到了最后python才派上用场,python把上面的一点一滴整合起来才能完成一个web。但是如果换个领域,你要学的又不一样了,你想开发个windows下的桌面程序,但是你想用python来实现,涉及的知识就包括对windows操作系统的理解,windows api的理解等等,最后才是用python来实现。如果你一开始就不明确自己要实现的目标,你会在知识的海洋里淹没。罗马不是一天盖起来的。但更重要的是,你要知道自己要建的是罗马,而不是希腊。你得决定自己要去哪里,然后才是怎么去的问题。这也是术与道的区别,战术与战略的区别。前者帮你实现目标,后者帮你制定目标。

 

当我明白这个道理,问题就有两个部分,一个是要实现什么?一个是要怎么去实现?

 

对于第一个问题,我的解决方法就是这个公众号,python能实现什么?所以这个公众号旨在分享各种python能做到的事,涵盖信息安全,机器学习,算法,web等各个领域。每个领域都有天马行空的想象,我也只能帮到这里了..

对于第二个问题,怎么实现,背后的知识点涉及太多,我能为大家做到的就是授之以渔,抛砖引玉了。



 

好吧我们回到正题。


我们今天的目标是python实现键盘记录器。这归属于信息安全领域,黑客入门木马的一个实现,各位不要拿来干坏事哦。我们务必要遵守法律。

它的实现我是在csdn上看到的

代码链接:http://m.blog.csdn.net/article/details?id=49133109


我们知道,计算机系统是有一个层次划分的。从硬件到软件都是如此。每一层都会用到下一层提供的服务。从编程的角度,我们要明白自己所处的层次。我们用python的各种模块和库,实际上是这些模块和库为我们提供了服务。

 

我们要做的,一是明白这些模块和库的作用,能实现什么功能,这些模块的构造是什么,依赖是什么,参数又是什么。也就是工欲善其事必先利其器。怎么做到呢?看文档。要了解这些工具,最好的方式就是看文档,这有点像遇到不会的单词要记得查字典。用得多了,也就熟练了。

二是我们要学会如何描述逻辑规则来使用这些工具。这也就是我们所说的伪代码,流程图这些。这个要怎么做到呢?我觉得这个有点像我们写文章,我们先模仿几个经典的文章,熟悉了几类经典的文章范文之后我们就可以自由发挥了。自由发挥就靠我们自己的想象力了。各位努力奋斗吧。

 

对于一个windows下的键盘记录器,windows提供给我们的工具有windows apiPython提供给我们的工具有pywin32。以及第三方的工具库pyhook钩子。

第一个,这些工具的构造和功能?这就要看这些工具的属性。这些工具,实际上就是一个属性值或者一个函数,对于属性值,我们明白是什么类型就可以了,比如一个属性需要传入一个列表list,那我们就就不能赋值字符串。而对于函数,我们需要明白函数的参数是什么,以及最后返回的又是什么类型的属性值。

第二个,我们该怎么使用这些工具?我们最后是期望在控制台打印出来,也就是最后我们只要能得到需要的属性的值即可。对于键盘记录器,我们想要打印的就是一个程序的进程ID ,它的进程名,它的标题,以及键盘敲了什么字符。所以我们只要获取这些值就完成了我们的目标。

 

代码:



效果图:



谢谢!

ID:python_friend

2016-12-04