要去看埃菲尔铁塔的顶
欢迎关注本人微博:t.cn/RGSLVUk
CHECK代码如下
public bool check(string input)
{
int num;
string str = "xatuctf";
new List<char>();
string str2 = "";
for (int i = 0; i < input.Length; i = num + 1)
{
int num3 = ((((input[i] >> 3) | str[i % str.Length]) ^ (input[i] << ((1 % str[i % str.Length]) & 0x1f))) % 0x41) + 0x3a;
str2 = str2 + ((char) int.Parse(num3.ToString()));
num = i;
}
return str2.Equals("hmvkQVQr_JmEN@IGlsOXdpIXKALFPapYQrBTG=");
}
编写注册机
# 根据上面check规则,是每七个一组,生成这样一个二维数组
在 Rev[i][j] 中,
如果满足 Index%0x7 == i && Rev[i][j] == output[i]
那么该位置转换前的ASCII码值就是 j
str2 = 'xatuctf'
dict = {}
for j in range(7):
for i in range(0x7f):
c = chr( ((((i >> 3) | ord(str2[j])) ^ (i << 1)) % 0x41) + 0x3a)
dict[(j, i)] = c
print dict
output = 'hmvkQVQr_JmEN@IGlsOXdpIXKALFPapYQrBTG='
for i in range(38):
index = i%7
for k,v in dict.items():
if (k[0] == index) & (v == output[i]):
print i, chr(k[1])