#undef _GNU_SOURCE #include #include #include #include #include #define SECRET_PASSWORD "super_secret_password" #define SECRET_PASSWORD_LEN strlen(SECRET_PASSWORD) int read_string(char *prompt, char *buf, int n) { puts(prompt); n = read(0, buf, n); if (n <= 0) exit(0xc35a); buf[n - 1] = '\0'; return n; } void remote_shell(void) { char username[32]; char password[32]; int n; read_string("login: ", username, sizeof(username)); read_string("password: ", password, 128); if (strncmp(password, SECRET_PASSWORD, SECRET_PASSWORD_LEN) != 0) exit(0xc35f); printf("Welcome %s!\n", username); puts("TO BE IMPLEMENTED\n"); return; } char banner[1024]; int main(void) { int fd; int n; setbuf(stdout, NULL); fd = open("./banner.txt", O_RDONLY); if (fd == -1) exit(-1); n = read(fd, banner, sizeof(banner) - 1); if (n <= 0) exit(0xc35e); banner[n] = '\0'; puts(banner); close(fd); remote_shell(); return 0; }