python-trade WP

本文介绍了pyc文件的性质,它是Python编译后的字节码文件,用于提高加载速度和源码保护。文章提到一个在线反编译网站,并展示了一个涉及异或、加16和Base64加密的解密过程,通过该过程揭示了如何从密文恢复flag。
摘要由CSDN通过智能技术生成

题目描述:

   这是一个pyc后缀的文件。

1.首先我们百度一下pyc文件,了解一下pyc文件是什么。

    pyc 文件是 python 编译产生的中间文件。python 是一个先编译再解释型语言。python 解释器由一个编译器 和一个虚拟机构成,python.exe 先将源码编译成字节码(即将.py 文件换转成 .pyc 文件),.pyc 不是二进制 码,而是一种字节码文件,它是与平台无关的中间代码,不管是在 Windows 还是 Linux 平台都可以执行。 运行时再由虚拟机逐行把字节码翻译成目标代码。

    pyc文件是由.py文件经过编译后生成的字节码文件,其加载速度相对于之前的.py文件有所提高,而且还可以实现源码隐藏,以及一定程度上的反编译。比如,Python3.3编译生成的.pyc文件,Python3.4就别想着去运行啦!→_→

2.在网上有一个在线反编译的网站https://tool.lu/pyc/将 pyc 文件反编译

import base64 

def encode(message):            定义的函数

      s = ''

      for i in message:

           x = ord(i) ^ 32

           x = x + 16

           s += chr(x)

return base64.b64encode(s)   返回经过 base64 加密的数据

correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'

flag = ''

print 'Input flag:'

flag = raw_input()           输入

if encode(flag) == correct:      判断

print 'correct' else: print 'wrong'

 3.通过阅读代码可知,flag 的每一个字符通过异或、加 16、base64 加密后得到密文 XlNkVmtUI1MgXWBZXCFeKY+AaXNt;

4.在spyder中编辑代码,将密文通过base64解密,减16,异或,得到flag。

 5.运行后得出flag=nctf{d3c0mpil1n9_PyC}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
帮我把下面一段C++代码改写成python代码:#include "Trade.h" #include "WPrice.h" #include <algorithm> double normalCDF(double x) // Phi(-∞, x) aka N(x) { return std::erfc(-x / std::sqrt(2)) / 2; //erfc()是互补误差函数,该返回值表示标准正态分布下var小于x的概率,即N(x) } CTrade::CTrade(double tick) : wp_bid(0.01), wp_ask(0.01), m_tick(tick), m_TimeRound(50) { newday(NULL); } CTrade::~CTrade() { } void CTrade::OnBook(const BTRec& btRec) { wp.setGamma(0.1); wp_bid = wp.getWP(&btRec.Bids); wp_ask = wp.getWP(&btRec.Asks); if (wp_mid > 0){ //wp_mid初始化为-1,仅遇到第一条BTRec记录时条件为false double wp_now = (wp_bid + wp_ask) / 2; //updated wp_mid int volume = btRec.volume; //volume between two orderbook records double ratio = normalCDF((wp_now - wp_mid) / (2 * m_tick)); //m_tick = tick = 0.2 double buyvolume = ratio*volume, sellvolume = (1 - ratio)*volume; m_TimeRound.update(buyvolume, sellvolume, btRec.rec_time.timestamp); //volume moving average if (mv_volume < 0) { mv_volume = volume; mv_buyvolume = buyvolume; } else{ mv_volume += 0.002*(volume - mv_volume); mv_buyvolume += 0.002*(buyvolume - mv_buyvolume); } // round trip volatility if (time_ini < 0 || btRec.rec_time.timestamp - time_ini >= time_scale){ if (time_ini>0){ double dp = wp_now - wp_ini; volatility += 0.05*(dp*dp - volatility); } time_scale = m_TimeRound.getTime() * 1000; //in milliseconds time_ini = btRec.rec_time.timestamp; wp_ini = wp_now; } } wp_mid = (wp_bid + wp_ask) / 2; } void CTrade::newday(const char* p) { wp_mid = -1; m_TimeRound.newday(p); volatility = 16 * m_tick*m_tick; time_slapse = -1, time_scale = -1, wp_ini = -1, time_ini = -1; mv_buyvolume = mv_volume = -1; }
05-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值