放图片目录运行
import os import binascii import datetime import multiprocessing starttime = datetime.datetime.now() #判断运行时长 #下面是读取前10个文件计算xor值。 def xornum(list): for f in list[:10]: dat_read = open(f,"rb") xord = dat_read.read() hexstr = binascii.b2a_hex(xord)[:4] xorx = int(hexstr,16) jpg = int('FFD8',16) xorn = xorx ^ jpg xor = (hex(xorn))[:4] xor_list.append(xor) dat_read.close() #下面是把文件解密后放到image目录下 def imageDecode(f): xor = f[-2:] f = f[:-2] if os.path.exists("image/"+f[-36:-4]+".jpg") == True: pass else: dat_read = open(f,"rb") out="image/"+f[-36:-4]+".jpg" jpg_write = open(out, "wb") for now in dat_read: for nowByte in now: newByte = nowByte ^ int(xor,16) jpg_write.write(bytes([newByte])) dat_read.close() jpg_write.close() print(f[-36:-4]+".jpg",end='\r') if __name__ == '__main__': list = [] xor_list = [] #获取目录下全部除了 0.py image 外的文件名 定入list 中。 fsinfo = os.listdir() os.makedirs("image") if os.path.exists("image") == False else None for i in fsinfo: if i == "0.py" : pass elif i == "image": pass else: list.append(i) #获取前10个文件计算xor值。并判断出其中最多出现值在list中的位置。 xornum(list) x = 0 for i in range(len(xor_list)): a = xor_list.count(xor_list[i]) if int(a) > int(x) : x = a b = i else: pass print("xor为:"+xor_list[b]+" 共"+str(len(list))+"个文件!") #得到位置读取真 xor 值 xor = xor_list[b] #把xor值附加到list中。 在子进程再拆分。 不然xor不是全局变量。子进程无法获取。 for i in range(len(list)): list[i] += xor[-2:] #根据cpu核心数创建进程池。 pool = multiprocessing.Pool(int(multiprocessing.cpu_count())-1) #用multiprocessing.cpu_count()) 获取cup核心数 pool.map(imageDecode, list) pool.close() pool.join() #判断运行时长 endtime = datetime.datetime.now() print("") print (endtime - starttime)指定目录
import os import binascii path = r'D:\用户目录\我的文档\WeChat Files\user\FileStorage\Image\2019-{}' def xornum(list): for f in list[:10]: dat_read = open(f, "rb") xord = dat_read.read() hexstr = binascii.b2a_hex(xord)[:4] xorx = int(hexstr,16) jpg = int('FFD8',16) xorn = xorx ^ jpg xor = (hex(xorn))[:4] print(xor) dat_read.close() def imageDecode(list): for f in list: dat_read = open(f, "rb") out="image/"+f[-36:-4]+".jpg" jpg_write = open(out, "wb") for now in dat_read: for nowByte in now: newByte = nowByte ^ int(xor,16) jpg_write.write(bytes([newByte])) dat_read.close() jpg_write.close() print(f[-36:-4]+".jpg") if __name__ == '__main__': list=[] os.makedirs("image") if os.path.exists("image") == False else None for i in range(10,11): f = path.format(str(i)) a = f[-2:-1] if a == '-' : f = f[:-1]+"0"+f[-1:] else: pass fsinfo = os.listdir(f) for fn in fsinfo: temp_path = os.path.join(f, fn) if not os.path.isdir(temp_path): list.append(temp_path) else: pass xornum(list) print("上面出现最多的就是XOR值") xor = input("输入xor值: 0x" ) imageDecode(list)