[羊城杯 2020]Bytecode

Python的pyc字节码反编译反汇编相关知识_pycdc-CSDN博客

python 手搓字节码,是我一直没干的事情,好麻烦,这玩意

具体操作,你跟着这个字节码

对照

Python的pyc字节码反编译反汇编相关知识_pycdc-CSDN博客

这个哥的博客

慢慢自己翻译

[羊城杯 2020]Bytecode-CSDN博客

根据网上的来,翻译完就是

en = [3,37,72,9,6,132]
output = [101,96,23,68,112,42,107,62,96,53,176,179,98,53,67,29,41,120,60,106,51,101,178,189,101,48]
flag = raw_input('please input your flag:')
str = flag
a = len(str)
if a>=38:
    print('lenth wrong!')
    exit(0)
if((((ord(str[1])+2020*ord(str[0]))*2020+ord(str[2]))*2020+ord(str[3]))*2020+ord(str[4])!=1182843538814603):
    exit(0)
x=[]
k=5
for i in range(13):
   b=ord(str[k])
   c=ord(str[k+1])
   a11=c^en[i%6]
   a22=b^en[i%6]
   x.append(a11)
   x.append(a22)
   k+=2
if x!=output:
    exit(0)
l=len(str)
a1=ord(str[l-7])
a2=ord(str[l-6])
a3=ord(str[l-5])
a4=ord(str[l-4])
a5=ord(str[l-3])
a6=ord(str[l-2])
if(a1*3+a2*2+a3*5==1003):
   if(a1*4+a2*7+a3*9==2013):
      if(a1+a2*8+a3*2==1109):
         if(a4*3+a5*2+a6*5==671):
            if(a4*4+a5*7+a6*9==1252):
               if(a4+a5*8+a6*2==644):
                  print('congraduation!you get the right flag!')

这个就是Z3

from z3 import *
a1=Real('a1')
a2=Real('a2')
a3=Real('a3')
a4=Real('a4')
a5=Real('a5')
a6=Real('a6')
s=Solver()
s.add(a1*3+a2*2+a3*5==1003)
s.add(a1*4+a2*7+a3*9==2013)
s.add(a1+a2*8+a3*2==1109)
s.add(a4*3+a5*2+a6*5==671)
s.add(a4*4+a5*7+a6*9==1252)
s.add(a4+a5*8+a6*2==644)
if s.check()==sat:
	result=s.model()
	#print(result)

#[a4 = 102, a2 = 101, a6 = 51, a1 = 97, a5 = 55, a3 = 102
en = [3,37,72,9,6,132]
output = [101,96,23,68,112,42,107,62,96,53,176,179,98,53,67,29,41,120,60,106,51,101,178,189,101,48]
flag=''
k=0
for i in range(13):
	flag+=chr(output[k+1]^en[i%6])
	flag+=chr(output[k]^en[i%6])
	k+=2
print('flag{'+flag+chr(97)+chr(101)+chr(102)+chr(102)+chr(55)+chr(51)+'}')

写不动了

看见字节码就烦!没有自动化脚本吗/(ㄒoㄒ)/~~ 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Nickname

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值