祝大家中秋节快乐~
得闲记录点东西
加密软件
首先,加密软件长这样。
进程名
sdhelper2.exe
。
他有一个授权软件列表,使用授权软件才能打开被加密的文件。
使用授权软件修改后的文件会被加密,被加密的文件右下角会有个小锁。
不在授权列表中的 exe 打开被加密的文件
可以看到编码被进行了改动,非授权软件无法打开被加密的文件。
应对办法
首先,受多方面投诉,对ini
文件进行加密处理,使用授权软件修改 ini 文件并不会加密。
编写解密.bat
脚本实现手动解密。
- 重命名当前文件夹中的
*.ini
文件为*.bak
。 - 因
python
位于授权列表中,可打开解密文件,故选用python
编写脚本,以二进制方式打开文件rb
。 - 新建文件,后缀为
.ini
,以二进制写文件wb
。 - 删除原文件。
- 将新建的
.ini
文件重命名为原文件名。(此处不可用python
脚本进行,会被重新加密) - 将
*.bak
重命名回*.ini
。 - (针对
*.pdf
文件,解密后不久就会被再次加密,故将其先解密,然后用WinRAR
进行压缩打包,此处需将 WinRAR 加入PATH
中)。
批处理脚本如下
rem = """
@ECHO OFF&PUSHD %~DP0 &TITLE decode &chcp 65001 &mode con cols=35 lines=8
color 3F
set /p xj= 请输入文件后缀(不包括.):
for %%i in (*.ini) do (ren %%i *.bak)
python.exe %0 %xj%
if /i "%xj%" == "pdf" goto PDF
for %%i in (*.ini) do (ren %%i *.%xj%)
for %%i in (*.bak) do (ren %%i *.ini)
echo 完成!
::pause
goto endofPython
:PDF
for %%i in (*.ini) do (ren %%i *.%xj%)
for %%i in (*.%xj%) do (winrar a %%~ni.zip %%~ni.pdf)
for %%i in (*.bak) do (ren %%i *.ini)
echo finished!
::pause
goto endofPython
"""
import os
import sys
suffix = sys.argv[1]
files = os.listdir('.')
for name in files:
if os.path.splitext(name)[1]=='.'+suffix:
f = open(name,'rb')
try:
all_the_text = f.read()
finally:
f.close()
new_name = os.path.splitext(name)[0]+'.ini'
writeFile = open(os.path.splitext(name)[0]+'.ini','wb')
writeFile.write(all_the_text)
writeFile.close()
os.remove(name)
rem = """
:endofPython """
此处利用 python
的注释符```和批处理的注释符 rem
实现将python
脚本嵌入批处理脚本中。