最近打算更换密码管理工具,比较了几个密码管理软件,keepass真心不错。
keepass
记录密码的神器。
提供auto-type方法和命令行工具,以方便使用账号和密码。
比如,打开网易163邮箱,按下keepass热键,自动找到相应的账号,填写用户名和密码,回车完成登陆。
再比如,编写脚本,使用keepass中存储的账号,自动进行VPN连接。
下载和安装
有classic和professional两个版本,实际上是版本1和版本2。
版本1不需要任何运行库,版本2基于.net编写。相对来说,版本2的功能更加多一点,基于版本2的插件数量也多。
两个版本都有便携版本下载,下载好以后,解压缩就可以运行。也可以下载中文语言包,解压缩后放在keepass所在目录。
官方文档表示便携版本不会写任何数据到安装目录以外的地方。
使用很简单,看着界面就会做。下面重点讲讲如何自动化运行
全局auto-type
http://keepass.info/help/base/autotype.html#autoglobal
针对一个账号,定义一个按键序列。keepass可以模拟键盘自动输入到当面界面,比如登陆界面或者一个WEB页面等等。
默认的按键序列是{USERNAME}{TAB}{PASSWORD}{ENTER},也就是输入用户名-TAB键-输入密码-回车,适用于绝大部分WEB登陆页面。
如果遇到特殊场景,也可以自定义按键(编辑记录页面->自动输入)。
定义好按键序列之后,就可以启动全局auto-type。默认启动热键是ctrl-alt-a。
在WEB登陆页面,比如网易邮箱,输入焦点放在登录名字段中,按下ctrl-alt-a,keepass自动输入用户名和密码,然后登陆。很快捷。
背后的原理为
- keepass为auto-type注册一个全局热键ctrl-alt-a
- 根据当前窗口的标题,寻找对应记录的标题字段,如果记录的标题字段包含在当前窗口的标题中,就根据按键序列模拟键盘输入。
- {USERNAME}和{PASSWORD}叫做placeholder,用来替换相应记录的用户名和密码字段。其它常用的placeholder还有{TITLE}和{URL}。
- keepass2中也可以选择URL字段匹配当前窗口标题,在工具-选项-高级-自动输入中更改。
- 如果记录Title字段还不够复杂,还可以在编辑记录-自动输入页面中自定义匹配规则。
keepass还提供了一个命令行选项-auto-type
,用于其它已经打开的keepass进程运行触发全局auto-type
1 | keepass.exe -auto-type |
命令行自动化
keepass提供命令行选项,总结一下包括3类:
- 启动keepass,并打开相应的数据库
- 全局auto-type,打开指定记录URL,这个URL不光能打开页面,也能运行一个程序,后面会细说
- 退出keepass
启动keepass
1 | keepass.exe 数据库文件 -keyfile:keyfile -pw:数据库主密码 -minimize |
自动执行
keepass打开之后,可以使用命令自动执行
1 | keepass.exe -auto-type |
第一个命令执行自动全局auto-type
第二个命令根据uuid(指定记录),打开该记录的URL
URL说明在此
URL最普通的形式为http://
,ftp://
,mailto://
等,如果你的系统定义了ssh,也可以使用ssh://
形式。
URL第二种形式为cmd://
,可以运行一个命令,举例
1 |
|
cmd://
可以使用环境变量,也可以使用placehoder,placeholder说明也很值得一看。
退出keepass
1 | keepass.exe -close-all |
应用
autohotkey自动启动keepass,执行auto-type后退出
1 | ;; keepass |
定义热键ctrl-alt-o,取得当前窗口id,启动keepass,暂停1秒,激活刚才的窗口(keepass启动时,有可能会切换当前窗口),执行auto-type,退出keepass
自动拨VPN
1 | #!/bin/bash |
最后四句,启动keepass,暂停1秒,根据uuid打开URL,最后退出
URL定义为
1 | cmd://rasdial eni {USERNAME} {PASSWORD} |
其中eni是在网络中定义好的VPN条目。