Skip to content

xiaoxi-ij478/pep_disc_decrypt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

解密人教社光盘

人教社把教材光盘做了层层加密, 但本着学习课程玩耍&自由的原则, 我尝试解密了这些资源

声明

解密的所有内容, 版权仍归属于各自作者.

此解密代码仅用于学习, 研究用途.

本人不承担因倒卖此脚本和解密后视频, 音频, 制作修改后的光盘镜像带来的后果.

使用方法

(如果你已经解压了 ISO 并获得了 data/ 文件夹, 那么直接跳转到第二步)

1. 解压 ISO

如果你有 Winrar, 直接用 Winrar 解压 ISO 即可

这一步仅针对 data/ 被隐藏且没有其他办法解压的 ISO, 使用此脚本可以显示被隐藏的 data/

使用方法: iso_decrypt.py [选项]... [输入文件]
解密人教社光盘 ISO

输入 / 输出文件可以是 `-' 以从标准输入读取 / 写入到标准输出
默认行为是解密标准输入到标准输出

  -o, --output <输出文件>   写入输出到 <输出文件> (默认为标准输出)
                            (如果 <输出文件> 存在且 `-r' 没有指定, 则抛出错误)
  -f, --dir <目录>          将输出文件放置在 <目录> 下
                            (不可与 `-r' 同时使用)
  -r, --replace             如果没有 `-o', 则替换输入文件 (除非是标准输入)
                            如果有 `-o', 则强制覆盖指定的输出文件
  -h, --help                显示这个帮助

2. 解密文件

使用方法: file_decrypt.py [选项]... [输入文件]
加密 / 解密人教社光盘的文件

输入 / 输出文件可以是 `-' 以从标准输入读取 / 写入到标准输出
默认行为是解密标准输入到标准输出

  -e, --encrypt <算法 ID>   使用 <算法 ID> 加密文件
  -d, --decrypt             解密文件 (默认行为)
  -o, --output <输出文件>   写入输出到 <输出文件> (默认为标准输出)
                            (如果 <输出文件> 存在且 `-r' 没有指定, 则抛出错误)
  -f, --dir <目录>          将输出文件放置在 <目录> 下
                            (不可与 `-r' 同时使用)
  -r, --replace             如果没有 `-o', 则替换输入文件 (除非是标准输入)
                            如果有 `-o', 则强制覆盖指定的输出文件
  -h, --help                显示这个帮助

文件的两个加密算法

目前, 人教社使用了两个加密算法 (具体什么原理我也没看懂, 反正就是照搬过来了), 每个文件用什么都是随机的.

这就导致了解密时容易忘记原本文件的加密算法, 所以我将文件原本的加密算法 ID 写到了 <文件名>.enc_algo 下.

当重新加密时, 如果有这样的文件, 那么加密算法 ID 就会从此文件读取.

P.S. 实际上有三个算法, 但是 Flash 里只写了 1 和 3 两种.

扩展

file_decrypt.pyEncryptManager 类, 可以在自己的程序中使用.

实例方法:

  • encrypt(enctype, bytestream)
    • 加密 bytestream, 返回加密的内容
    • enctype: 加密算法 ID
    • bytestream: 要加密的字节
  • decrypt(bytestream)
    • 解密 bytestream, 返回解密的内容
    • bytestream: 要解密的字节

示例:

import file_decrypt
def decrypt(filename):
    decryptor = file_decrypt.EncryptManager()
    with open(filename, "rb") as file:
        open(filename + "_dec", "wb").write(decryptor.decrypt(file.read()))

项目的历史

这个项目原本是 Gist 上的一个脚本: https://gist.github.com/xiaoxi-ij478/a36a7a2d99ccb77b3b8c034ad5167947

About

解密人教社光盘

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages