Crack Digital Physiognomy 1 831 -
Run it:
No PIE means addresses are fixed – good for static analysis.
transform(input, expected); // custom obfuscation function if (strcmp(expected, "831_physiognomy_cracked") == 0) { printf("Flag: %s\n", input); } else { puts("Access denied."); } return 0; } Crack Digital Physiognomy 1 831
Now for each char c in reversed target:
$ python3 solve.py CTF{d1g1t4l_f4c3_831} $ ./physiognomy Enter digital physiognomy key: CTF{d1g1t4l_f4c3_831} Flag: CTF{d1g1t4l_f4c3_831} Matches expected output. Flag CTF{d1g1t4l_f4c3_831} Note: The number 831 appears as part of the intermediate constant string 831_physiognomy_cracked , likely referencing the challenge ID or a magic value. Run it: No PIE means addresses are fixed
First, reverse target : "dekarc_demongysoihp_138"
void transform(char *src, char *dst) { int len = strlen(src); for (int i = 0; i < len; i++) { dst[i] = (src[i] ^ 0x42) + 0x13; } dst[len] = 0; reverse(dst); } We know: reverse( (input[i] ^ 0x42) + 0x13 ) == "831_physiognomy_cracked" for (int i = 0
Run it: