The Best Badges Of The SuperCon

A few weeks ago, we took a look at the best badge hacks at the Hackaday Supercon. These were the best badge hacks anyone has ever seen – including what comes out of DEF CON and the SDR badge from the latest CCC. I’m ascribing this entirely to the free-form nature of the badge; give people a blank canvas and you’re sure to get a diverse field of builds. Now it’s time to take a look at the cream of the crop, hear what the jolly wrencher sounds like, and how to put 1000 Volts in a badge.

There were three categories for the badge hacking competition at the SuperCon – best deadbug, best blinky, and most over the top. A surprising number of people managed to solder, glue, and tape some components to a the piece of FR4 we used as a conference badge, but in the end, only three would win.

Continue reading “The Best Badges Of The SuperCon”

A Teensy Logic Analyzer For A 6502

[John] has an interesting, if old piece of tech sitting on his workbench. It’s an Ohio Scientific C3-8P computer from the late 70s by way of a few garages, basements, and attics. As with most tech of this vintage, there are some problems, and [John] found debugging a little frustrating without the ability to trace and watch the programs. He needed a logic analyzer, and found one in an unlikely piece of hardware. [John] built one using a Teensy microcontroller, and further refinement of this project could turn it into a full in-system emulator.

The old Ohio Scientific computer [John] is trying to bring back from the dead is based on the 6502 CPU. That’s sixteen address lines to monitor, eight data lines, and four control lines. These were wired directly to a Teensy 3.1.

Reading and controlling all the signals from a 6502 is a task that falls to Linux. A command line program controls the Teensy and is capable of reading memory, setting trigger addresses, dumping the entire address space to a file, or just recording the last 5,000 clock cycles. This kind of tech existed back in the late 70s and early 80s. It also cost a fortune. Now, with a $20 Teensy and probably another $30 in ribbon cables and test clips, anyone can build a logic analyser for a very old computer system.

Videos below.

Continue reading “A Teensy Logic Analyzer For A 6502”

Turning A Teensy Into A Better U2F Key

A few days ago, we saw a project that used a Teensy to build a Universal 2nd Factor (U2F) key. While this project was just an experiment in how to implement U2F on any ‘ol microcontroller, and the creator admitted it wasn’t very secure, the comments for that post said otherwise: “making your own thing is the ONLY way to be secure,” read the comments.

In a stunning turn of events, writing comments on a blog post doesn’t mean you know what you’re talking about. It turns out, to perform a security analysis of a system, you need to look at the code. Shocking, yes, but [makomk] took a good, hard look at the code and found it was horribly broken.

The critical error of the Teensy U2F key crypto is simply how U2F is performed. During authentication, the device sends the U2F key handle to whatever service is trying to authenticating it. Because the key in the Teensy implementation is only ‘encrypted’ with XOR, it only takes 256 signing requests to recover the private key.

The original experimentation with using the Teensy as a U2F key was an educational endeavor, and it was never meant to be used by anyone. The attack on this small lesson in security is interesting, though, and [makomk] wrote a proof of concept that demonstrates his attack. This could be used to perform attacks from a remote server, but hopefully that won’t happen, because the original code should never be used in the wild.

Two Turntables and No Microphone

It used to be that you had to spend real money to get an alternative controller for your electronic musical arsenal. These days, with cheap microcontrollers and easily-accessible free software libraries, you can do something awesome for pocket change. But that doesn’t mean that you can’t make a sexy, functional piece of art along the way! [Jan Godde] did just that with his cleverly named Wooden Sensor Box With Two Rotary Disks. (If you’ve got a better name for this thing, toss it in the comments.)

mpv-shot0003From what we can see, the box has two potentiometer sliders, two touch-sensitive potentiometers, two force sensitive resistors, a slew of knobs, and a whole bunch of (capacitive?) touch points. In short, a ton of continuous controllers of all sizes and shapes in an aesthetic case. But stealing the show, and giving the device its name, are two platters from old hard drives that serve as jog wheels.

As shown in the video below the break, the two jog wheels are covered with alternating stripes on the underside. Each platter has a dedicated pair of IR LEDs and photodetectors underneath serving as a quadrature encoder that allows [Jan] to tell which direction the platters are rotating, and how far.

Continue reading “Two Turntables and No Microphone”

Turning A Teensy Into A U2F Key

Last month, GitHub users were able to buy a special edition Universal 2nd Factor (U2F) security key for just five bucks. [Yohanes] bought two, but wondered if he could bring U2F to other microcontrolled devices. he ended up building a U2F key with a Teensy LC, and in the process brought U2F to the unwashed masses.

