less hack-a-laundry.md4 min

Hack-a-laundry

Intro

The building I currently live in has a laundry room with some washing and drying machines. They work quite well, to be fair, but the app that drives them is half assed and quite archaic; most of the time it doesn't work, or it straight up takes your credits and doesn't turn the machine on. My goal was never free laundry. It was to never again have to go through that horrendous app I'm forced to use. (Spoiler: I still use the app and still pay for credits. This was about dignity, not larceny)

For the record: this is my own building, for my own personal use. No tokens were resold on the dark web in the making of this post :P

AI comes into play

With the constant drop of new models, each one seeming more and more intelligent, I decided to give Claude a shot at bypassing the app and talking to the controller directly.

First attempt

My initial idea was to take my MacBook to the laundry room, but as you're probably thinking too, that was scrapped immediately. Too much attention.

Stealth mode on

Once I knew I couldn't work there with my Mac, I decided to bring my phone and let it be driven by Claude, which was running on my Mac back in my apartment. That way the phone acted as a stealthier proxy between Claude and the BLE controller.

Baby steps

Our first attempt was to let Claude poke at the controller and find out what would happen. To do that, I downloaded an app that acts as a regular browser but also exposes an API for interacting with BLE (Bluetooth Low Energy) devices.

I told the model (which, if I recall correctly, was Opus 4.8) to build a big button so I could interrupt it whenever one of its pokes did something to the controller. I know for a fact that the controller makes a clicking sound when you activate a machine, and there's also an LED that turns from green to red.

The dead end

I let Claude poke around for a while. Remember, I couldn't stay there too long doing nothing, because it would look kinda sus. There's a security camera down there.

I eventually aborted the scan because we were going nowhere.

Smart, eh?

When I went back home and started talking to Claude again through my Mac, I got a better idea. Instead of blindly sending BLE writes to the controller, what if I told Claude to download the APK for the Android version (which are easier to get and decompile than iOS's)?

And so I did. And it was wonderful.

The app literally hardcodes the bytes it sends to the controller. Claude read that and it immediately yelled at me that we'd got it!

Celebration

After Claude found which bytes needed to be sent to turn on the machines, the model asked me to go back to the laundry room and verify that each write correlated to each machine the app reported.

So I went down to floor -2 and started writing bytes to the controller after connecting to it.

Seeing the lights turn from green to red, one by one, like magic, was pretty satisfying. Not gonna to lie.

I told Claude each write was correctly labeled.

The final step

So what now? I had free laundry on tap, which, as I said, was never the really the point.

What I actually wanted was to never touch that app again, so I asked Opus to build me something better. We wrote a simple frontend: the 3 washing machines on top, the 3 drying ones underneath, each one a button. It has a random domain Cloudflare handed me, backend is a small worker doing some retry logic for when the controller gets moody.

The best part is the Telegram alert. It pings me 5 minutes before a cycle finishes, which is exactly enough time to get my slides on, call the elevator, and arrive just as the machine stops: clothes nice and warm, no app, no lost credits, no staring at a spinner that lies to me.

Frontend view

All of this was done in a single day. If it weren't for that first failed run, I'd probably say it took 1 or 2 hours from nothing to fully finished. This is both scary and awesome at the same time.

Conclusion

Having the ability to just do stuff like this feels like magic to me. Five years ago, no one would have imagined that the power to break down practically any piece of software would come down to just you and your will to do so, given enough time (and given that Claude doesn't yap at me about how it won't do that because of its guidelines). And this is just a very silly, though useful, example. It feels like the tip of the iceberg.

(END)q quit back to homeb back to all blogs