XOR和异或
1100 0101
相同数字为0不相同为1 所以异或结果是 1001
我们知道flag长度为33
可以看到与global的值比较,所以global这个值是flag经过
这个步骤之后的值 global:
unsigned char aFKWOXZUPFVMDGH[] =
{
0x66, 0x0A, 0x6B, 0x0C, 0x77, 0x26, 0x4F, 0x2E, 0x40, 0x11,
0x78, 0x0D, 0x5A, 0x3B, 0x55, 0x11, 0x70, 0x19, 0x46, 0x1F,
0x76, 0x22, 0x4D, 0x23, 0x44, 0x0E, 0x67, 0x06, 0x68, 0x0F,
0x47, 0x32, 0x4F, 0x00
};
所以接下来我们开始写
关于这个,我们详细理解一下,b[1]=b[1]^b[0]
b[2]=b[2]^b[1]
那如果现在我们需要反过来求了
现在如果我们要已经异或完成了,然后需要求
过程:(其中带 ’ 的是变化后的)
在开始的时候 b1'=b1^b0 b2‘=b2^b1'
当我们倒过来的时候,如果我们直接
b1=b1'(因为已经变过了,现在是倒过来)^b0 b1确实是对的,但我们看向b2 b2=b2'^b1 我们可以发现跟上面的b2‘=b2^b1' 逆运算不过来,那我们需要改进一下
当我们改成这样,我们会吞到一个数值
例子: b1=b1'^b2' 实际上这个b1等于b2,但是这样不会改变后面的数值 b2=b2'^b3 实际上这个b2等于b3,但是这样不会改变后面的数值
所以依次类推,我们最后会吞掉一个第一位数,
那我们补充上