I have a small board that stores some static and dynamic data: cc 80bytes of serial number, manufacturing date and a counter. The board has two SOT-23-5 components: one is with CBOCX and one is with EC0d0 (?) mark on it.

enter image description here

On the board, the wires as as follows (from left to right): SDA, SCL, GND, PWR. I have hooked a logic sniffer to the wires and checked the communication. The board communicates with I2C protocol. It seems these two components are slaves, with addresses 83 and 96. I was assuming these components are EEPROM-s, and looked up many datasheets. I compared the command descriptions from the datasheets with the sniffed data, but the sniffed data is different. For example the communication starts with this I2C commands when I plug in the board to the master unit:

  1. START
  2. 10100110 (write request for the 83 device) - ACK
  3. 01000001 - ACK
  4. 11100111 - ACK
  5. 00000000 - ACK
  6. 00000000 - ACK
  7. STOP

The response from the board for these sequence is 32 bytes of data. If I hook the board on my arduino and send out the sequence above, the board responds the same 32 bytes also for me.

I'd like to read and manipulate the data, but I have no idea right now, how could I do it. What other could be these components, that stores data in SOT-23-5 package other then an EEPROM?

Your ideas are welcomed!


  • 1
    \$\begingroup\$ Here is the picture from the board: goo.gl/photos/MfSMzKJgRNm4tg7s5 It's a refilling protection board of an ink cartridge. \$\endgroup\$ – ZeitGeist Sep 26 '15 at 19:42
  • 4
    \$\begingroup\$ It's not going to be an off-the-shelf EEPROM chip. There are many SOT23-5 package EEPROMs, but they all use a pretty standard pin arrangement. Based on that photo it is clear that the chips have a completely different (and incompatible) pin assignment. To be honest if is something in a printer cartridge you are not going to be able to find any information on what the data is - without information from the cartridge manufacturer about what format the data is in, it is basically a meaningless string of bits. \$\endgroup\$ – Tom Carpenter Sep 27 '15 at 1:22
  • 1
    \$\begingroup\$ What are you trying to accomplish? Could you replace the circuit with a microcontroller programmed to emulate it and provide customized data? \$\endgroup\$ – Chris Stratton Sep 27 '15 at 4:28
  • 1
    \$\begingroup\$ Chris Stratton: right now I see these possibilities: 1. manage somehow to modify (increase) the counter data. 2. somehow save the memory of one full chip and copy it to the empty one. 3. put a microcontroller inbetween and emulate. \$\endgroup\$ – ZeitGeist Sep 27 '15 at 12:45
  • 1
    \$\begingroup\$ There are companies in the east of England that specialise in reverse engineering these systems so they can make refillable cartridges. It really ****** off the printer manufacturers as they make a lot of money from fleecing customers with overpriced non-refillable cartridges. The printer manufacturers are regularly changing the protocols, so that once it's been cracked they bring out a different version, All very green. Not. \$\endgroup\$ – DiBosco Aug 24 '17 at 9:49

it may be one of those crypto chips which are used to avoid hardware clones or grey market counterfeit.

This type of chip often comes in sot23 format and contains a key and some crypto mambo jambo that is specific for the maker... i wouldn't be surprised that a chip like that has no label on it...

  • \$\begingroup\$ A good way to check would be if OP sees if the master always sends the same commands/data (including during a print). A proper implementation of crypto would have the master sending something different each time (a 'nonce') that the response depends on, so simply replaying the same messages wouldn't work. \$\endgroup\$ – mbrig Sep 28 '18 at 20:07

Not the answer you're looking for? Browse other questions tagged or ask your own question.