Universal 2nd Factor is exactly what it says on the tin: it doesn’t replace your password, but it does provide a little bit of extra verification to prove that the person logging into an account is indeed the person that should. Currently, Google (through Gmail and Google Drive), Github, Dropbox, and even WordPress (through a plugin) support U2F devices, so a tiny USB key that’s able to provide U2F is a very useful device.

After digging into the U2F specification [Yohanes] found the Teensy LC would be a perfect platform for experimentation. A U2F device is just a USB HID device, which the Teensy handles in spades. A handy library takes on ECC for both AVR and ARM platforms and [Yohanes’] finished U2F implementation is able to turn the Teensy LC into something GitHub was selling for $5.

It should be noted that doing anything related to security by yourself, with your own code is dumb and should not be considered secure. Additionally, [Yohanes] didn’t want to solder a button to his Teensy LC, so he implemented everything without a button press, which is also insecure. The ‘key handle’ is just XOR encryption with a fixed key, which is also insecure. Despite this, it’s still an interesting project and we’re happy [Yohanes] shared it with us.

Hackaday Links: September 27, 2015

Many moons ago, [Joe Grand] built an adapter that turns Atari 2600 joysticks to USB controllers. Now it’s open source.

Hackaday Overlord [Matt] is holding an SMT and BGA soldering workshop in San Francisco on October 4th. Teaching BGA soldering? Yes! He made a board where the BGA balls are connected to LEDs. Very, very clever.

Our ‘ol friend [Jeremey Cook] built a strandbeest out of MDF. It’s huge, heavy, about the size of a small car, and it doesn’t work. [Jeremy] has built beests before, but these were relatively small. The big MDF beest is having some problems with friction, and a tendency to shear along the joints. If anyone wants to fix this beest, give [Jeremy] a ring.

Everyone loves the Teensy, and [Paul] has released his latest design iteration. The Teensy 3.2 isn’t that much different from the Teensy 3.1; the bootloader has changed and now USB D+ and D- lines are broken out. Other than that, it’s just the latest iteration of the popular Teensy platform.

The DyIO is a pretty neat robotics controller, a semifinalist for the Hackaday Prize, and now a Kickstarter. The big win of the Kickstarter is an electronics board (with WiFi) that is able to control 24 servos for all your robotics needs.

[pighixxx] does illustrations of pinouts for popular electronics platforms. Everyone needs a hobby, I guess. He recently put together an illustration of the ESP8266. Neat stuff is hidden deep in this site.

You would not believe how much engineering goes into making snake oil. And then you need to do certifications!

[David] identified a problem, created a solution, got a patent, and is now manufacturing a product. The only problem is the name.

Using A TeensyLC To Emulate The XBOX 360 Controller

After the release of Mortal Kombat X, [Zachery’s] gaming group wanted to branch out into the fighter genre. They quickly learned that in order to maximize their experience, they would need a better controller than a standard gamepad. A keyboard wasn’t going to cut it either. They wanted a fight stick. These are large controllers that look very much like arcade fighting controls and include a joystick and large buttons. [Zachery’s] group decided to build their own fight stick for use with a PC.

[Zachery] based his build around the TeensyLC, which is a 32 bit development board with an ARM processor. It’s also compatible with Arduino. The original version of his project setup the controller as a HID, essentially emulating a keyboard. This worked for a while until they ran into compatibility issues with some games. [Zachery] learned that his controller was compatible with DirectInput, which has been deprecated. The new thing is Xinput, and it was going to require more work.

Using Xinput meant that [Zachery] could no longer use the generic Microsoft HID driver. Rather than write his own drivers, he decided to emulate the XBOX 360 controller. When the fight stick is plugged into the computer, it shows up as an XBOX 360 controller and Windows easily installs the pre-built driver. To perform the emulation, [Zachery] first had to set the VID and PID of the device to be identical to the XBOX controller. This is what allows the Microsoft driver to recognize the device.

Next, the device descriptor and configuration descriptor had to be added to the Teensy’s firmware. The device descriptor includes information such as USB version, device class, protocol, etc. The configuration descriptor includes additional information about the device configuration. [Zachery] used Microsoft Message Analyzer to pull the configuration descriptor from a real XBOX 360 controller, then used the same data in his own custom controller.

[Zachery] programmed the TeensyLC using the Arduino IDE. He ran into some trouble here because the IDE did not include the correct device type for an Xinput device. [Zachery] had to edit the boards.txt file and add three lines of code in order to add a new hardware device to the IDE’s menu. Several other files also had to be modified to make sure the compiler knew what an Xinput device type was.  With all of that out of the way, [Zachery] was finally able to write the code for his controller.