[Tokyo Westerns 2017] Rev Rev Rev
첫번째 함수에서는 fgets로 받은 문자열의 enter값을 지워준다.
두번째 함수에서는 입력한 문자열을 거꾸로 뒤집어 저장한다.
세번째 함수에서는 뒤집은 문자열을 암호화한다.
네번째 함수에서는 각 암호화된 문자열에 비트연산 ~을 해주고 저장시킨 후
해당 값이 s2와 같다면 성공문을 출력시킨다.
[Solve]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include "stdafx.h" #include <stdio.h> int main() { int a[31] = { 0x41, 0x29, 0xD9, 0x65, 0xA1, 0xF1, 0xE1, 0xC9, 0x19, 0x09, 0x93, 0x13, 0xA1, 0x09, 0xB9, 0x49, 0xB9, 0x89, 0xDD, 0x61, 0x31, 0x69, 0xA1, 0xF1, 0x71, 0x21, 0x9D, 0xD5, 0x3D, 0x15, 0xD5 }; for (int i = (sizeof(a)) / 4 - 1; i >= 0; i--) { for (int j = 0; j < 127; j++) { int v1 = 2 * (j & 0x55) | (j >> 1) & 0x55; int v2 = 4 * (v1 & 0x33) | (v1 >> 2) & 0x33; char tmp = 16 * v2 | (v2 >> 4); if (tmp == (char)(~a[i])) { printf("%c", j); break; } } } printf("\n"); return 0; } //TWCTF{qpzisyDnbmboz76oglxpzYdk} | cs |
'CTF' 카테고리의 다른 글
[Nuit Du Hack 2017] Matriochka Step 2 (0) | 2018.02.08 |
---|---|
[Nuit Du Hack 2017] Matriochka Step 1 (0) | 2018.02.07 |
[Samsung CTF 2017] Easyhaskell (0) | 2018.02.05 |
[Codegate 2018] BaskinRobins31 (0) | 2018.02.05 |
[Codegate 2018] easy_serial (2) | 2018.02.05 |