位置: IT常识 - 正文

[Python]解密pyc文件(python解密加密文件)

编辑:rootadmin
公司的pyc做了加密, 前段时间研究了一下怎么解密. 最开始的思路是反汇编pypy的dll, 找到import代码的实现, 然后写一个解码的函数. 但是对反编译的东西不熟悉, 想要找到解密的地方比较困难. 最后放弃了这个思路. 后面看到了一篇pyc文件格式的文章, 得知pyc文件其实就是文件头+ma ...

推荐整理分享[Python]解密pyc文件(python解密加密文件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python解密加密文件,python密文解密为明文,python解密算法,python加解密文本文件,python解密算法,python 解密,python 解密,python解密密文,内容如对您有帮助,希望把文章链接给更多的朋友!

公司的pyc做了加密, 前段时间研究了一下怎么解密.

最开始的思路是反汇编pypy的dll, 找到import代码的实现, 然后写一个解码的函数. 但是对反编译的东西不熟悉, 想要找到解密的地方比较困难. 最后放弃了这个思路.

后面看到了一篇pyc文件格式的文章, 得知pyc文件其实就是文件头+marshal编码后的python vm字节码, 所以尝试了hook一下marshal.loads

import marshalcount = 0old_loads = marshal.loadsdef marshal_loads(s): global count pyc_hash = hashlib.md5(s).hexdigest() if pyc_hash in pyc_set: return old_loads(s) pyc_set.add(pyc_hash) count += 1 x = "O_" + str(count) with open("./dumps/%s.pyc" % x, "wb") as f: f.write(base64.b32decode('BLZQ2CR54CUFU===')) f.write(s) print(1, len(s)) return old_loads(s)marshal.loads = marshal_loads[Python]解密pyc文件(python解密加密文件)

然后去import那个pyc, 他自己修改过的python解释器会先解码加密过的pyc文件, 然后再走到marshal.loads, 这时候已经不是加密的内容, 所以我们可以加一个标准的pyc头重新组装成一个pyc, 只是不清楚当前这段bytes是哪个pyc文件的, 这个不是很重要, 反正所有import到的模块都会被dump出来.

下来用uncompyle6反编译就行了. 反编译出来的代码, 头部会标明自己是哪个模块, 再写一个脚本重新rename一下, 就可以了. 不过有少数代码会反编译失败.

文中那个'BLZQ2CR54CUFU===' magic number, 应该是我随便找了一个正常的pyc文件, 应该是python 2.7的, 如果是python 3的话, 找一个正常的pyc文件看看, 替换一下就行了.

最后吐槽一下, 把pyc文件加密有什么意义, 为啥要把脑子浪费在这种地方上???

参考:

1.PYC文件格式分析 (kdr2.com)

2.uncompyle6 · PyPI

本文链接地址:https://www.jiuchutong.com/zhishi/304695.html 转载请保留说明!

上一篇:Apache Druid 数据摄取---本地数据和kafka流式数据(apache druid使用)

下一篇:PHPCMS怎么配置https?(phpcms 数据库配置文件)

  • 已提折旧
  • 增值税纳税申报时间
  • 付款方和发票抬头不一致如何账务处理
  • 怎么从营业执照上看是不是一般纳税人
  • 长期待摊费用摊销会计分录
  • 承兑汇票区别
  • 职工交的商业保险怎么做账
  • 现金日记账是收付实现制吗
  • 出售股份的印花税怎么做分录?
  • 待认证进项分录
  • 汽车销售公司办公室周末上班吗知乎
  • 公对公房产转让税费
  • 参加会议需要用身份证吗
  • 车辆后期保养费用
  • 单位之间借款利息可以开票么
  • 纳税人识别码是啥
  • 物业前期介入费用测算
  • 如何查询已开出的增值税发票是否被认证
  • 个人劳务报酬所得汇算清缴
  • 印花税的计税金额
  • 一般纳税人两费减免会计分录
  • 代扣款怎么做账
  • 固定资产清理销项税
  • 公司向职工借款不还怎么办理
  • 提高并购成本
  • 工资薪金中的误餐补助,征收个人所得税
  • 出口退税成本核算
  • 企业合并资本公积转留存收益
  • 工地购买的零星材料计入什么科目
  • 右键菜单里的快捷键
  • 补贴收入什么时候到账
  • 太超过了
  • 桥梁水泥和普通水泥有什么区别
  • 开源项目有什么用
  • 基建会计的工作内容
  • web自动化selenium实战项目
  • php实现的http请求封装示例
  • 预付款项属于什么
  • ulimit设置不生效
  • 购进农产品直接销售核定农产品增值税进项税额计算表
  • 还原型谷胱甘肽的作用和功效
  • sql server数据表
  • 生活服务的行业
  • 资产负债表中的货币资金包括哪些
  • 赔偿损失费用发票怎么开
  • 单位买的空调计入什么科目
  • 利润表中的利息费用是利息支出吗
  • 企业所得税计算题及答案解析
  • 会计凭证中的数字怎么填
  • 别人借我的对公账户打钱
  • 事业单位零余额账户使用流程
  • 哪些发票可以报销哪些发票不可以报销
  • 怎么接收电子承兑汇票
  • 应付票据和应付债券的区别
  • 以前年度会计科目记错
  • 小企业会计应交所得税
  • centos下安装jdk
  • windowsxp删除所有内容
  • linux git教程
  • win7安装程序遇到错误0xc0000135
  • win10老是弹窗广告
  • linux系统没有yum
  • centos搭建v2
  • linux打成zip包
  • kwconfig.exe
  • win10网卡驱动不正常连不上网怎么办
  • Linux系统怎么设置中文输入法
  • cocos2d官网
  • node.js安装教程详细
  • JavaScript事件代理和委托详解
  • vue.js 开发工具
  • 在js里写html
  • 细说javascript
  • 数字图像处理软件idl和matlab有什么异同点
  • 从安卓设备导入
  • 税务局电话咨询电话
  • 填了专项附加扣除但没有进行综合年度汇算
  • 公司迁税务所流程
  • 北京市印花税减免政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设