pcbat转图⽚程序⾃动版
最近正好⽤到该功能,根据⽹上各个⼤佬提供的代码和原理改写的。
因为每个的bat需要做异或计算的值都不⼀样,但各种图⽚的头部信息值是固定的,可以根据此计算出不同需要异或的值,使每个的bat都可⾃动计算成图⽚,以下代码:
# -*- coding: utf-8 -*- #!
# weixin_Image.bat 破解
# JPG 16进制 FF D8 FF
# PNG 16进制 89 50 4e
# .bat 16进制 e1 c6 e1
# key 值 1e1e 0x1e  weixin.bat-jpg
import os
#image⽂件路径
print(u'bat转图⽚')
print(u'----------------------------')
print(u'请键⼊ bat输⼊⽂件夹')
into_path = input()
print(u'请键⼊图⽚输出⽂件夹')
out_path=input()+u'\\'
def imageXor(f):
"""
代码转换
计算异或值
各图⽚头部信息
jpeg:ff d8 ff
png:89 50 4e 47
gif: 47 49 46 38
"""
dat_read = open(f, "rb")
try:
a = [(0x89, 0x50, 0x4e), (0x47, 0x49, 0x46), (0xff, 0xd8, 0xff)]
for now in dat_read:
for xor in a:
i = 0
res = []
nowg = now[:3]
for nowByte in nowg:
res.append(nowByte ^ xor[i])
i += 1
if res[0] == res[1] == res[2]:
return res[0]
except:
pass
finally:
dat_read.close()
def imageDecode(f,fn):
"""
解码
:param f: 图⽚路径
:param fn:图⽚⽬录下的.bat
:return:
"""
#先计算出偏移值
change_Byte = imageXor(f)
# 读取.bat
dat_read = open(f,"rb")
dat_read = open(f,"rb")
# 图⽚输出路径
out = out_path + fn + ".jpg"
# 图⽚写⼊
png_write = open(out,"wb")
# 循环字节
for now in dat_read:
for nowByte in now:
# 转码计算
newByte = nowByte ^ change_Byte
# 转码后重新写⼊
png_write.write(bytes([newByte]))
dat_read.close()
png_write.close()
# pass
def findFile(f):
"""
寻⽂件
:param f:图⽚路径
:return:
"""
# 把路径⽂件夹下的⽂件以列表呈现
fsinfo = os.listdir(f)
# 逐步读取⽂件
change_Byte=None
for fn in fsinfo:
# 拼接路径:图⽚路径+图⽚名
temp_path = os.path.join(f,fn)
# 判断⽬录还是.bat
if not os.path.isdir(temp_path):
print('⽂件路径:{}'.format(temp_path))            print(fn)
# 转码函数
imageDecode(temp_path,fn)
else:
pass
# 运⾏
findFile(into_path)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。