python版xor解密源码
来源:互联网 发布:有sql注入漏洞的网站 编辑:程序博客网 时间:2024/06/06 07:51
【前言】
前天fireeye出了一份最新的关于APT28的报告,提到了最新的0day组合攻击。其中,包括微软Office的两个EPS图形文件的远程代码执行漏洞 ( CVE-2017-0261, CVE-2017-0262 ),和一个本地提权漏洞(CVE-2017-0263 ). 具体细节已经公开. 2015年火眼曾经公开了一个关于EPS的高危漏洞(CVE-2015-2545),让人记忆深刻。
0x01 EPS文件
CVE-2017-0262这个流行样本是名为【Trump’s_Attack_on_Syria_English.docx 】的docx文档,里面嵌入了恶意的eps文件. 个人认为这名字诱惑力很大,在中国的话可以起名为”2017年上海国际车展车模联系名单”,”震撼!女大学生夜跑被..”的头条体。 扯远了,回头。
这个EPS恶意文件通过XOR加密算法做了简单的混淆。解密用的key是0xc45d6491.
$ cat word/media/image1.eps%!PS-Adobe-3.0%%BoundingBox: 36 36 576 756%%Page: 1 1/A3{ token pop exch pop } def /A2 <c45d6491> def /A4{ /A1 exch def 0 1 A1 length 1 sub { /A5 exch def A1 A5 2 copy get A2 A5 4 mod get xor put } for A1 } def <bf7d4bd9[..这个是很长的加密后文本..]b97d44b1> A4 A3 exec quit
简单的方法是安装postscript程序执行这段代码,即可得到解密结果。
0x02 EPS文件解析
问题来了-什么是PostScript?
PostScript是一种用于描述矢量图形的页面描述语言。简单的说,用PostScript语言写成的文件就是PS格式的图片,一般文件后缀用 ps ,简称为PS文件。作为语言,该文件是可以用编辑器打开查看的。
看到“页面描述语言”这个词,可能会联想到HTML等网页标记语言。没错, PostScript的主要作用就是记载需要打印出的各种文字和图形,但它还是 一种简单的编程语言,支持分支、循环等控制结构,以及数组、字典等简单 的数据结构。
运行PostScript
查看PostScript文件需要使用PostScript解释器。最常见的解释器就是 GhostScript。Windows版只需下载 gs871w32.exe安装即可。Linux下一般都包含在发行版中,使用相应的 管理程序自动安装即可,例如Ubuntu下可以这样安装
$ sudo apt-get install ghostscript
安装完成后即可从开始菜单中启动GhostScript(Linux下直接使用 gs 命令启动)。 启动后出现提示符:
GS>
随后,可以直接在提示符下输入命令,也可以先把命令写成*.ps文件, 再用GhostScript运行。也可以在window下运行,安装包请自行search。
0x03 XOR解密代码
笔者这里手贱,用python解混淆,下面祭献出源码:
#!/usr/bin/env python#-*- coding: utf-8 -*-#coding=utf-8import binasciib = "c45d6491"a = "bf7d4bd9a13112f4b03407f0e43b0dffa03b0bffb07d55a1f47d17f2a53101f7ab3310b1b73810f7ab3310b1a3310bf3a53100f8a72944f3a13a0dffe47225a0f77d50a1f46d54a1e43901f7e47225a0f67d25a0f77d55a7e43400f8b27d55b1a53900b1a03802b1eb1c5cb1bf7d4bd0f16944f4bc3e0cb1a03802b1eb1c56a7e4381cf2ac7d00f4a27d4bd0f76a44d0f66b44fda13303e5ac7d00f4a27d4bd0f16a44d0f16944fda13303e5ac7d00f4a27d4bd0f06c44a3f16b44f5a13b44be856c55b1856e53b1856955b1ad390de7e43901f7e42644be856c55b1856c55b1f57d17e4a67d00f4a27d25a0f57d54b1a8291fb1a1250de5e42044f8a27d25a3f27d25a0f57d25a5f57d09e4a87d25a4f07d14e4b0340ae5a12f12f0a87d19b1a8320be1e41c56a7e42044f3"def fuckit(decrypt_key, data): length = len(data) m_data = [] for i in range(length): m_index = i % len(decrypt_key) m_key = decrypt_key[m_index] m_data += chr(ord(data[i])^ ord(m_key)) data = "".join(m_data) return dataif __name__ == '__main__': #with open("postscript.txt", 'r') as fp: # a = fp.read() m_b = list(binascii.unhexlify(b) ) m_a = list(binascii.unhexlify(a) ) print fuckit(m_b,m_a)
被解密文本如下:
0x04 参考
PostScript入门(1)-基本知识 charlee.li
警惕利用CVE-2015-2545漏洞进行的攻击
GMT参考手册
/* 代码不写include的不是好代码,文章不写参考的不是好文章。*/
- python版xor解密源码
- 简单xor加解密
- XOR 加密解密算法
- xor算法加密解密功能
- python中的xor运算
- Python logical XOR
- 利用二进制数据的XOR(异或)运算进行加/解密(C#版)
- AES与XOR加解密效率比较
- 利用xor特点进行简单加密解密
- 异或(XOR)运算加密/解密算法
- xor指令加解密(笔记)
- C语言写的(XOR)加密解密的程序
- php 使用异或(XOR)加密/解密文件
- C 使用异或(xor)加密/解密文件
- C 使用异或(xor)加密/解密文件
- php 使用异或(XOR)加密/解密文件
- xor与base64结合的加密解密函数
- XOR加密--PHP版
- 解决因mouseover,mouseout冒泡产生的闪烁问题+兼容性问题
- android源码-智能语音输入查询天气app
- 代码和作品分享
- 三角网格上的寻路算法Part.1—Dijkstra算法
- 40. Combination Sum II
- python版xor解密源码
- 邮箱图片
- 配置数据库认证单点登录
- 简单的程序诠释C++ STL算法系列之十五:swap ---》利用swap()函数进行内存的释放
- 用python画折线图、柱状图、饼图
- CDoj 1324<分块>
- dom4j生成xml格式(微信回复消息格式)
- 图片裁剪(基于RxPaparazzo)
- tree指令的用法