Please excuse the code quality... I think I was still learning how to write js at the time.
504 karma · joined May 8, 2014
Please excuse the code quality... I think I was still learning how to write js at the time.
A bit light on the technical details perhaps, but I recall getting stuck on getting the right airplay parameters, learning how byte endianness works... happy to try to answer any other questions as best I can remember.
EDIT: Sorry, I realized that I didn't actually answer the other question. I first got interested in reversing from console hacking, specifically this talk about wii hacking: https://youtu.be/0rjaiNIc4W8 (including marcan of asahi linux fame!). Their group also had more writing at: https://fail0verflow.com/blog/. Also interesting to read about mgba emulator development: https://mgba.io/tag/debugging/, v8 internals: https://mrale.ph, react internals: https://overreacted.io/
Consuming a lot of literature on how different systems work helped me develop intuitions around how you might take something apart. Then it's a matter of trying things and banging your head against the wall a lot, e.g. at some point I was interested in how compilers worked so I tried hacking typescript syntax support into babel (circa 2017 maybe) - I got pretty far! and got a lot better sense of how compilers work.
I did some protocol reversing and wrote a small program that pretended to be an airplay speaker to pipe audio to a sonos speaker (archive: https://github.com/stephen/airsonos)
I ended up getting recruiting messages from both the airplay team at apple and some folks from sonos. I didn't end up taking either offer, but it was also an interesting talking point when interviewing for the job I did take.
It looks like you have an Venmo integration ("Sent to Venmo" in screenshots) which I haven't quite cracked yet - curious if you're willing to talk about how it works. Tender has venmo via plaid, but it only supports importing tx, not initiating payments/requests.
I thought about either: integrating unofficially (https://github.com/mmohades/VenmoApiDocumentation) or just doing links to venmo payment (i.e. venmo.com/user?pay=500) and having some way to import venmo contacts
Neither seems great from a UX or security perspective.