Joe Williams home
I was lightly considering purchasing one of the new ipod nano's that recently came out. But it looks like I won't due to changes by Apple to keep thrid party apps from working with the ipod. As Cory Doctrow explains at BoingBoing:
The latest iPods have a cryptographic "checksum" in their song databases that prevents third-party applications from synching with the portable music players. This means that iPods can no longer be used with operating systems where iTunes doesn't exist -- like Linux, where gtkpod and Amarok are common free tools used by iPod owners to load their players.
There's also a bit of a technical post regarding the itunes database and the changes made. They have a snip of the itunes database (below) where they think the new changes were made.
At the very start of the database, a couple of what appear to be SHA1 hashes have been inserted which appear to lock the iTunes database to one particular iPod and prevent any modification of the database file. If you try to do either of these, the hashes will not match and the iPod will report that it contains "0 songs" when the iTunesDB would otherwise be perfectly adequate. ... ... 0x2C 4 zero padding 0x30 2 unknown = 1 0x32 20 unknown, changing completely from itdb to itdb 0x46 2 language, seen: de, en 0x48 8 library persistent id 0x50 4 unknown, seen: 1, 5 0x54 4 unknown, seen: 0x08, 0x0D, 0x1D, 0x4D, 0x8D 0x58 20 unknown some similarities between versions 0x6C 4 timezone offset in seconds. +2*60*60 -> 0x00001C20, -4*60*60 = 0xFFFFC7C0 (really?) 0x70 76 zero padding 0x00000000 0x32 is most likely a SHA1 hash, and 0x58 also could be. The question is, could you help? Hop along to freenode #gtkpod if you have some serious technical expertise in this kind of thing and are able to obtain a new iPod Classic or Nano.
This is disappointing. Unless a development team with gtkpod, rhythmbox, amarok, exaile or another FOSS music player/ipod manager can reverse engineer this stuff, linux will be without any new ipods. I don't imagine Apple making any easier in the future.
Fork me on GitHub