Hackaday Prize Entry: Two Factor Authentication Key

Because people are generally idiots when it comes to choosing passwords — including people who should know better — Google created Google Authenticator. It’s two-factor verification for all your Google logins based on a shared secret key. It’s awesome, and everyone should use it.

Actually typing in that code from a phone app is rather annoying, and [Alistair] has a better solution: an Authenticator USB Key. Instead of opening up the Authenticator app every time he needs an Authenticator code, this USB key will send the code to Google with the press of a single button.

The algorithm behind Google Authenticator is well documented and actually very simple; it’s just a hash of the current number of 30-second periods since the Unix epoch and an 80-bit secret key. With knowledge of the secret key, you can generate Authenticator codes until the end of time. It’s been done with an Arduino before, but [Alistair]’s project makes this an incredibly convenient way to input the codes without touching the keyboard.

The current plan is to use an ATMega328, a real-time clock, and VUSB for generating the Authenticator code and sending it to a computer. Getting the secret key on the device sounds tricky, but [Alistair] has a trick up his sleeve for that: he’s going to use optical sensors and a flashing graphic on a web page to send the key to the device. It’s a bit of a clunky solution, but considering the secret key only needs to be programmed once, it’s not necessarily a bad solution.

With a small button plugged into a USB hub, [Alistair] has the perfect device for anyone annoyed at the prospect at opening up the Authenticator app every few days. It’s not a replacement for the app, it just makes everything easier.

The 2015 Hackaday Prize is sponsored by:

A Hacker-Friendly Blinky USB Stick

The availability of Smart RGB LED’s, either as individual units, as strips or even as panels, have made blinky light projects with all kinds of color control and transition effects easy to implement using even the simplest of controllers. Libraries that allow control of these smart LEDs (or Smart Pixels as they are sometimes called)  make software development relatively easy.

[overflo] at the Metalab hackerspace in Vienna, Austria recently completed development of usblinky – a hacker friendly blinky USB stick. It can control up to 150 WS2812B smart LED’s when powered via an external power supply, or up to 20 LED’s when powered via a computer USB port. The micro-controller is an ATTiny85 running the Micronucleus bootloader which implements software USB using vUSB. The hardware is based on the DigiSpark platform. The usblinky software sources are available on their Github repo. The section on pitfalls and lessons learned makes for interesting reading.

Metalab plans to run workshops around this little device to get kids into programming, as it is easy enough and gives quick visual feedback to get you started. To round off the whole project, [overflo] used OpenSCAD to design a customizable, 3D printable “parametric orb” which can house the LED strip and make a nice enclosure or psychedelic night light. Check out the mesmerizing video of the usblinky Orb after the break.

Thanks to [papst] for sending in this tip.

Continue reading “A Hacker-Friendly Blinky USB Stick”

A Wireless Computer Remote that Emulates a USB Keyboard

PCRemote

If you are anything like [Antoine], you would love to be able to control your PC with a simple hand-held remote control from anywhere in your house. [Antoine] wrote in to tell us about his wireless computer remote that emulates a USB keyboard, making it suitable for any device that uses a USB keyboard.

His blog post is very well written and contains a ton of design information and background on the project. He initially wanting to easily control his PC’s music from anywhere in his house without needing to be within line of sight of his computer. The end result is a very handy remote that can be used to change music, video, and even launch applications on his computer. The system consists of a base station for his remote that connects to the computer and acts as a USB keyboard, and the remote itself. The base station uses V-USB on an Arduino to interface with the computer, and VirtualWire to handle the wireless protocol for the remote. For those of you who don’t know about VirtualWire (now superseded by RadioHead), it is a very cool Arduino library that lets you easily use raw wireless interfaces (also called vanilla wireless interfaces).

Without going into too much detail here (be sure to see the actual post for more information), the remote itself was redesigned after the initial proof of concept to maximize battery life. The final power consumption is very impressive, resulting in a battery life of more than two years! This remote system is very well put together and contains many aspects that can easily be reused for other projects.

Toorcamp: Banana Piano

Banana Piano

[Michael] built his own clone of the popular MaKey MaKey Kickstarter project. His implementation uses an ATMega328 and the V-USB stack to connect as a USB Human Interface Device. He was showing it off at Toorcamp wired up to a banana piano, which captured the interest of kids and adults alike.

The digital inputs are pulled to ground with a large (10 Mohm) resistance. The user holds a supply voltage in one hand and completes the circuit by touching a conductive object like a banana, which is connected to a digital input of the ATMega328. Since the internal resistance across your body is typically around 1 Mohm, this pulls the input high and corresponds to a key being pressed on a normal keyboard.

We featured banana pianos before, and it’s a great demo of the interfaces that can be built with this project. This implementation is very simple, and works well if your internal resistance is low enough. [Michael] taught a workshop at Toorcamp to show people how to build their own. He has found that the ‘magic’ of playing music with bananas is a great way to get children interested in electronics.

Keyboard Converter 2 Pack

[REVENGE] pointed out a couple cool little project posts from the geekhack fourms converting vintage keyboards to USB with a Teensy. They both have VUSB support, so any avr micro controller that meets VUSB’s requirements in theory could be used.

First up is a PS/2 to USB keyboard converter, and while yes this has been done many times before, this one sports some extra features not often seen, like mouse keys, system and multimedia keys, and keymap customization. Instructions are also provided for use with a non USB enabled avr controller (like a mega 168, or 328) through the VUSB library (though with not all features available).

Next is pretty much the same thing, but it converts Apple Desktop Bus to USB, which is not exactly rare, but its lack of a clock serial signal, somewhat variable timing, and the fact that you wont find a bucket of Apple keyboards for a buck at the thrift store makes any ADB converter worth mentioning.

VUSB instructions seem to be the same for either, source is available and there are some cool pictures and info listed, and besides what is more fun than being able to plug your Model M into your netbook, or your Apple Extended Keyboard into your mac mini.