Let's now take a look at some of the tools we'll need to connect to,
communicate with, interrogate, and analyze hardware components.
The easiest way to communicate over a UART channel is with a USB to TTL cable,
such as this FT232 USB to serial UART interface.
The cable has four wires to connect to ground VCC, transmit, and receive.
The other end has a USB connector that plugs into a computer.
We'll look at the software required to read the data
for this and other tools shortly.
Next up,
we have a flash memory programmer which allows us to
read from or write to flash memory.
Tools for this come in many forms,
but here we have a CH341A programmer which provides USB connectivity and
allows for multiple ways to connect a flash memory chip.
The programmer can be used for creating new flash memory on blank
chips or if a chip is disordered from a board,
it can be mounted directly onto the CH341A and its contents can be read.
In this setup,
we have a ribbon cable connecting the programmer to an
8‑pin small outline integrated circuit, or SOIC,
clip.
The clip connects directly to the flash memory chip with each pin
connecting to a separate cable in the ribbon.
A multi‑meter is used to make various types of electrical measurements.
Common applications in hardware product testing include measuring,
alternating undirect current voltages, resistance,
and electrical continuity.
Finally,
we have a logic analyzer which is an electronic instrument that captures
multiple signals from a digital system or digital circuit.
Again,
there is a huge variety of devices to choose from with price points
ranging from a few dollars to thousands of dollars.
In this picture,
we have a basic hobby components logic analyzer and a bundle of
dupont cables to measure a maximum of eight channels.
This basic range of equipment, which can be bought for around $40,
is enough to get you started in hardware product testing.
As you develop and progress,
you'll build out your toolset further and invest in more accurate
and flexible equipment with richer feature sets.
Now that we know how to make a physical connection to our target device,
how can we start to interact with it.
As with hardware tools, there is no single software solution to do this,
so I'll talk you through some free and open source
tools that will get you started.
PuTTY is an open source terminal emulator originally designed to connect to SSH,
telnet, and similar servers for remote administration.
It's been upgraded over the years to add new
features such as serial communication.
To connect to a target device,
we need to know the speed or board rate for which the
serial connection has been configured.
Once connected at the correct speed,
we can use the terminal emulator to send commands to
the device and read the reply.
Flash ROM is a utility for identifying, reading,
writing, verifying, and erasing flash chips.
It's specifically designed to flash BIOS,
EFI, firmware, and other images on programmable devices.
Flash ROM can be used together with the CH341A programmer to
dump a device's firmware from flash memory.
Once we have obtained a firmware image, we'll need to interrogate it.
Binwalk is a tool for searching a binary image for
embedded files and executable code.
It's been specifically designed for identifying files and
code embedded inside firmware images.
It includes a custom signature file which contains signatures for
files that are commonly found in firmware images,
such as compressed or archived files, firmware headers,
Linux kernels, bootloaders, file systems,
and so on.
Ghidra is a software reverse engineering framework created and
maintained by the National Security Agency.
It includes a suite of full‑featured high‑end software analysis tools that
enable users to analyze compiled code using disassembly,
assembly, decompilation, graphing,
and scripting along with hundreds of other features.
Ghidra supports a broad range of processor instruction
sets and executable formats and can be run in both user
interactive and automated modes.
We'll use all of these tools in demos later in the course.