반응형
Points : 27
Solves : 283
Description :
Must-Have Pre-Workout Warm up Challenge.
파일을 다운로드 받으면 warmup 파일이 있다.
ExeinfoPE 로 확인해보니 Text 파일이며 #define M 37로 시작한다는 것을 알 수 있다.
VScode로 확인해보면 define 이 있고, 무언가 쭉 있다.
https://codebeautify.org/c-formatter-beautifier
Best C Formatter and Beautifier
C Formatter will help to format, beautify, minify, compact C code, string, text. Format, Save, Share
codebeautify.org
C format과 비슷해서 beautifuer로 돌리고, gcc 컴파일을 하면 여러가지 오류가 나오는데, 오류를 해결해 준 뒤 실행한다.
#include<stdio.h>
#include<math.h>
#include<stdint.h>
#define M 37
#define q (2 + M / M)
#define v (q / q)
#define ef ((v + q) / 2)
#define f (q - v - ef)
#define k (8 - ef)
struct b {
int64_t y[13];
}
S;
int m = 1811939329, N = 1, t[1 << 26] = {
2
}, a, * p, i, e = 73421233, s, c, U = 1;
void g(int d, int h) {
for (i = s; i < 1 << 25; i *= 2) d = d * 1 * d % m;
for (p = t; p < t + N; p += s)
for (i = s, c = 1; i; i--) a = p[s] * (h ? c : 1 ) % m, p[s] = (m * 1 + * p - a) * (h ? 1 : c) % m, * p = (a * 1 + * p) % m, p++, c = c * 1 * d % m;
}
void l() {
while (e /= 2) {
N *= 2;
U = U * 1 * (m + 1) / 2 % m;
for (s = N; s /= 2;) g(136, 0);
for (p = t; p < t + N; p++) * p = * p * 1 ** p % m * U % m;
for (s = 1; s < N; s *= 2) g(839354248, 1);
for (a = 0, p = t; p < t + N;) a += * p << (e & 1), * p++ = a % 10, a /= 10;
}
}
int z(int n) {
int y = 3, j, c;
for (j = 2; j <= n;) {
l();
for (c = 2; c <= y - 1; c++) {
l();
if (y % c == 0) break;
}
if (c == y) {
l();
j++;
}
y++;
}
l();
return y - 1;
}
int main(int a, char* pq){
int b = sizeof(S), y = b, j = M;
l();
int x[M] = {
b - M - sizeof((short int) a),
(b >> v) + (k << v) + (v << (q | ef)) + z(v + (ef << v)),
(z(k * ef) << v) - pow(ef, f),
z(((j - ef * k) | (ef << k >> v) / k - ef << v) - ef),
(((y + M) & b) << (k / q + ef)) - z(ef + v),
((ef << k) - v) & y,
y * v + v,
(ef << (q * ef - v - (k >> ef))) * q - v,
(f << q) | (ef << (q * f + k)) - j + k,
(z(z(z(z(z(v))))) * q) & (((j / q) - (ef << v)) << q) | (j + (q | (ef << v))),
y | (q + v),
(ef << ef) - v + ef * (((j >> ef) | j) - v + ef - q + v),
(z(j & (b << ef)) & (z(v << v) << k)) - (q << v) - q,
(k << q) + q,
(z(y) >> (ef << v)) + (z(k + v)) - q,
(z(z(k & ef | j)) & b | ef | v << f << q << v & ef >> k | q << ef << v | k | q) + z(v << v) + v,
(ef >> v) * q * z(k - v) + z(ef << ef & q | k) + ef,
z(k << k) & v & k | y + k - v,
z(f >> ef | k >> ef | v | k) * (ef >> v) * q,
(ef << k - ef << v >> q << ef * ef) - j + (ef << v),
z(ef * k) * z(v << v) + k - v,
z((z(k) << z(v))) & y | k | v,
z(ef << ef << v << v) / ef + z(v << ef | k | (b >> q) & y - f) - (ef << q) + (k - v) - ef,
k << (ef + q) / z(ef) * z(q) & z(k << k) | v,
((z(y | j >> k * ef)) % ef << z(v << v << v) >> q << q | j) / ef + v,
(j - ef << ef << v * z(v >> v << v) >> ef) / ef % z(k << j) + q,
z(k - v) + k | z(ef << k >> v << f) - z(q << q) * ef >> v,
(z(ef | y & j | k) % q | j + ef << z(k | ef) % k << q | ef | k << ef << q / ef | y / ef + j >> q) & k << j | ef + v,
84,
z(v * ef << ef << q) * q % ef << k | k | q - v,
((z(20) * v) | (f >> q) | (k << k)) / ef - (ef << (v * q + ef)) - (k << q) + z(k) - q
};
while (j--) {
putchar(x[M - v - j]);
}
printf(" From ASIS With Love <3\n");
return 0;
}
헤더들을 추가하고, 함수의 반환값 수정을 했다.
해당 코드를 컴파일 하고 실행하면 flag를 얻을 수 있다.
+ 실행 시간이 오래 걸리기 때문에 기다리다 보면 flag가 출력된다. (실행 해놓고 구글링하다가 flag가 나왔다..)
반응형
댓글