使用 Keepass 来管理账号密码等隐私信息已经过去7年了,大量账号需要集中分类管理,尤其是早期使用的时候,很多账户没有设置有效期,比如网易云邮箱,180天没有登录,邮箱账号被无情回收了。。 考虑到账号的安全性,目前需要对所有账户设置一个有效期,所有账户半年后提示登录一次,强制更改密码。
由于账户较多,不太情愿一个一个的去设置,为此查找了相关插件以及API,通过一个自定义脚本实现批量修改Keepass过期时间。
这个就不多说,下载 Scripting KeePass 插件,由于插件是最新版本的,所以Keepass 也需要一同更新到最新版本。下载链接如下:
Scripting KeePass (2.x) - KeePass
新建脚本文件 keepass_tools.ps1,输入下面代码:
##################################
### Backup your password file! ###
### Edit these items as needed ###
##################################
$kps = 'C:\Program Files (x86)\KeePass Password Safe 2\KPScript.exe'
$kdbx = '<your keepass file>'
$pass = '<your password>'
$keyfile='C:\Users\xx.jpg'
# Get entries
$output = & "$kps" -c:ListEntries "$kdbx" -pw:$pass -keyfile:"$keyfile"
$pattern = 'UUID: '
$uuids = $output | Select-String -pattern $pattern
$count = $uuids.Matches.Count
# Update each entry
foreach ($match in $uuids) {
[DateTime]$theMin = [DateTime]::Now
[DateTime]$theMax = [DateTime]::Now.AddDays(365)
$theRandomGen = new-object random
$theRandomTicks = [Convert]::ToInt64( ($theMax.ticks * 1.0 - $theMin.Ticks * 1.0 ) * $theRandomGen.NextDouble() + $theMin.Ticks * 1.0 )
$newDate = new-object DateTime($theRandomTicks)
echo "$count items remaining"
$count = $count - 1
$uuid = $match.Line.Substring($pattern.Length)
$output = & "$kps" -c:EditEntry "$kdbx" -pw:$pass -keyfile:"$keyfile" -refx-UUID:"$uuid" -setx-Expires:"true" "-setx-ExpiryTime:$newDate"
}
$x = Read-Host -Prompt 'Finished - Press Enter to continue'
执行结果:
更多资料可以查看下面链接:
KeePass / Feature Requests / #1318 Change Expiration Date from List (sourceforge.net)
1、执行脚本之前,请做好备份!
2、保存 powershell 执行需要管理员权限,别用cmd执行!
3、注意ps1代码编码为GB2312而不是UTF8
4、完事之后, Scripting KeePass 插件就可以删掉了,应该删掉。
博客地址:http://blog.yoqi.me/?p=17599
这篇文章还没有评论