DIE 查,发现是 .NET,拖⼊ dnSpy
加密的代码
private void Btn_Submit_Click(object sender, RoutedEventArgs e)
{
char[] array = this.Tb_Input.Text.ToCharArray();
char[] array2 = string.Join("", this.sentences).ToCharArray();
for (int i = 0; i < array.Length; i++)
{
array[i] *= array[i];
array[i] = (char)((int)array[i] ^ i ^ (int)array2[i % array2.Lengt
h]);
}
bool flag = new string(array) != new string((from c in source select (
char)c).ToArray<char>());
if (flag)
{
MessageBox.Show("\ud83d\ude2d我有异或症!");
}
else
{
MessageBox.Show("\ud83d\ude0b异或症好了!");
}
}
exp:
import libnum
source = [
24164, 27173, 32145, 17867, 40533, 21647, 17418, 30032, 27950, 62998, 60750, 64870,
52680, 61797, 49234, 59762, 16704, 19200, 32132, 24038, 21764, 30130, 28113, 23070,
27413, 27917, 28938, 50207, 64834, 60132, 64832, 63334, 55103, 22176, 21991, 20073,
22281, 19476, 28302, 24336, 24720, 19544, 23018, 43976
]
# 这里将 xl 合并成一个单一的字符串
xl = ("你以为我还会在乎吗?\ud83d\ude2c\ud83d\ude2c\ud83d\ude2c我在昆仑山练了六年的剑\ud83d\ude1f\ud83d\ude1f\ud83d\ude1f我的心早就和昆仑山的雪一样冷了\ud83d\ude10\ud83d\ude10\ud83d\ude10我在大润发杀了十年的鱼\ud83d\ude2b\ud83d\ude2b\ud83d\ude2b我以为我的心早已跟我的刀一样冷了\ud83d\ude29\ud83d\ude29\ud83d\ude29"
"我早上坐公交滴卡的时候和司机大叔说“两个人”,司机惊讶地看着我“你明明就是一个人,为什么要滴两个人的卡?”我回他,“我心中还有一个叫Kengwang的。”司机回我说,“天使是不用收钱的。”"
"(尖叫)(扭曲)(阴暗的爬行)(扭动)(阴暗地蠕动)(翻滚)(激烈地爬动)(痉挛)(嘶吼)(蠕动)(阴森的低吼)(爬行)(分裂)(走上岸)(扭曲的行走)(不分对象攻击)"
"地球没我照样转?硬撑罢了!地球没我照样转?硬撑罢了!地球没我照样转?硬撑罢了!地球没我照样转?硬撑罢了!地球没我照样转?硬撑罢了!地球没我照样转?硬撑罢了!"
"扭曲上勾拳!阴暗的下勾拳!尖叫左勾拳!右勾拳爬行!扭动扫堂腿!分裂回旋踢!这是蜘蛛阴暗的吃耳屎,这是龙卷风翻滚停车场!乌鸦痉挛!老鼠嘶吼!大象蠕动!愤怒的章鱼!无差别攻击!无差别攻击!无差别攻击!")
flag = ''
for i in range(len(source)):
# 确保 xl[i % len(xl)] 是一个字符,并且要取第一个字符
char_from_xl = xl[i % len(xl)]
if len(char_from_xl) > 1:
char_from_xl = char_from_xl[0]
temp = (source[i] ^ i ^ ord(char_from_xl))
root = libnum.nroot(temp, 2)
char = chr(root)
# 打印调试信息
print(f"source[i]: {source[i]}, i: {i}, xl[i % len(xl)]: {ord(char_from_xl)}, temp: {temp}, root: {root}, char: {char}")
flag += char
print("Flag:", flag)