This repository has been archived by the owner on Dec 9, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: add README.md about EroImgBlender, ImageMagick and UPX
- Loading branch information
1 parent
9ca9e09
commit 64e408e
Showing
8 changed files
with
1,529 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
@echo off | ||
|
||
del Run.exe | ||
pyinstaller Run.py --upx-dir=.\upx -y --onefile | ||
move .\dist\Run.exe . | ||
del Run.spec | ||
rd /s /q .\build .\dist | ||
|
||
pause |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
# 色图混淆器 | ||
|
||
这是一个可以以**随机顺序**打乱并重组图片的小工具 | ||
|
||
众所周知,最近国内最大的两个邪恶IM软件的内置检测越来越严重,很多色图都被针对了 | ||
|
||
苦于发色图容易被系统自动撤回,或被内鬼举报封号 | ||
|
||
于是就蛋疼地用Python开发了这个小工具 | ||
|
||
## 注意事项 | ||
|
||
1. 在使用本工具处理图片后,记得在分享图片的同时,把生成的色图密码与本工具项目页面一同分享 | ||
|
||
2. 本工具使用GPLv3许可证进行开源,请所有需要二次开发、魔改的用户注意必须以同等的程度开放源码 | ||
|
||
3. 傻瓜包中包含[ImageMagick](https://imagemagick.org/script/index.php),在二次开发或再发行时,请务必遵守它开发团队的的[许可证](https://github.com/ImageMagick/ImageMagick/blob/main/LICENSE) | ||
|
||
## 使用方法 | ||
|
||
1. 下载傻瓜包 | ||
|
||
1. 进入[Releases](https://github.com/chinanoahli/Ero_Img_Blender/releases)页面下载 | ||
|
||
2. 解压傻瓜包到任意目录<sub>(推荐路径中不要包含中文和空格,虽然有应该也是不影响的)</sub> | ||
|
||
3. 把要混淆或解密的图片放置到`input_imgs`文件夹中 | ||
|
||
4. 运行`Run.exe` | ||
|
||
5. 根据提示立即开冲 | ||
|
||
2. 手动建立运行环境 | ||
|
||
1. 安装*Python 3.10*,以及下列*pip*包 | ||
|
||
+ Pillow==9.2.0 | ||
|
||
+ pretty-errors==1.2.25 | ||
|
||
+ pyinstaller==5.2 (非必要,将py文件打包成exe用) | ||
|
||
2. 下载[ImageMagick](https://imagemagick.org/script/download.php#windows)的可执行文件,解压并放置到`imagemagick`目录中,[点此查看说明](./imagemagick) | ||
|
||
3. 运行`Run.py`即可 | ||
|
||
4. 如果你想要进行二次开发,并将py文件打包成单个exe文件,你可能需要UPX,[点此查看说明](./upx) | ||
|
||
## 图解实现原理 | ||
|
||
下面以`3 x 3`的分块模式,色图密码为`5.3.8.4.6.2.0.7.1`,且省略拓展长和宽的情况进行进行举例: | ||
|
||
1. 假设有下面一张图片 | ||
|
||
``` | ||
┌──────┬──────┬──────┐ | ||
│ 0 │ 1 │ 2 │ | ||
├──────┼──────┼──────┤ | ||
│ 3 │ 4 │ 5 │ | ||
├──────┼──────┼──────┤ | ||
│ 6 │ 7 │ 8 │ | ||
└──────┴──────┴──────┘ | ||
``` | ||
|
||
2. 首先,混淆器会将这张图片平均分割成`9`张小的图片 | ||
|
||
``` | ||
┌──────┐ ┌──────┐ ┌──────┐ | ||
│ 0 │ │ 1 │ │ 2 │ | ||
└──────┘ └──────┘ └──────┘ | ||
┌──────┐ ┌──────┐ ┌──────┐ | ||
│ 3 │ │ 4 │ │ 5 │ | ||
└──────┘ └──────┘ └──────┘ | ||
┌──────┐ ┌──────┐ ┌──────┐ | ||
│ 6 │ │ 7 │ │ 8 │ | ||
└──────┘ └──────┘ └──────┘ | ||
``` | ||
|
||
3. 接着,根据色图密码对图片进行重新排列 | ||
|
||
``` | ||
┌──────┐ ┌──────┐ ┌──────┐ | ||
│ 5 │ │ 3 │ │ 8 │ | ||
└──────┘ └──────┘ └──────┘ | ||
┌──────┐ ┌──────┐ ┌──────┐ | ||
│ 4 │ │ 6 │ │ 2 │ | ||
└──────┘ └──────┘ └──────┘ | ||
┌──────┐ ┌──────┐ ┌──────┐ | ||
│ 0 │ │ 7 │ │ 1 │ | ||
└──────┘ └──────┘ └──────┘ | ||
``` | ||
|
||
4. 最后,将图片以重排后的顺序组合起来 | ||
|
||
``` | ||
┌──────┬──────┬──────┐ | ||
│ 5 │ 3 │ 8 │ | ||
├──────┼──────┼──────┤ | ||
│ 3 │ 6 │ 2 │ | ||
├──────┼──────┼──────┤ | ||
│ 0 │ 7 │ 1 │ | ||
└──────┴──────┴──────┘ | ||
``` | ||
|
||
5. 而解密器的顺序则是逆向的,从第4步开始,逆向走向第1步 | ||
|
||
6. 更详细的实现原理请参考下面的「实现原理」 | ||
|
||
## 实现原理 | ||
|
||
1. 混淆部分 | ||
|
||
1. 首先,混淆器会先根据用户选择的分块数量生成一个随机序列<sup>\*</sup> | ||
|
||
<sub>如:用户选择了将图片分层`3 x 3`块,那么程序就会生成一个包含数字`0 ~ 9`随机序列</sub> | ||
|
||
<sub>假设:随机序列为`5.3.8.4.6.2.0.7.1`</sub> | ||
|
||
2. 接着混淆器会计算图片的*宽*和*高*,是否可以被等分成**3份**,如果不可以,就会对长或宽(或同时)进行**扩展**<sub>(非拉伸)</sub>,扩展的部分为黑色填充,这样做是为了防止[ImageMagick](https://imagemagick.org/script/index.php)在恢复时无法准确找到切分点 | ||
|
||
<sub>假设:宽无需扩展,而高拓展了*2px*</sub> | ||
|
||
3. 同时,长和宽扩展的像素数量会被存入*色图密码*的头两节中,也就是色图密码开头的`RxBx` | ||
|
||
<sub>经过上面两步处理,就可以组合出色图密码`R0.B2.5.3.8.4.6.2.0.7.1`</sub> | ||
|
||
4. 然后,混淆器会调用[ImageMagick](https://imagemagick.org/script/index.php)对图像进行`3 x 3`的分割 | ||
|
||
5. 最后,混淆器会根据随机数序列的顺序,选取已分割的图片进行拼接,就可以得出混淆后的图片 | ||
|
||
<sub>假设采用上面的序列的话,那么拼接时,第1张将会是序号为`5`的图片,第2张将会是序号为`3`的图片,依此类推</sub> | ||
|
||
\*. 随机序列每次混淆成都会重新生成,所以同一张图片多混淆几次也不会是同一个结果 | ||
|
||
2. 解密部分 | ||
|
||
1. 在选择需要解密的图片后,解密器会要求用户输入*色图密码* | ||
|
||
2. 首先,解密器会从色图密码中提取混淆时生成的随机序列,以及图像宽和高的拓展像素 | ||
|
||
3. 其次,解密器会根据随机序列的长度,对图片进行分割 | ||
|
||
<sub>因为分块只有`3 x 3`、`4 x 4`和`5 x 5`三种选项,所以序列只能有9、16和25位</sub> | ||
|
||
4. 接着,解密器会根据色图密码生成用于解密的解密序列 | ||
|
||
<sub>假设:用上面混淆部分生成的随机序列作为举例:</sub> | ||
|
||
<sub>1. 我们可以看到,原本处于第`0`号的分块被放在随机序列的第`6`位,为了还原图片,需要先取出这个分块,所以解密序列的第1个数应该为`6`</sub> | ||
|
||
<sub>2. 第`1`号的很快被放在随机序列的第`8`位,所以解密序列的第2个数应该为`8`</sub> | ||
|
||
<sub>3. 依此类推,就可以得出完整的解密序列`6.8.5.1.3.0.4.7.2`</sub> | ||
|
||
5. 然后,解密器会根据解密序列,对图片进行拼接 | ||
|
||
6. 最后,解密器会根据色图密码中的`RxBx`对图片进行裁剪,消去混淆器增加的黑色填充 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
@echo off | ||
|
||
python .\Run.py | ||
|
||
pause |
Oops, something went wrong.