It was amazing to watch the effort Wasabi and Jrwr put into reverse engineering these ATMs. This write up is no where reflective of the head banging these people did to figure this stuff out.
Fun Fact. George (the dog pictured in the bottom of the post) is the laziest husky you will ever encounter. But he is cute.
I found it hard to discover what they were even trying to achieve. I think they are saying they needed to make the pi pretend to be both a modem, and the server on the other side of the modem. But not all is clear. What generated "RING RING"? Normally the modem would say that, if there were one.
I think the Raspberry is taking the role of the "financial institution", not the modem. The writeup seems to indicate they have an actual modem on both sides, but I couldn't find out how they are connected.
You don't really need an actual phone line, but you would have to add a dialtone, and simulate the ringing. If you controlled both sides, you could disable dial tone detection, and just "answer" whenever you please, and wire the two modems. But they don't seem to have modified the ATM, just changed some settings. So that's out, and we do have some sort of phone line. But simulating a line would be a project into itself and, if they went through such lengths, I would expect that to be noteworthy enough to be mentioned.
That, and given their unfamiliarity with modems, makes me think they actually have a phone line and are really dialing.
Assuming you have adequate control over the local network to deal with jitter one could just use SIP ATA’s with everything set to use G.711 (uncompressed PCM audio) and make modems quite happy to believe they are on a traditional POTS line.
You would need to know how to setup Asterisk or something similar to do this, but it’s not a Herculean effort either.
Alternatively, POTS PBX devices exist as well and would work fine - though they’re harder to come by these days.
> makes me think they actually have a phone line and are really dialing.
Yeah. It was an actual telephone system using a cheap ass PBX. The Pi had a modem connected which would dump the incoming messages into a python application that would do the decoding.
We were (and are) learning as we go on this. Modems and PBXes were very unfamiliar. This might be a fun future goal for us! Never actually thought about that.
The RPi turned ATM API called (done over POTS), into REST calls. One side would listen for the incoming call and decode the message, and the other side would call the custom banking application.
I wrote the article, I think that can be cleaned up. The Pi Served as the payment relay, which would forward to the payment processor. The RING RING is actually generated by the auto-dial on the modems, which were set to auto answer every time the ATMs dialed. Its a visualization of what the modems are receiving from the ATMs
In a "real world" example, the Pi would be the Localized Payment Processor which then forwards transactions to a remote one.
9 comments
[ 0.14 ms ] story [ 41.0 ms ] threadFun Fact. George (the dog pictured in the bottom of the post) is the laziest husky you will ever encounter. But he is cute.
You don't really need an actual phone line, but you would have to add a dialtone, and simulate the ringing. If you controlled both sides, you could disable dial tone detection, and just "answer" whenever you please, and wire the two modems. But they don't seem to have modified the ATM, just changed some settings. So that's out, and we do have some sort of phone line. But simulating a line would be a project into itself and, if they went through such lengths, I would expect that to be noteworthy enough to be mentioned.
That, and given their unfamiliarity with modems, makes me think they actually have a phone line and are really dialing.
You would need to know how to setup Asterisk or something similar to do this, but it’s not a Herculean effort either.
Alternatively, POTS PBX devices exist as well and would work fine - though they’re harder to come by these days.
Yeah. It was an actual telephone system using a cheap ass PBX. The Pi had a modem connected which would dump the incoming messages into a python application that would do the decoding.
The RPi turned ATM API called (done over POTS), into REST calls. One side would listen for the incoming call and decode the message, and the other side would call the custom banking application.
In a "real world" example, the Pi would be the Localized Payment Processor which then forwards transactions to a remote one.