该脚本能安全地在磁盘上自定义数据库文件中加密或解密密码。它还具备从先前生成的数据库文件中检索密码的功能。该脚本从标准输入/内存获取主密码,使用传递给算法参数/-a(scrypt, sha256)的指定哈希算法对密码进行哈希,最后利用该哈希作为AES-256密钥(密钥派生)对文件数据进行AES-256加密/解密。当向算法参数提供'scrypt'参数时,脚本会在每次数据库文件编辑或创建时生成一个自定义的scrypt盐。唯一生成的盐经过base64编码,并以回车换行字节(用于解析)分隔,作为元数据附加到每个数据库文件的加密字节前。当使用更改密码参数/-cp时,脚本会将数据库文件的数据解密到内存中,向数据库文件写入随机字节*WIPE_PASSES,截断文件,最后使用新的哈希主密码将新数据以AES-256加密后写入数据库文件。这有效地增加了数据恢复/取证的难度。
创建数据库文件:
python3 aespasswd_store.py -a scrypt -c <filename>
更改数据库文件的主密码:
python3 aespasswd_store.py -a scrypt -cp <filename>
编辑数据库文件:
python3 aespasswd_store.py -a scrypt -e <filename>
从数据库文件中查询数据:
python3 aespasswd_store.py -a scrypt -q <filename>
示例:
# Add entry to the database/modify existing data:
pass_id1=password
pass_id2=password
pass_id3=password
# Delete existing data:
pass_id1=delete
pass_id2=delete
# -q parameter: Query data (entering nothing dumps all data):
pass_id1
pass_id3
# Press ctrl+D (linux) or ctrl+Z (windows) to save data from stardard input.