首先我要声明一下,我并不是权威的专家,因为这个密码管理器它无论如何,只要能实现“私密、便捷与记忆”都是值得的,如果你要我问为啥是这样,那正如我一开始所说的那样,我不是这方面的专家。
可以看到很多市面上流行的一些密码管理器综合体验是还可以的,很多此类软件不加入联网权限,今天突发奇想,自己搞一个密码管理的。
大概意思就是这样的:用户(这里指我,当然也可以是你)先选择以下内容:
1.查看密码
2.更新内容
3.退出程序
当用户选择1时,需要输入查看的密码,比如123,密码正确则显示出解密后的内容,比如你的一些社交账号的密码;当用户输入2时,读取原先的加密文件并解密,然后自动补齐在光标前面,让用户进行编辑,由于是命令行,可以让用户输入“/end”表示超级结束,可以保存了,对程序来说,无非是再次进行加密并覆盖原先的文件;当用户选择3时,结束程序。
上述这些功能显然是需要无限循环的,当用户选择3时才跳出循环。
如果用户保存密码文件后,则需要在本地和云端各留存一份,本地和云端都只覆盖而不追加。这里用坚果云作为网盘来储存。
前期准备:
termux最新版
MT管理器最新版
一个坚果云账号
坚果云里面创建有第三方应用密码
流畅的网络
充足的内存
基础的Linux命令基础
1.下载最新的termux安卓版并安装打开。这是一款当前最为完善的移动Linux环境。
Termux的官方网站网址为https://termux.com/
2.安装MT管理器。这是一款安卓强大的逆向文件管理,安装打开备用。可以在酷安或者百度下载。
3.下载坚果云安卓版,或者进入电脑网页端,登录后在设置里找到第三方应用,创建一个应用,之后复制账号、用户名和应用密码。为了便于学习,请在坚果云创建一个文件夹名为ABC,这将是之后要备份文件的文件夹,所有上传的都可以存到这个目录。
4.链接网络,打开termux,双指放大界面直合适的字体大小,输入以下命令让termux获取储存权限。
termux-setup-storage
直接复制,不允许擅自大小写。在弹出的窗口中允许termux获取储存权限即可。此时你的termux才有资格操作手机的文件夹。
接下来换源,输入下列命令:
termux-change-repo
出现窗口之后全选(俺键盘的空格表示选中,按方向箭头表示移动),之后来到这个界面:
选择有BFSU的那个,点击空格后回车,将更新源。
这个界面出来后就成功了。
接下来安装python
换源后输入下面的命令
pkg install python
就会下载python环境,记住,当中途下载暂停让你选择的时候,上面写着默认选啥,你就写啥,比如默认“deauft=Y”你就写Y,默认N你就敲N,不要搞错,否则之后python的一些库无法安装。
出现这个就意味着成功安装python了。
以后要进入python编译界面,直接输入下面命令:
python
即可开始编写python代码。不过通常命令行的方式编写大量的代码不合适,因为如果一旦语法错误或者编写问题,就得从头开始。所以我们通过nano编写保存一个.py文件后再运行。
nano是一个termux自带的编辑器,类似于vim编辑器。但是这个比较适合快捷操作。语法如下:
nano 文件名
这里我们新建一个叫6.py的python文件,就这样搞:
nano 6.py
回车,进入编辑界面。
编写一个python程序,比如
编写完成后按下Ctrl后,再用键盘输入O,即可保存。然后问你保存的文件名
这里看不到光标,可以直接编辑,这里就不改了就叫6.py吧
按ctrl后输入X表示退出。
然后就退出nano编辑器了。
如何运行这个6.py呢?
语法如下:
python 6.py
回车即可运行6.py
这就是一个简单的编写python后运行的过程。之后都建议用这种方式。
3.接下来要下载专用的python相关库,输入如下命令安装request库:
pip install requests
等待安装完成。
接下来就将你要加密的文件用mt管理器写上。
打开mt管理器,点击主页下方中间的 后输入文件名,比如a.txt,然后点击“文件”,即可创建文件a.txt,点击a.txt后进入编辑,比如写上我的QQ号“2681338371”后点击右上角保存按钮即可退出。
记住这个a.txt的文件路径,如果正常的话,软件上方的路径加上a.txt就是本文件的路径(相对路径)
接下来,要对a.txt进行加密。因为里面保存了你的隐私和一些密码,所以要加密。这里我们用二次转码的方式进行简单加密,你也可以用其他方法加密。
通过python用base64将a.txt转为base64编码,然后再将这个编码再次进行base64编码,最后覆盖a.txt,这是你的a.txt就是一串编码了,足够防止人偷窥了。
代码思路如下:
import base64
# 读取a.txt中的内容并进行base64加密
with open(‘a.txt’, ‘r’) as f:
data = f.read().encode(‘utf-8’)
encoded_data = base64.b64encode(data)
encoded_data = base64.b64encode(encoded_data)
# 覆盖写入到a.txt中
with open(‘a.txt’, ‘w’) as f:
f.write(encoded_data.decode(‘utf-8’))
运行后a.txt就是一串密文。
解密也是一样的,只是倒过来了,先读取a.txt的密文,然后解码,之后再解码。
思路如下:
import base64
# 读取a.txt中的内容并进行base64解密
with open(‘a.txt’, ‘r’) as f:
encoded_data = f.read().encode(‘utf-8’)
decoded_data = base64.b64decode(encoded_data)
decoded_data = base64.b64decode(decoded_data)
# 覆盖写入解密后的内容到a.txt中
with open(‘a.txt’, ‘wb’) as f:
f.write(decoded_data)
这个代码是将解密后的内容覆盖掉a.txt,通常我们只是查看密码的话用不着再覆盖,直接打印出来即可。如果要上传到坚果云的话,就可以写入一个新的txt文件里然后将这个文件上传,然后在把这个文件删除。
接下来用python将名为a.txt的密文上传到坚果云。
去坚果云复制你的账号密码和应用密码。
如果没有应用密码,需要点击“添加应用密码”新建一个应用。
记得现在坚果云主页创建一个文件夹,自己创建,假设我这里新建了一个叫A的文件夹,那么对于坚果云来说,你的这个文件夹的路径是:
https://dav.jianguoyun.com/dav/A
接下来就是用python将你的a.txt上传到这个叫A的目录下。
那你要上传a.txt,这时路径就是这样的:
https://dav.jianguoyun.com/dav/A/a.txt
#上传坚果云
import os
import requests
from requests.auth import HTTPBasicAuth
dav_url = “https://dav.jianguoyun.com/dav/A”
#上传的服务器路径
local_file_path = “/storage/emulated/0/a.txt”
#需要上传的文件
auth=HTTPBasicAuth(“2681338371@qq.com”, “ab23tncus26q9dxq”)
#账号密码
with open(local_file_path, “rb”) as f:
file_content = f.read()
headers = {“Content-Type”: “text/plain”}
with requests.Session() as session:
session.auth = auth
response = session.put(dav_url, data=file_content, headers=headers)
print(response.status_code)
#打印返回响应码,201表示成功
print (“上传失败”) if response.status_code==”201″ else print (“上传成功!”)
运行。
记得a.txt文件的路径不要搞错。如果返回201表示上传成功。
在坚果云相应路径就会有你上床的内容。
如何从坚果云下载?
代码示例如下:
#下载坚果云
import requests
from requests.auth import HTTPBasicAuth
dav_url = “https://dav.jianguoyun.com/dav/A/a.txt”
#下载的路径
local_file_path = “/storage/emulated/0/a.txt”
#保存的路径
auth=HTTPBasicAuth(“2681338371@qq.com”, “ab23tncus26q9dxq”)
#账号密码
with requests.Session() as session:
session.auth = auth
response = session.get(dav_url)
with open(local_file_path, “wb”) as f:
f.write(response.content)
print(“下载成功!”)
运行后等结果就行,下载成功就会保存在你设置的目录下。
以上就是用来搭建密码本的基本思路,可以自行完善这个系统,比如增加输入密码才能查看….
下期讲一讲如何用termux配合python和api搭建一个chatGPT