吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1811|回复: 8
收起左侧

[Python 原创] 一个简单的加解密脚本

  [复制链接]
youkan_pj 发表于 2023-4-10 16:45

一个简单的加解密脚本

用途

在使用网盘的时候会对文件类型进行检查,这个脚本主要是通过修改文件类型标志来实现修改文件类型的,主要是zip格式和txt格式文件的互换。

用法

将python脚本和待加密或解密的文件放在同一个文件夹中,多次运行该脚本即可实现加密和解密。得到的zip可以直接解压缩然后查看文件。

注意

  1. 此脚本需要结合python环境;
  2. 不要随意修改文件名,这个可以看看代码。
  3. 如果运行出错很有可能是路径问题,建议再新建文件夹中操作

示例图片

今天突然发现微博图床不能用了,就不发图片的,内容也不难,看代码部分就行

代码

import os
# 2022-06-12 修改zip文件为txt,方便阿里云盘的分享限制
# 目前阿里云通过文件后缀名和文件格式信息来判断文件是否受限
# zip文件的格式信息为(0x04034b50)小端表示为504b0304,是使用范围最广的一种压缩格式
# 解决方法是将50替换为00(其他的十六也可以),将zip改为txt或其他可分享的格式

def encodeZip(fn):
    """
    将不可分享的zip加密为可分享的txt
    加密:修改.zip文件并对其重命名为5.txt
    :param fn: 要处理文件的名称
    """
    with open(fn, 'rb+') as ff:
        if ff.writable():
            ff.write(b'\x00')
    # 修改后进行重命名为xxx5.txt
    dst = fn[0:-4]+'5.txt'
    os.rename(fn, dst)

def decodeTxt(fn):
    """
    将无法使用的txt解密为可使用的zip压缩文件
    解密:修改.zip文件并对其重命名为5.txt
    :param fn: 要处理文件的名称
    """
    with open(fn, 'rb+') as ff:
        if ff.writable():
            ff.write(b'\x50')
    # 将名为为xxx5.txt 改为 xxx.zip
    dst = fn[0:-5]+'.zip'
    os.rename(fn, dst)

if __name__ == "__main__":
    dirs = os.listdir()
    for dr in dirs:
        if dr[-3:] == "zip":
            encodeZip(dr)
        if dr[-5:] == "5.txt":
            decodeTxt(dr)


解密为zip后直接解压可查看文件

解密为zip后直接解压可查看文件

加密为txt后可用于传输

加密为txt后可用于传输

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Sogrey 发表于 2023-4-11 22:28
还真是简单直接
eaglexiong 发表于 2023-4-14 21:41
 楼主| youkan_pj 发表于 2023-4-15 08:57
eaglexiong 发表于 2023-4-14 21:41
简单就是好,要的就是这个效果

有个缺点就是不能直接运行,我在想能不能写成exe程序
kewin525 发表于 2023-4-22 11:00
youkan_pj 发表于 2023-4-15 08:57
有个缺点就是不能直接运行,我在想能不能写成exe程序

请问下载后如何解密呢?我的理解是:是不是我运行一次加密后就可以上传,下载后再运行一次就解密了?
另外如果要封装成exe程序,最好给代码加个gui页面,页面两个按钮,一个按钮叫选择文件,可以选择文件路径,另一个按钮叫加解密,执行你的程序。执行完成后再gui页面上有提示语“文件已加解密完成”字样就人性化了。另外我平时用的python打包工具叫“auto-py-to-exe”,很好用。
kewin525 发表于 2023-4-22 14:02
youkan_pj 发表于 2023-4-15 08:57
有个缺点就是不能直接运行,我在想能不能写成exe程序

在你代码基础之上增加了GUI页面,选择加密或者解密时可以选择要加密或解密的文件。代码如下:
[Asm] 纯文本查看 复制代码
import os
import tkinter as tk
from tkinter import messagebox
from tkinter import filedialog


def encodeZip(fn):
    """
    将不可分享的 zip 加密为可分享的 txt
    加密:修改.zip 文件并对其重命名为 5.txt
    :param fn: 要处理文件的名称
    """
    with open(fn, 'rb+') as ff:
        if ff.writable():
            ff.write(b'\x00')
    # 修改后进行重命名为 xxx5.txt
    dst = fn[0:-4]+'5.txt'
    os.rename(fn, dst)
    messagebox.showinfo("完成", "文件已成功加密")

def decodeTxt(fn):
    """
    将无法使用的 txt 解密为可使用的 zip 压缩文件
    解密:修改.zip 文件并对其重命名为 5.txt
    :param fn: 要处理文件的名称
    """
    with open(fn, 'rb+') as ff:
        if ff.writable():
            ff.write(b'\x50')
    # 将名为为 xxx5.txt 改为 xxx.zip
    dst = fn[0:-5]+'.zip'
    os.rename(fn, dst)
    messagebox.showinfo("完成", "文件已成功解密")


if __name__ == "__main__":
    # 创建 GUI 界面
    root = tk.Tk()
    root.title("文件加解密")

    # 创建画布
    canvas = tk.Canvas(root, width=275, height=100, bg='white')
    canvas.pack()

    # 创建文本框
    tk.Button(root, text="加密", command=lambda: encodeZip(filedialog.asksaveasfilename(title="选择要加密的文件"))).pack()

    # 创建按钮
    tk.Button(root, text="解密", command=lambda: decodeTxt(filedialog.asksaveasfilename(title="选择要解密的文件"))).pack()

    # 进入消息循环
    root.mainloop()
 楼主| youkan_pj 发表于 2023-4-23 08:24
kewin525 发表于 2023-4-22 14:02
在你代码基础之上增加了GUI页面,选择加密或者解密时可以选择要加密或解密的文件。代码如下:
[mw_shl_c ...

之前花了一天写了一个exe的发了个帖子,被审核出来留了qq邮箱就删除了,我偶然测试了一下那个exe处理2.5G的压缩包时崩了,就没有想等有空的时候修复一下再传上来。审核确实牛逼很用心,保护网页权益很认真。
 楼主| youkan_pj 发表于 2023-4-23 08:26
kewin525 发表于 2023-4-22 11:00
请问下载后如何解密呢?我的理解是:是不是我运行一次加密后就可以上传,下载后再运行一次就解密了?
另 ...

对,看程序的逻辑就是通过判断后缀来处理的
 楼主| youkan_pj 发表于 2023-4-23 08:31
kewin525 发表于 2023-4-22 11:00
请问下载后如何解密呢?我的理解是:是不是我运行一次加密后就可以上传,下载后再运行一次就解密了?
另 ...

你也可以自己发个帖子,备注一个引用或参考自这就行。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表