mrn00b0t

Interfacing between technophile and technophobe

Light Switch Crypto

This is my solution to the McAfee ATR Hax 2021 cryptography challenge Light Switch Crypto. You are provided with a couple of logic statements, an encrypted message, a key, and a partially complete Python script. The challenge is to introduce the logic statements to the python code. This will allow you to run the code and retrieve the flag.

The logic statements

I began this challenge by noting that the output of Circuit 1 is boolean A OR B. I called this result C.

The output of Circuit 2 is boolean A NAND B. I called this result D.

The output of Circuit 3 is then C AND D. I called this output E.

Working this into the provided Python program, you can code this as:

def magic_func(A, B):
    C = A | B
    D = not(A & B)
    E = int(C & D)
    o = E
    return o

Running this program will return the flag, which suggests there might be a cleaner solution….

ATR[3way_light_switches_are_xor]

Let’s create a logic table, showing what E is for given values of A and B:

A
INPUT
B
INPUT
C
(A OR B)
D
(A NAND B)
E (C AND D)
OUTPUT
00010
01111
10111
11100

Comparing output E with the original inputs A and B, we see that it is an XOR function, as the flag suggested. We can therefore clean up the code as follows, obtaining the same result:

def magic_func(A, B):
    o = int(A ^ B)
    return o
%d bloggers like this: