标签:randint int mask CTF zeros 2021 key GuessKey2 print
from random import randint import os from flag import flag N=64 key=randint(0,2**N) # print key key=bin(key)[2:].rjust(N,'0') count=0 while True: p=0 q=0 new_key='' zeros=[0] for j in range(len(key)): if key[j]=='0': zeros.append(j) p=zeros[randint(0,len(zeros))-1] q=zeros[randint(0,len(zeros))-1] try: mask=int(raw_input("mask:")) except: exit(0) mask=bin(mask)[2:] if p>q: tmp=q q=p p=tmp cnt=0 for j in range(0,N): if j in range(p,q+1): new_key+=str(int(mask[cnt])^int(key[j])) else: new_key+=key[j] cnt+=1 cnt%=len(mask) key=new_key try: guess=int(raw_input("guess:")) except: exit(0) if guess==int(key,2): count+=1 print 'Nice.' else: count=0 print 'Oops.' if count>2: print flag
代码还是跟GuessKey中的一样,但是不会显示key的值了
解题思路:
因为key的值是不会变的,可以取mask值为1将最随机取0值下标的p、q变成1,那么0的值将会往里缩,直到所有的0都变成了1。在返回第一个Nice时就将mask改成0即可。
标签:randint,int,mask,CTF,zeros,2021,key,GuessKey2,print 来源: https://www.cnblogs.com/1jzz/p/14315961.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。