We couldn’t be more proud to welcome such a predestined #1 hardware hacking victim, than VICTor is!
Before Brian and I gave a lecture on hardware hacking last week at DHBW Mosbach, we felt, that we needed a custom victim which is fully documented and provides a good “hackability” to the students.
Surely we could also have used some cheap $wifi_ap, but here’s the thing: Would you really want to use a device which you don’t really know? Mostly, there’s a massive lack of documentation regarding the SoCs used…not to mention the unavailability of schematics and layouts.
As we wanted to teach students the basics of hardware hacking effectively, we decided to create something by ourselves.
VICTor is a simple Arduino shield – thought to be compatible with UNO R3 and Leonardo. Thought to be – more on this later.
To get a cheap PCB we chose to solely use classical THT parts and nothing surface-mounted.
The board is equipped with two EEPROMs (one SPI and one I²C), four N/O switches, three 3mm LEDs (green, yellow and red). Further a bunch of resistors, some capacitors and a resistor network – parts, which are needed for the other parts as pull-up, pull-down, series resistor or, in case of the caps, to stabilize Vcc-supply of the EEPROMs. There are also some pin headers connected next to the socket-mounted EEPROMs’ pins to easily interface with e.g. a logic analyzer.
As we wanted to have a board which is also expandable in the future, we gave VICTor the footprint of an ESP8266 connector and its necessary wiring. This means, that it’s easily possible to make VICTor and its Arduino WIFI-capable!
As mentioned above, we wanted to have the shield compatible with both, the Arduino UNO R3 and also the Leonardo boards (as we had lots of them laying around from a past TROOPERS). The compatibility was considered in schematics and layout – but in real life it sadly didn’t work. It’s not the first time we had problems with the Leonardo boards. In some workshops we already had the problem, that we suddenly couldn’t upload new sketches to them. First, this seemed to be only a problem on Windows boxes, but then we had more and more Linux machines that wouldn’t flash anymore. The only thing which sometimes helped, was burning a new bootloader on the Leonardo – until it got bricked again after several times of uploading new sketches.
Using VICTor on a Leonardo caused some electrical problems. So, e.g. LEDs lit or flickered, when they don’t were intended to do so. Also the switches couldn’t be read.
Maybe we’ll spend some time to find the underlying cause soon.
Some words on “why we chose to use Arduino”: It’s on the dice that most “tekkies” have already heard of the Arduino project or even have worked with it. We think the project is worth being supported – it’s open source, open hardware and has a broad community with tons of different projects. It’s also easy-to-use for beginners in electronics and programming. Most of the things you want to do or want to interface with, already have functions or libraries you could make use of in your own project.
A plus for us: We didn’t have to create our own microcontroller platform, which would have taken much more time to develop and maybe also to debug.
And last but not least: A million thanks to our Olli G. for supporting us and the rest of the team during the past week!
Live long and prosper,