Want to play with Google Buzz before they get it rolled out to your GMail?
The magic of Google Chrome can hook you up.
Create a shortcut to Google Chrome on your desktop, righ-tclick on it, select Properties, and then paste this after everything in the 'Target' field:
--user-agent="Mozilla/5.0 (Linux; U; Android 2.0.1; en-us; Droid Build/ESD56) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"
(That's two dashes before user-agent, not a hyphen. I can't figure out how to get my auto-formatting to display it properly. Also, you might need to replace the quotes with non-"smartquotes." Smartquotes are DUMB.)
Then go to m.google.com and click on Buzz. This will, however, make all pages Chrome loads behave as if you're browsing them from a Motorola Droid, so it's advisable to make another desktop shortcut with user-agent="" to reset everything.
UPDATE 2/11/2010: Updated the included unswindle to the latest version, fixes errors on unDRMed books.
UPDATE 2/27/2010: Added specification that users install the 32-bit version of python 2.6 for Windows, even on 64-bit systems.
UPDATE 4/30/2010: Added link to older version of Kindle for PC
People have been asking me if there's a way to convert Kindle books downloaded with Amazon's Kindle For PC application pretty much since the day it was released. Sadly, despite a lot of tinkering on my part, there was no elegant solution* until now.
3) Open the unzipped folder and double-click unswindle.pyw
Kindle For PC will now open.
4) Select the book you want to convert.
5) When the book loads, simply exit Kindle For PC
A 'Save' dialog will open asking you where you want to save your new decrypted .mobi file. And we're done.
(As it uses mobidedrm, it still won't work on Topaz/.tpz files, and the first one I tried happened to be one. Still, most books will work.)
*: I did work out a scheme wherein you record video of your desktop, scroll through the book in Kindle For PC, remove all duplicate frames from the resultant video and then convert to PDF, but it was rather unwieldy.
Lest everyone think I'm a total Google Fanboy, I'd like to suggest a really, really simple tactic folks like Cyanogen can take to continue Android innovations while complying 100% with the licensing of Google's "experience" apps.
The crux of the issue is that, without the proper license, it is illegal for Android ROM developers to distribute these apps as part of their ROMs. It'd also be illegal for someone like me to host them myself so that people can simply install them after installing a custom ROM. "Ok," you might say. "Then how am I supposed to get these applications if it's not legal for anyone to give them to me?"
Ah, but there's the catch. There are organizations that are licensed to distribute them. T-Mobile, for instance, is probably the most widely-known, as all our phones will download updates containing the apps whenever a new Android release comes out. Usually there's a bit of detective work involved, though, in determining the URL for these updates. But you know who else is licensed to distribute them, and makes them extremely easy to find/download? HTC.
What would need to happen is that the user could themselves download the relevant firmware update file from HTC's website and save it on their SD card -- which is perfectly legal. The user could then update to a Google-free firmware from someone like Cyanogen. If this Google-free firmware update happened to check for the existence of the official Google-app-including firmware image as part of its setup procedure, and extracted the Google bits out of it, everyone could have the best of both worlds.
The ROM developer would not be distributing the apps. The organization that is distributing the apps is licensed to do so. Everyone wins.
Spent today's meager amount of free time on IRC conspiring with several of the best minds in the game when it comes to the sort of cat-and-mouse activities we seem to revel in playing.
We're a strange breed, us mice; for most people a new phone means freedom and mobility. When people like US get new phones, however, the first thing we do is spend days online in chatrooms, our USB cables running betwixt handsets and computers, ideas, schemes and crazy things to try typed furiously to the mice on the other side of the chat window. Hours and days spent so that we can do things from our phones that we are already at home doing from our computers.
This irony is something that I'm perfectly OK with.
So Android isn't QUITE the magical open platform i had imagined. As it turns out, T-Mobile and Google are doing all they can to ensure that the specific types of things I want to do with it stay impossible. It's early in the game yet, but it could easily be characterized as "cat-and-mouse." Unfortunately for them, these mice are always a few steps ahead of the cat. Plus, the fact that the cat made some really stupid mistakes out of the gate makes things a bit nicer for us mice.
MY Android phone is completely open to all the sorts of things that I want to do now, with some particular clever mice having compromised Google's latest update and used thier own security against them, but if you've got a T-Mobile G1 and want to have the opportunity to do some of the more awesome stuff we mice are working on, it's extremely important that you don't update to the RC30 update. There's nothing new and exciting in the update anyway.
Update: This tutorial is largely superseded by the much nicer and easier 'Kindle For PC' method: see it here.
UPDATE 2: included Preston Lee's online PID generator.
D got a big fat tax refund, so she recently bought one of those new-fangled Amazon Kindle thingies for purchasing and reading books in an electronic form. (She loves it.)
I like to read books in an electronic form on my iPhone, but find that it's pretty hard to come by them legally; there are many different sellers and formats, some of which have certain books but not others. Sometimes they have the book, but not in a format I can do anything with. It's generally easier just to illegally download them from torrent sites.
Amazon has tons and tons of books available for Kindle, and have chosen the standard MobiPocket format as the one their reader uses, meaning it is theoretically trivial to purchase them and convert them to something else. Except that they won't sell them to you unless you have already purchased a $400ish Kindle on which to read them. Meaning you don't need to convert them...
In any case, now that our household has a Kindle, it frees me up to purchase books from Amazon in Kindle format without actually having a Kindle myself. I then just remove the DRM that Amazon puts in the files (to keep people from converting them, natch), and then convert them to HTML or txt to read in Books.app on iPhone. Want to know how to do the same thing?
Step 1) Find someone with a Kindle.
Step 2) On their Kindle, go to the Settings menu, and type '411' on the keypad. This will bring up a little information dialog with a bunch of things in it, of which you only need the Serial. It is a 16-character string of letters and numbers. Write it down.
Step 3) Ask the Kindle's owner to buy a book for you. Give them some money so you don't look like a mooch. Once you've given them the money, ask them to log in to their Amazon account and navigate to their 'Kindle Downloads' page from your computer. When they complain, mention that you've already given them money. The Kindle Downloads page will list all the books they've purchased, and yours should be right at the top. Click 'Download to computer' and you'll get a file named 'Title-of-Book.azw'
Step 4) Download MobiDeDRM.zip, which is a small suite of Python scripts that some kind soul wrote and then distributed through links that expire all the time and can be kind of a pain to track down. I've hosted them from my site so that they won't expire. This .zip file contains mobidedrm.py, mobidedrm2.py, kindlepid.py and mobihuff.py.
(These scripts require that you install Python on your system, which is something outside the scope of this howto. I'm on linux, but there's a Python for Windows called "ActiveState Python." Google will help.)
After unzipping the archive, open up a terminal window and pass the Kindle's serial # (which you previously wrote down) to kindlepid.py. Something like this:
python kindlepid.py XXXXXXXXXXXXXXXX
Where all those Xs are replaced with the Kindle serial number. It will return something that looks like this:
Mobipocked PID for Kindle serial# XXXXXXXXXXXXXXXX is Z1QFCDQ*74
where my 10-character gibberish string is replaced with the one you made note of in the last step. This will take about a minute, and when it finishes you'll see:
Decrypting. Please wait... done
Now you will have a decrypted MobiPocket-formatted ebook that you can read in any MobiPocket reader.
If, however, you want to convert it to HTML to read on any device you wish, you'll want to install MobiPerl. (This, of course, will require you to install Perl. MobiPerl's website will walk you through that.)
6) With MobiPerl installed, do this:
This will create a directory named 'unpacked' that will contain Title-of-Book.html
Things that can go wrong:
Amazon seems to compress longer books in a slightly different manner than shorter books. If your resulting .mobi file and/or .html file are oddly gibberishy (for example, if the first line starts in the middle of a sentence, and clearly not the beginning of the book), let's go back to step 5.
Step 5b) These 'huffdic-compressed' books require a slightly different script to remove the DRM. Do this:
This script will output the .html file in the directory from which you are running it.
All in all, this is as much of a pain as it looks, but the selection and availability of books on Amazon makes it worthwhile to me. They have far more books than The Pirate Bay does, and I feel better paying for them
Update: several readers have alerted me that there's a much newer version of mobiDeDRM available. You can download it here.
[UPDATE: Grr. Comments were broken again. I will never intentionally disable commenting on posts, so if you ever happen to be unable to leave one, I'd like to hear about it :)]
Sorry that I've been neglecting all of y'all. I've just been hax0ring around in the inner-workings of the iPhone, and have been having so dang much fun that I haven't had time for you.1
Tonight, for instance, I decided to see if I could take advantage of the on-phone voice mail handling to do things that no one ever intended me to. See, you click a button to record a greeting or play voice mails, never actually having to call up a voice mail system to do anything. I decided that I wanted to try to take an existing audio file and use that rather than recording audio through a tinny cellphone microphone. So, having full system access to every nook and cranny of the thing, I did a little digging around and found where it stores the temporary greeting file that is created (you record it, then you have an opportunity to listen to it, THEN you click 'save' to upload it), finding it in relatively short order.2 It is an 8000 KHz .AMR file. I don't know what that is, but FFMPEG can create them, so I created my own using audio I happened to have lying around.
After recording a couple seconds of audio on the phone, I then replaced the temporary greeting file with my newly-created one, and then clicked 'play' on the iPhone to see if it was dumb enough to just assume the file was the same one it recorded. It was. I then clicked 'save' and watched it upload the audio to the voice mail system.
The same can be done with incoming messages, which should prove rather handy should anyone ever leave any mean-spirited ones.
If you'd like to experience my new (temporary) voicemail greeting, go ahead and give me a ring at 3605211191 before about 6am Pacific time on Aug 16th (I'll be changing it to something a little less... crazy... at that time.)
Also, please feel free to leave me a message after the beep. If I get anything good, maybe I'll post them here.
1: I do have a full review coming at some point in the future, as I decided to keep it rather than off-loading it. Short review: despite the many, many, many (many) annoying stupid things about iPhone, it's still the best (and nerdiest) phone I've ever, ever owned. You can have it when you pry it from my cold greasy hands.
2: In case you're playing along at home, after recording your temporary greeting, you'll find it at /var/root/Library/Voicemail/Greeting.amr on your iPhone. Just copy your 8000 KHz .amr file over that one.
The past few days I've been haunting the iPhone haxx0r IRC channels, hoping to glean some working-knowledge of what the progress of the various goals are as they happen.
What is incredibly astounding is the level of impatience among all the non-haxx0r types that keep popping in to see what's up. One guy in particular, who we'll call "dave" (because that's the nick he uses), repeatedly asks the same questions over and over again regarding progress. People keep pointing him to the wiki, where all the known info can be obtained, but he insists there are things we are not being told in regards to "unlocking" the iPhone. (Dave is one of the many who want to use his iPhone on a non-AT&T network.) I suggested to him that actually, they had already figured out the unlocking, but that Apple swooped in and "got to them" before they could publish the hack. Cut to 24 hours later, and he's proclaiming to everyone that "Apple got to" the main guy, which explains why there have been no progress updates in IRC or on the wiki.
The fun thing is that the guy he just told that to hopped over to the OTHER haxx0r channel and asked if it's just rumor that "Apple got to him," where, of course, everyone played along.
Expect that little bit of rumor to show up on Digg and Slashdot any time now.