Py逆向
Posted whitehatkevil
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Py逆向相关的知识,希望对你有一定的参考价值。
这是南邮的一道逆向题
解题步骤:
1.打开链接发现是百度网盘的分享链接,输入提取密码kd37后得到一个pyc文件
普及一下python的知识:pyc文件就是 py程序编译后得到的字节码文件 (py->pyc),所以首先需要将pyc文件还原为python源码文件,这里使用为一个在线反编译工具,反编译后的代码:
#!/usr/bin/env python
# encoding: utf-8
import base64
def encode(message): #def定义了一个encode模块的变量
s = ‘‘ #为了存入最后的目标串
for i in message: #ord()函数主要用来返回对应字符的ascii码
x = ord(i) ^ 32 #将输入的字符串中每个字符ascii码都与32进行异或运算
x = x + 16 #每个都加上16
s += chr(x) #再将它们一个一个转为字符
return base64.b64encode(s) #最后再将新串进行一次base64加密
correct = ‘XlNkVmtUI1MgXWBZXCFeKY+AaXNt‘ #输入的串
flag = ‘‘ #为了存入最后的目标串
print ‘Input flag:‘ #屏幕提示信息 请输入flag
flag = raw_input() #获取输入
if encode(flag) == correct: #如果加密后的flag与correct相同 输出correct
print ‘correct‘
else: #否则输出wrong
print ‘wrong‘
先将字符串"XlNkVmtUI1MgXWBZXCFeKY+AaXNt"解一次base64,再将每个字符ascii码都减下16,接着与32异或即可得到flag
在pycharm里写一个脚本:
import base64
c = ‘XlNkVmtUI1MgXWBZXCFeKY+AaXNt‘
m = c.decode("base64")
s = ‘‘
for i in m:
x = ord(i) - 16
x = x ^ 32
s=s+chr(x)
print s
执行后
以上是关于Py逆向的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段
Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段
Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段
20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础
Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段