Does anyone have a cool idea what to do with the wishlist feature on Google Play? Technically it’s just a bookmarklist for digital goods (works for apps, music, books, …) that have a store page. Seems like a shame to implement it the way it was intended to be used (as a self imposed pester power item).
Made a bit of progress on the bypass sms verification code when signing up for a new Google account. The whole system is breathtaking from a technical, legal as well as a psychological persepective.
At least on Android, the user is deliberately steered into a “sunk cost falacy” type of situation that suggests that s/he just wasted a couple hundred bucks on a toy that won’t work properly unless connected with a Google Account. Of course, the phone screen is too small to read the terms compfortably and the default is to skip reading your contract anyway. If you want to know what you actually agree to, you pretty much have to look at the wire protocol (it is a lot). How on earth is it that we don’t have laws against this?!
Of course, DummyDroid is pretty much unfixable for various reasons. It’s cheaper/faster to rewrite it from scratch. The main problem here is that in order to spoof an Android device, you need to supply 29 data points:
Some items (e.g. fingerprint, timestamps, locales) can be calculated or set to sane defaults, but that still leaves around 20 things that must be collected by the user. The challenge is coming up with a userfriendly interface for that.
K, Google came up with a new shitty idea to make sideloading difficult: uncompressed native libraries in the APK. The story here is that it will save space on the device if native libraries don’t have to be extracted, but can directly be mapped from inside the APK file. So now we are in the happy situation, that based on the SDK version (or more precisely: the version of the finsky app), we can get the very same app in three different variants:
Well, it’s not an immediate problem with Raccoon, but I should probably focus on fixing DummyDroid now.
Yeah, I know, no blog updates in two months. Sorry about that, but there wasn't really anything to write about.
This whole CAPTCHA nonsense might, of course, be (in part) IP address related. At least there’s https://accounts.google.com/DisplayUnlockCaptcha. Not sure how that is actually suppose to work, no useful documentation on it either (surprise!). Anyway, I decided to work on proxy support in the setup wizard.
HTTP(S) is fairly unproblematic. Just a ton of boilerplate code, but you can easily switch between proxy hosts on a per request basis (e.g. if you want to bypass geo blocking). What’s giving me headaches is SOCKS5 (Tor, SSH tunnel). For this one you basically have to reboot the entire network code when switching hosts (killing transfers). I guess, I’ll postpone that for now, though SSH tunneling could be real handy.
I’m not sure if the HTTP User-Agent header matters for the login service (it does matter for market service), in case it makes a difference, here’s how to come up with one:
APPNAME/VERSION (DEVICE ID)
Use either “GoogleLoginService” (earlier Android versions) or “GoogleAuth” (later Android versions) as APPNAME. I don’t know exactly when it got renamed, but it must have happened after SDK 16 and before SDK 19. VERSION may be “1.2” or “1.3” for “GoogleLoginService” and “1.4” for “GoogleAuth”.
DEVICE and ID are ro.product.device and ro.build.id from your 🗋 /system/build.prop file.