UF2 Loader for IDA
The DEFCON 29 badge uses the UF2 bootloader, which conveniently allows you to dump and flash the firmware over USB as a mass storage device, so when you plug it into your computer in the right mode it shows up like a flash drive.
A detailed spec of the UF2 file format can be found here.
Installation
To install, simply copy the uf2.py file into IDA's loaders
directory. Then, whenever you load a UF2 file, it will be detected and IDA will understand how to load it.
SVD Loading
IDA >= 7.5 has a new SVD loader plugin where you can provide the SVD file that describes a specific ARM processor and it will fill in names of addresses, registers, etc. The DEFCON badge uses the SAMD21G16B processor, and an SVD file describing memory layout and such can be found here.
Standalone usage
The uf2.py script can also be invoked directly from the command line to convert a UF2 file into a flat firmware binary. To use it as such, run: python3 uf2.py firmware.uf2 output.bin
Thanks to the ghidra_uf2loader project for inspiration and some help with understanding the format.