A cunning Polish developer has hacked an Android food and drink rewards app to grant himself unlimited free beer.

Kuba Gretzky detailed his excellent exploits in a blog post on Breakdev – though, to deter copycats, he didn't name the rewards app or the precise location within Poland where it was operating.

He did, however, name the makers of the tech used by the unnamed rewards app: beacon supplier Estimote.

The rewards app worked by allowing bars and restaurants to award loyalty points to diners for certain purchases, including beer. To verify the purchase, the vendor either swipes a physical beacon over your phone or enters a PIN.

Gretzky's interest was piqued when he started looking into how secure the beacon technology used by the rewards app was. Thanks to Estimote's extensive online documentation for its software development kit he was able to learn what sort of information their beacons transmitted – and their range, which is a maximum of 70 metres.

He wondered, in particular, whether the authorisation keys for the transaction were broadcast over the air by the beacons.

Armed with a custom-written Android app to read the beacons' signals – again, aided by Estimote's exhaustive documentation and its Developer App – along with a Windows platform running packet-sniffing program Fiddler, Gretzky discovered not only that the rewards app definitely required a PIN, it locked him out for 30 minutes after he started trying to brute-force it.

After setting up his Android phone to forward HTTPS traffic from the app to a specially set-up VPN where he could later retrieve and decrypt the traffic, Gretzky toured three restaurants and captured some genuine PINs which confirmed his hypothesis that the authorisation keys were broadcast over the air.

He summarised his exploits (“how to get free EatApp points”) as:

Walk into restaurant ZZZ.

Open up Estimote developer's app and detect the closest nearby beacon.

Save the screenshot with the visible UUID, Major and Minor values.

Go home.

Set a breakpoint in Fiddler to intercept EatApp packets with /users/ path in GET requests.

On your phone, select the ZZZ restaurant and set EatApp to await PIN authorization for earned points.

Enter any PIN.

Modify the intercepted packet in Fiddler, removing the "pin":"NNNN" entry and replacing it with the valid "main_beacon":{...} content containing the beacon keys captured with Estimote app.

Let the modified packet through to EatApp server.

Enjoy your free points!

Doubtless many Reg readers are familiar with man's eternal quest for free beer through technological means. Not that many will have gone to these lengths – or have you? ®