PwdManage密码管理工具

信任的丢失,才是末日的开始

  随着越来越多的网络服务商(主要是网站)被曝数据泄露,本人开始有点小担心了。因为我每个网站的账号密码几乎一样,一旦有一个网站被泄露,那就gg了。于是乎,趁着周末空闲,我开发了一个小工具,用于管理密码。
  网上类似于这样的工具(插件)非常多,我不想去比较,因为别人写得再好,我也不可能完全信任,因此只能自己动手写了。(人与人之间的信任呢?)

此工具仅限自己把玩,如有使用此工具导致信息泄露,概不负责

设计思路

首先作为一个密码管理工具,得有3个最基础的功能,密码生成、密码存储以及密码查询。

密码生成

原本想借助于AES算法的,但是实际编写过程中出了点状况,因此改用base64(进过特殊处理)。
当然用来加密明文密码不可能只用简单的base64,其中经过多次复杂的转换,并且生成的密码存在一定随机性,不易发现规律。

密码存储

原本是想搞个数据库用来存储密码,但后来发现不够简便,于是用了最简单的文件存储,并借助了git库,将文件同步到远程git仓库中。

密码查询

这个很好实现,从文件中读取密文内容,通过算法解密,然后输出。

项目介绍

  • config_init存储配置文件,进入程序密码、git仓库地址
  • pwdmanagedb/pwd.db存储密文密码
  • pwdmanage.py项目程序代码

说明:存储到文件的内容都进过特殊的加密,一般没有pwdmanage.py是无法解密其中的内容的。pwd.db存储在git项目中,每次运行程序时都会向远处仓库pull最新内容,每次本地新增一个用户也会立即同步推送到远处仓库中。

Usage

更新启动密码

1
python pwdmanage.py --upwd 123456


修改当前密码为123456,需要输入老密码。

更新git库地址

1
python pwdmanage.py --gitaddress "./pwdmanagedb"


修改本地git项目文件路径为./pwdmanagedb,需要输入密码。

开启git远程同步功能

1
python pwdmanage.py --gitswitch True

默认为关闭的,即密码文件存储在本地,不会同步到远程git库中。

生成新密码


输入注册账号的网站url,以及用户名,即可生成密码。密码分为明文与密文,密文将会存储到pwd.db文件内,并同步到指定的git仓库中。

查询密码


输入url(支持模糊查询),可以查询出该url下注册的用户名与密码。

列举账户下所有的密码

1
python pwdmanage.py --l

列举出所有网站的账号密码。

删除密码

1
[-pwdmanage-]>> www.baidu.com nmask --delete

将百度网址的nmask账号删除。

手动设置密码

1
[-pwdmanage-]>> www.baidu.com nmask 123456 --set

将百度网址的用户名为nmask的密码设置为123456。

文件存储内容


都是经过特殊处理后的base64密文。

后记

  其实这个项目的关键点就在于密码生成的密文是否可能被解密,我想说可能性还是有的,比如说拿到了项目程序,恰巧破解了config.init中写的程序开启密码,并利用程序中内置的函数去解密。在实际使用时,会将py程序打包成可执行程序,避免源码泄露导致加密算法流出,当然通过反编译依然可以拿到源码。因此为了尽可能避免此事件,我的做法是将pwd.db文件与pwdmanage.py分离开,即退出程序后,将pwd.db文件删除,由于此文件是存在远端仓库中的,因此不用担心会丢失。而当别有用心之人拿到pwdmanage.py程序后,还必须知道远程项目地址密码,方可下载pwd.db并破解其中的密码。
  最后再补充一句,即使以上步骤都被攻破了,那也没关系,反正银行卡密码都在脑中,对了,还有caoliu密码。

补充说明

该工具目前只供自己把玩,主要原因在于功能还不完善,容易泄露密码,不敢轻易放出,待我研究研究。

本文标题:PwdManage密码管理工具

文章作者:nMask

发布时间:2017年04月24日 - 16:04

最后更新:2017年07月25日 - 20:07

原始链接:http://thief.one/2017/04/24/1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。