Challenge

A crackme binary reads your input and compares it against stored values after applying a bitwise NOT.

Approach

  1. In Ghidra, find the comparison: if (input[i] != ~stored[i]) fail().
  2. Extract the stored byte array from .data.
  3. Apply bitwise NOT (8-bit) to each byte:
1
2
3
stored = bytes([0xaf, 0x8e, 0x8d, ...])  # from binary
flag = bytes(~b & 0xFF for b in stored)
print(flag.decode())

Flag

boroCTF{N0t_nO+_tH3_FL@g}