zoukankan      html  css  js  c++  java
  • 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


    执行后

    
    
  • 相关阅读:
    chkdsk磁盘修复命令工具怎么用,怎样运行chkdsk工具修复?
    phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。您应该检查配置文件中的主机、用户名和密码
    APiCloud真机调试需要注意的几个问题
    QQ个人文件夹中的文件被占用,解决办法
    PHPExcel读取excel文件
    数据挖掘与机器学习
    什么是数据挖掘?
    数据挖掘相关的10个问题
    PhpStorm 快捷键大全 PhpStorm 常用快捷键和配置
    VirtualBox提示:错误,创建一个新任务失败,被召者解决办法
  • 原文地址:https://www.cnblogs.com/WhiteHatKevil/p/10050706.html
Copyright © 2011-2022 走看看