NOTE:
这题和以前做的题不一样,是javascript有关的题,记录一下
查看源代码
对输入的flag进行处理,是字母的进行变换,不是字母的不变,并和给出的字符串进行对比,若相同则为正确flag
对javascript函数的一些解释
var rotFlag = flag.replace(/[a-zA-Z]/g, function(c){return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);});
replace()函数的一些用法
一、replace(字符串,字符串) 用后面的替换前面的
二、replace(正则表达式,字符串)
str ='abcdefa'
str = str.replace(/a/g,'e')
正则表达式中的g是匹配所有匹配项
三、replace(正则表达式,function())
对str做match()匹配,如果匹配到多项结果(比如使用了全局匹配g,或者分组),那么每一个匹配结果都将执行一次function函数,并且用该函数的返回值替代源字符串中的匹配项。
用遍历的方法求出flag
s = 'PyvragFvqrYbtvafNerRnfl@syner-ba.pbz'
flag = ''
for i in range(len(s)):
for j in range(128):
if (j in range(65,91)) or (j in range(97,123)):
b = j
c = j+13
if j in range(65,91):
j = 90
else:
j=122
if (j > c) or (j==c):
j = c
else:
j=c-26
if j == ord(s[i]):
flag = flag+chr(b)
elif j == ord(s[i]):
flag = flag + chr(j)
print(flag)