banner
andrewji8

Being towards death

Heed not to the tree-rustling and leaf-lashing rain, Why not stroll along, whistle and sing under its rein. Lighter and better suited than horses are straw sandals and a bamboo staff, Who's afraid? A palm-leaf plaited cape provides enough to misty weather in life sustain. A thorny spring breeze sobers up the spirit, I feel a slight chill, The setting sun over the mountain offers greetings still. Looking back over the bleak passage survived, The return in time Shall not be affected by windswept rain or shine.
telegram
twitter
github

令人震惊的Python自动化脚本,你必须尝试(4)

7、密码管理器 这个自动化脚本可以帮助你管理所有密码,使它们既安全又只有你能访问,使用不同的加密技术。

# 导入所需的库
import streamlit as st
import csv
from cryptography.fernet import Fernet
from cryptography.fernet import InvalidToken

# 自定义加密密钥(硬编码)
CUSTOM_ENCRYPTION_KEY = b'u7wGgNdDFefqpr_kGxb8wJf6XRVsRwvb3QgITsD5Ft4='  
# 如果您计划在共享平台上使用此脚本,请确保将此密钥保存在一个单独的安全文件中。

# 函数用于加密密码
def encrypt_password(password):
    cipher_suite = Fernet(CUSTOM_ENCRYPTION_KEY)
    encrypted_password = cipher_suite.encrypt(password.encode())  # 将密码编码后加密
    return encrypted_password

# 函数用于解密密码
def decrypt_password(encrypted_password):
    if isinstance(encrypted_password, bytes):  # 检查加密密码是否为bytes类型
        try:
            cipher_suite = Fernet(CUSTOM_ENCRYPTION_KEY)
            decrypted_password = cipher_suite.decrypt(encrypted_password)  # 解密
            return decrypted_password.decode()  # 将bytes解码为字符串
        except InvalidToken:
            return "Invalid Token"  # 若密钥不正确,返回无效令牌信息
    else:
        return None

# 函数用于将网站名和密码保存到CSV文件
def save_credentials(website_name, password):
    encrypted_password = encrypt_password(password)  # 先加密密码
    with open('credentials.csv', 'a', newline='') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow([website_name, encrypted_password.decode()])  # 将加密后的密码解码为字符串后存储

# 函数用于从CSV文件检索密码
def retrieve_password(website_name):
    with open('credentials.csv', 'r') as csvfile:
        reader = csv.reader(csvfile)
        for row in reader:
            if row[0] == website_name:
                encrypted_password = row[1].encode()  # 重新编码为bytes
                return encrypted_password
    return None

# 使用Streamlit创建Web界面
st.title("密码管理器")

# 输入字段用于输入网站名和密码
website_name = st.text_input("输入网站名:")
password = st.text_input("输入密码:", type="password")

# 保存按钮用于保存网站名和密码
if st.button("保存"):
    if website_name and password:
        save_credentials(website_name, password)
        st.success("网站名和密码已成功保存。")
    else:
        st.error("请填写所有字段。")

# 检索按钮用于检索密码
if st.checkbox("检索密码"):
    website_name = st.selectbox("选择网站名:", options=[""] + [row[0] for row in csv.reader(open('credentials.csv', 'r'))])
    key = st.text_input("输入您的加密密钥:", type="password")
    if st.button("检索密码"):
        if key == str(CUSTOM_ENCRYPTION_KEY.decode()):
            if website_name:
                encrypted_password = retrieve_password(website_name)
                if encrypted_password:
                    decrypted_password = decrypt_password(encrypted_password)
                    st.success(f"网站**{website_name}** 的密码 -> **{decrypted_password}**")
                else:
                    st.error("数据库中未找到密码。")
        elif key == "":
            pass
        else:
            st.error("无效的加密密钥!")

image

8、批量邮件发送器 这个自动化脚本利用 Gmail 自己的 SMTP 服务器发送批量电子邮件,仅需几分钟,允许你完全自定义并掌控。

# 导入smtplib库用于邮件传输
import smtplib
# 导入ssl库用于建立安全的连接
import ssl

# SMTP服务器的详细信息
smtp_server = 'smtp.gmail.com'  # 使用的Gmail的SMTP服务器地址
smtp_port = 465  # 使用的端口号,Gmail的SSL端口是465

# 发送者和接收者的详细信息
from_address = 'yuhualong Shop'  # 发件人地址或名称
to_address = ['', '']  # 接收者列表,可以添加多个接收邮箱地址

# 认证信息
username = ''  # 发件人的邮箱账号
password = ''  # 发件人的邮箱密码

# 邮件内容的详细信息
subject = '🎉 独家优惠!您下次购物可享受10%的折扣'
body = '''\
亲爱的顾客,

作为我们尊贵的客户,为了表达我们的感激之情,我们为您的下次购买提供了一项独家折扣。在结账时使用下面的优惠码,您可以享受订单10%的折扣:

优惠码:DISCOUNT888

无论您是在寻找时尚的服饰、潮流的配饰还是高质量的产品,现在是购物并节省开支的最佳时机!探索我们的最新系列,并给自己买些特别的东西。抓紧时间!此优惠仅限时有效。不要错过节省您最爱物品的机会。

立即购物:https://xyz.com

感谢您选择yuhualong Shop。我们期待着不久再次为您服务!

最好的祝福,
yuhualong Shop
'''

# 创建一个SSL/TLS的上下文环境
context = ssl.create_default_context()

# 使用SSL/TLS通过SMTP服务器连接
with smtplib.SMTP_SSL(smtp_server, smtp_port, context=context) as server:
    # 启用调试级别,打印服务器的响应信息
    server.set_debuglevel(1)
    # 登录SMTP服务器
    server.login(username, password)
    # 创建电子邮件消息
    message = f'From: {from_address}\r\nSubject: {subject}\r\nTo: {", ".join(to_address)}\r\n\r\n{body}'
    message = message.encode()  # 将消息转换为字节格式
    # 发送邮件
    server.sendmail(from_address, to_address, message)
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。