I2C

I2C (Inter-Integrated Circuit) is a two-wire serial communication protocol designed for efficient communication between integrated circuits. It uses just two lines: one for serial data (SDA) and one for serial clock (SCL), allowing multiple devices (masters and slaves) to communicate on the same bus. The protocol is synchronous, all devices share a common clock signal managed by the master.

I2C challenge 1

Description:

Challenge 3: "Bus Whisperer"

Deep inside an abandoned research lab, you’ve discovered a prototype security device. It appears to be communicating with hidden components over an I2C bus. The traffic is silent to the untrained eye, but with the right tools, you can eavesdrop on the device's conversations and uncover what it's hiding.

Your mission is clear:

    Identify the I2C communication lines used by the device.
    Identify all connected I2C devices the system is interacting with.
    Retrieve the hidden message embedded in the communication.

I started of by identifying the I2C pins on the board, as with the UART they were labelled, easy to spot. Then I connected my login analyzer, to see if any data was being send.

alt text

I saw that some data is being transmitted. alt text

I setup a i2c analyzer in logic and saw that the master tries to write to i2c devices from different addresses When viewing it as ASCII text we can see that it is in fact the flag being written. (NOTE I have changed the connections on my logic analyzer as it was behaving weirdly on channel 1) alt text alt text

I2C challenge 2

Description:

Challenge 4: "Invisible Wires"

You’ve infiltrated a secure facility to extract a prototype device believed to hold critical secrets. After ripping the main board from its casing and making your escape, a sudden realization hits (you left a secondary board behind), still wired in and powered.

Unexpectedly, the stolen board is trying to communicate with its twin over I2C, as if expecting a response. It’s time to turn the tables: tap into the bus, reverse the dialogue, and extract what it’s trying to say.

Your mission is clear:

    Identify the I2C lines used for board-to-board communication.
    Reverse engineer the protocol or expected responses from the second board.
    Emulate or spoof the missing board to trigger a flag or secret message.

On the logic analyzer we see thats its trying to setup a write to device under 0x12 address, but it is not getting acknowledged so it keeps waiting for a device on the bus. alt text

We can get the flag by emulating a device under the address 0x12. I have used esp32 bus pirate for this purpose, but it can also be done with an arduino https://github.com/geo-tp/ESP32-Bus-Pirate

alt text

alt text