当前位置:博客首页>>Python >> 阅读正文

python实现的微盾解密算法

作者: 郑晓 分类: Python 发布于: 2013-12-05 17:50 浏览(3,414) 评论(2)


python实现的微盾解密算法
又是段简单的python练手代码,这两天看了一套php源码中有不少php文件被用微盾加密过,网上也有不少的php版微盾解密算法,看了下算法,都是一些比较简单的方法去实现的,正好自己这两天也在学习python,就拿来练练手,用python实现了出来。
基本算法写了出来做成批量解密也就so easy了,tkinter也学了一些,有时间的话就再给它改成图形界面的。

import os       #文件操作
import re       #正则
import base64   #base64解码

jiamifilename = 'jiemi.php' #待解密文件
lines = []
#打开文件,将数据放入列表
with open(jiamifilename,'r') as fp:
    for line in fp:
        lines.append(line)
    fp.close()
#第一次base64解码
p = re.compile("O0O0000O0\('.*'\)")
y = p.findall(lines[1])
content = ''
if y:
    content=y[0].replace("O0O0000O0('","")
    content=content.replace("')","")
    content=str(base64.b64decode(content))

#准备从第一次base64解码后的内容中查找密钥
decode_key=""
p = re.compile("\),'.*',")
k = p.findall(content)
if k:
    decode_key = k[0].replace("),'", "")
    decode_key = decode_key.replace("',","")

#查找要截取字符串长度
str_length=""
p = re.compile(",\d*\),")
k = p.findall(content)
if k:
    str_length = k[0].replace("),","")
    str_length = str_length.replace(",","")

#截取文件加密后的密文
Secret = lines[2][int(str_length):]
#准备还原密文
li = list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')
li_len = len(li)
xx = ''
for x in Secret:
    i = decode_key.index(x)
    if i>=li_len:
        xx += x
        continue
    xx += li[i]
#整理还原后的数据,准备输出到文件。
strs = base64.b64decode(xx.encode())
with open('decode.php', 'w') as f:
    f.write('<?php\n\r' + strs.decode()+'?>')
    f.close()
print('文件解密成功!')
input()

什么是PS:这两天发现郑晓个人博客的关键词:“个人博客”排名又上来了,争取下看能不能再回到首页。。。

       

本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/micro-shield-decryption-algorithm-implemented-python.html

python实现的微盾解密算法:目前有2 条留言

用户评论头像 seo发表于 2013年12月13日 13:58[回复]

世界在变、互联网在变、网络营销在变,SEO同样在变,所以我们SEOer的观点更需要变了,在不变就out了!!!

本文由说说seo论坛编辑,转载请备注原文地址:

用户评论头像 趣你的发表于 2013年12月12日 14:26[回复]

这个语言 也挺热的