#include <stdio.h> #include <stdlib.h> int main() { char arr[180] = { 2,3,2,1,4,7,4,5,10,11,10,9,14,15,12,13,16,19,16,17,20,23,22,19,28,25,30,31,28,25,26,31,36,33,34,39,36,33,34,35,40,41,46,43,36,45,38,47,56,49,58,59,52,61,62,55,48,57,50,59,60,53,54,55,72,73,66,66,68,68,70,71,72,73,74,74,77,77,79,78,80,80,82,83,85,84,86,87,89,89,90,91,92,93,94,94,96,96,99,99,100,101,103,103,105,105,107,107,108,109,110,110,112,112,114,115,116,117,119,119,120,121,123,123,125,125,127,127}; arr[128] = -127; arr[129] = -127; arr[130] = -125; arr[131] = -125; arr[132] = -116; arr[133] = -115; arr[134] = -114; arr[135] = -113; arr[136] = -120; arr[137] = -119; arr[138] = -118; arr[139] = -117; arr[140] = -116; arr[141] = -115; arr[142] = -114; arr[143] = -121; arr[144] = -104; arr[145] = -111; arr[146] = -110; arr[147] = -109; arr[148] = -108; arr[149] = -107; arr[150] = -106; arr[151] = -105; arr[152] = -104; arr[153] = -103; arr[154] = -102; arr[155] = -102; arr[156] = -100; arr[157] = -100; arr[158] = -98; arr[159] = -98; arr[160] = -96; arr[161] = -96; arr[162] = -94; arr[163] = -94; arr[164] = -92; arr[165] = -92; arr[166] = -90; arr[167] = -90; arr[168] = -88; arr[169] = -88; arr[170] = -86; arr[171] = -86; arr[172] = -84; arr[173] = -84; arr[174] = -82; arr[175] = -82; arr[176] = -80; arr[177] = -79; arr[178] = -78; arr[179] = -77; char what[60] = {0}; what[30] = 8; int j, v13, v12; char flag[31] = { 0 }; unsigned int key = 12345; key %= 65536; while ( what[30] ) { --what[30]; for ( j = 22; j; what[j] |= v13 << what[30] ) { v12 = arr[22 * what[30] + --j]; v13 = (v12 >> ((key >> (2 * what[30])) & 3)) & 1; } } printf("%s", what); system("pause"); return 0; }
https://susers.github.io/CTF/Writeup/SUCTF%E6%8B%9B%E6%96%B0%E8%B5%9B%E5%AE%98%E6%96%B9writeup/
