GoodFET: Step-by-step install/setup on Kali

September 24, 2018

In the hardware hacking community, one of the tried-and-true “go to” tools for serial communication, dumping SPI flash chips, and interacting with basic JTAG interfaces is the GoodFET, developed by our neighbor Travis Goodspeed. Some of the GoodFET instructions are a bit outdated and fragmented, and we recently were asked for help installing this on a modern Debian-based system, namely the Kali Linux security distribution. We have written up those procedures here in the hope that they are useful to people working with the GoodFET hardware.

Install

We suggest installing GoodFET from source, so clone the repository and install as follows:

git clone https://github.com/travisgoodspeed/goodfet.git
pushd goodfet/client
sudo make link
popd

Additional Installation for Firmware Compilation

If you will be modifying and compiling the firmware, you will need to also install the compiler.

First, ensure you have the right apt package-manager sources available.

For example, on Kali 2018.03, you would add the following line to your sources.list if it isn’t already present, so you can get the pre-requisites:

deb http://http.debian.net/debian stretch main contrib non-free

Update and install the package:

apt-get update
apt-get install gcc-msp430

If you are on a system like Kali, you may wish to now comment out the line you added above to sources.list to avoid conflicts in the future.

Usage

Set the board that you will be working with to an environment variable:

export board=goodfet42

You’ll need to remember to do this in the future before you use the tools as well (or persist this variable in your bash settings if you only use one type of board).

Compiling Firmware

If you want to build the firmware yourself, then:

pushd goodfet/firmware
make clean && make
ls -l goodfet.hex
popd

Updating the Device Firmware

Before flashing the device, always run:

goodfet.bsl --dumpinfo > info.txt

Storing these allows you to read back the firmware later and other things by using it with the password (-P) option.

To flash the device, use the goodfet.hex file you compiled above:

goodfet.bsl -epv goodfet.hex

This will erase the device and then program it, and then complete verification.

Although you can build and flash the device in a single command with make install, we recommend splitting it up as we have shown here so you have more control and a clearer indication of where issues occur, if any.

Testing

To check the firmware is installed and has the applications you want available, then run:

goodfet.monitor listapps full

The goodfet.monitor info command is also useful for verifying basic functionality of the device. We utilize this command when testing the GoodFETs which we offer pre-assembled via AdaFruit.

If you notice any errata in this post or have suggested additions, please contact us.