tigard-tools / tigard

An FTDI FT2232H-based multi-protocol tool for hardware hacking
Other
592 stars 72 forks source link

Pinout detection-discovering #45

Closed skaox closed 3 years ago

skaox commented 3 years ago

Hello,

is it possible to detect-discover pinout (UART, JTAG, SPI, I2C), fuzzing and command enumeration like Busside ?

Thank you in advance

securelyfitz commented 3 years ago

Detect/discover: no spi fuzzing/command enumeration: yes, but not implemented i2c address detection: yes, with PyFTDI jtag command enumeration: yes, with URJTAG and other tools

Unfortunately, detect/discover is not really feasibe. Detection algorithms depend on algorithms that try different combinations of inputs an outputs. In order to ensure Tigard's normal operation was exceptionally robust, we used unidrectional level shifters, meaning we cant change inputs to outputs and vice versa. Busside doesn't have the same degree of level shifting and i/o protection as tigard, but is very flexible in how it uses pins. the JTAGulator does have significant I/O protection, but that comes at a much higher cost, and does lead to issues with some specific JTAG targets not working in 'jtag adapter' mode

There's no reason that command searching couldn't be implemented for SPI, I'm just not aware of an implementation. If i were to, i would implement it using PyFTDI. PyFTDI does include a script to detect properly-wired I2C devices. URJTAG includes a 'discovery' command that will detect the length of all the data registers, helpful in determining their purpose.

skaox commented 3 years ago

Noted ; a big THANK YOU for the answer and what you're doing.