无壳,64位,这是一个文件读写得代码,看懂就会
读取文件,进行位运算
题目还给了一个output.txt文件,数了是19个,和for循环正好对应,这应该就是进行位运算后得到得数字了,很简单,写个脚本逆回去大概得到的就是flag了
脚本
#include <iostream>
using namespace std;
int main(){
int index = 0;
char flag[44];
int ptr[]={0,198,232,816,200,1536,300,6144,984,51200,
570,92160,1200,565248,756,1474560,800,6291456,1782,65536000
};
for (int i = 1; i <= 19; ++i )
{
if ( i & 1 )
flag[index++] = (char)(ptr[i] >> i);
else
flag[index++] = (char)(ptr[i] / i );
}
flag[index] = '\0';
cout<<"结果是: "<<flag<<endl;
system("pause");
return 0;
}
文件给的ptr是没有0得,但是不加0出不来,我又看了下代码
fread读取了20个元素,题目只给了19个,还有一个我猜是0被省略了,往里面加,试了几个只有放开头对
flag{d9-dE6-20c}