ATM Hacking

We have the great opportunity to work on so many fun projects. One of my favorites was working with Decibel Management for H&R Block. The experience was meant to show consumers that H&R Block can not only save you money, but get you cash back on your tax returns.

The M1 Team was in charge of building the inner workings of an interactive kiosk with a consumer facing touchscreen. The intention was to get people to play a simple game onscreen, answer a few trivia questions, then give them actual cash. Everyone was to be a winner of a minimum of $10, while some people received $100 and the grand prize winner was $1500 in cash.

We had never worked on a project that gave out actual cash, so this one was especially exciting. We proceeded to try to design a cash dispensing system on our own, but pretty quickly realized there is no easy way to keep track of or count the bills being distributed. After spending some time researching ATMs and how they work, we found some used ATMS and purchased them. Our hope was that we could use the existing software and control it through an API or some sort of communication method from the built in PC.

As is the usual case with these types of hardware hacks, this proved to be all but impossible, as ATM manufacturers don't give this info out freely. So we got out the oscilloscope, tore the machine down to the wiring and motors and analyzed the signals that controlled the various motors. As it turned out, the ATMs had multiple motors, some turn pull the money upward from the cash tray and others to pull it through the counting mechanism, then another to carefully push the bills out through a series of roller wheels.

I designed a quick motor control system using an Arduino, controlled through a serial command from MaxMSP's Serial Out operator. This allowed us to test the various motor timings and reverse engineer what it would take to get the motors spinning at the proper timing and order. After a coupe weeks of experimentation, we figured that part out, which was kind of amazing. In the meantime, we received a delivery of a few thousand dollars of $10 bills from an armored vehicle.

Most of our time on this was spent on loading and shooting the bills out the motor system. We had no way to slow the bills down, so they just shot out of the ATM like a cannon, which was much more fun anyway. Once we figured out how to pull this off, we installed a fairly complex control system into the kiosks and set up our serial commands to communicate from our Unity app to send a signal to the Arduino to fire the motors. This would then control what dollar amount would be delivered to the guest.

When the kiosks were delivered to various venues, mostly malls, there was no announcement or buzz whatsoever, so it was fun for us to be on-site and watch the very first person walk up to it at each event and win some cash. Upon winning actual cash, each person let out a scream or loud laughter which brought the attention of everyone around them. As crowds quickly formed, hundreds of people immediately got in line to win some cash. This may be one of the most successful campaigns we were ever involved with.

It felt great to work on a project to give out cash. Everyone working the event and people who attended had the greatest day. At one event, an older gentleman who won the $1500 told us he had just spent the last few dollars to his name to fix his car and came over to the mall to wait for it. He was crying with excitement of winning. It was very emotional for all of us and we loved being a part of this.

Author: Brian Dressel

Previous
Previous

Giant Joysticks For Comic-Con

Next
Next

Projection Mapped Office mural