文件下载后用Visoul Studio Code打开,
下面三个注释的内容分别对应上面三个print输出,把注释去掉,加上对应的变量名,方便之后的操作,如下:
之后就是理解这段代码:首先key是从1到10的随机数,每一次循环与fla字串'xxx......'中的字符取其Ascll值后做亦或('^')运算,亦或运算的返回值是3个0,1组成的的2进制编码。注意:函数里的ord()函数是将2进制编码转化为字符,将每一个循环返回的字符相加组合成crypto,m=crypto的16进制编码,然后下面部分就是一个RSA过程(详情请参考:(75条消息) CTFCrypto练习之RSA算法_77458的博客-CSDN博客_got表)
我们要做的就是根据输出结果反解求出flag字串,当然,经过一些处理后得到flag必然不是'xxxx.......'(原来的那段字串了),所以不要犯傻拿着原来的flag去提交
这里附上大佬的脚本
这个 if 代码块的作用,可以用下面两张图来解释
脚本运行后的结果
(加了 if语句块之后)
(加if 语句块之前)