Waxy.org
Waxy.org is the sandbox of Andy Baio, an independent journalist and programmer living in Portland, Oregon. I created Upcoming.org and some other stuff too.

Contact Me: log@waxy.org or waxpancake on AIM

Search the iTunes Music Store

Posted May 9, 2003

I whipped up a quick PHP script that allows anyone (even PC users like myself) to search the iTunes Music Store. Sound clips are in Apple's proprietary M4P format, so don't expect to be able to listen to them unless you have iTunes installed.

You can try out the search for a limited time here (until it gets too popular), or download the script for your own site. Feel free to modify it however you like.

Update: Apple seems to be encrypting (or compressing?) their XML now, which breaks the script entirely. It doesn't seem to be gzip-encoding, either. Any guesses on what they're up to?

February 10, 2004: Someone sent me the e-mail below, discussing how they figured out the encryption. This is a bit above my head, but other people may find it useful.

April 17, 2004: Someone finally wrote a script to work around iTunes encryption. Go play with iTMS-4-All.

Anonymous wrote:

Last year you had a blog entry about Apple encrypting the iTunes Music Store.
I didn't see any follow ups on this, so I don't know if anyone cares anymore, but I've figured out the encryption.

The encryption is standard AES128 CBC. The iv, of course, is sent in the header, and the encryption key is:

8a 9d ad 39 9f b0 14 c1 31 be 61 18 20 d7 88 95

After decrypting, you'll end up with a gzip file.

The key is actually generated from the following code snippet:
(using openssl's md5)
MD5_CTX ctx
unsigned char key[16];
MD5_Init(&ctx);
MD5_Update(&ctx,"Accept-Language",15);
MD5_Update(&ctx,"user-agent",10);
MD5_Update(&ctx,"max-age",7);
MD5_Final(key,&ctx);
// key[16] contains the AES key now

Hope this helps revive everyone's ITMS interfaces.

22 Comments (Add Yours)

May 9, 2003
4:24 PM  
Andy Baio wrote:

Quicktime 6 for Windows won't play the M4P clips.


May 9, 2003
11:17 PM  
Olen Anderson wrote:

They're encoded in regular old vanilla AAC. I'm sure there's a player that supports that in Windows somewhere, it'ss hardly new.


May 10, 2003
5:38 AM  
Konstantinos wrote:

Andy, are you sure it still works? I tried a few searches on popular artists/albums/songs and got zero results each time.


May 10, 2003
5:56 AM  
Konstantinos wrote:

(Also, a link which may be of interest to the programmers out there: Apple, XML and the Music Store.)


May 10, 2003
9:48 AM  
Marcus wrote:

The latest version of Winamp 2x supports AAC encoding. But then I read here that older AAC plugins for Winamp won't play iTunes Musc Store stuff. So I'm not sure if that means the new native support doesn't work either.

This thread on the Winamp forum is still developing and contains some useful info re: AAC and .m4a.


May 10, 2003
4:51 PM  
Andy Baio wrote:

The clips were M4P files, which is Apple's DRM-added version of AAC. I doubt they'll play on anything besides Quicktime, and it doesn't appear that the newest Quicktime for the PC supports it yet.


May 10, 2003
7:53 PM  
Jack wrote:

Apple is now using the Rijndael-256 algorithm in addition to gzip compression for encoding data from the iTunes store.

Here's the HTTP header response from iTunes following a search request:

HTTP/1.1 200 Apple
Date: Sun, 11 May 2003 02:13:05 GMT
Content-Length: 3616
Content-Type: text/xml; charset=iso-8859-1
Cache-Control: no-transform
Server: Apache/1.3.27 (Darwin)
content-encoding: gzip, x-aes-cbc
x-apple-max-age: 3600
x-apple-crypto-iv: d9e5395496e7e82498105ea9041c6102
x-apple-protocol-key: 2
x-apple-asset-version: 186
x-apple-application-instance: 1
Via: 1.1 netcache01 (NetCache NetApp/5.2.1R2D2)

I tried writing something to decrypt their XML but ran into some roadblocks. Firstly, the IV for decryption is given, but there's no telling what additional encryption is needed on the key itself (which I assume is 'x-apple-protocol-key'). I also don't know if the data is gzipped and then encrypted or vice-verse.

I don't know man, I'm stuck.


May 10, 2003
8:47 PM  
David Weekly wrote:

Looks like Apple has got a set of AES keys built into iTunes. The HTTP response header indicates which key (key 2 in build 186) should be used, along with the IV to use.

Some handy work with a debugger should help you pry out the keys from iTunes. This is what the DeCSS folks did with Xing's software to grab a CSS key.


May 10, 2003
8:49 PM  
Jack Driscoll wrote:

If you figure it out I'd love to plug the key into the script I have thus far.


May 11, 2003
5:04 AM  
Blo wrote:

Are all artists covered in the Apple music store?


May 11, 2003
5:54 PM  
frank wrote:

you have excelent content here. now you are in my blogroll list.


May 11, 2003
11:52 PM  
Fash wrote:

Using toast titanium was the easiest for me. I bought an album, drug the .m4p's to toast, wrote an image, mounted the image, used itunes to MP3 them, and then dropped them on my PC over the network.


May 12, 2003
5:25 AM  
Konstantinos wrote:

Fash, if I got that right, you're doing some transcoding [.m4p→.wav(if you're using Toast Titanium to create an Audio CD)→.mp3] here, which results in a serious loss of quality (which, in turn, is something that's not highly desirable).


May 12, 2003
5:40 PM  
carson wrote:

iTunes is a bugger to, well, debug. So many threads! So much data! Knowing where to "break" becomes rather arbitrary as I don't know of any specific system calls that would be used in working with encryption. I wonder how big the key is? It seems unlikely, but maybe it could be brute forced.


May 13, 2003
2:43 PM  
dace wrote:

rename the file extension to : .mp4


May 13, 2003
3:58 PM  
Andy Baio wrote:

Renaming the file does nothing. It's still unplayable by Quicktime.


May 13, 2003
8:04 PM  
Lag wrote:

Hmmm... why bother with iTunes... or anything made by Apple, for that matter? Just let them die the silent death that's been waiting since Steve first hoisted that skull and crossbones flag.


May 21, 2003
2:08 PM  
hehe wrote:

the small clips (30 secs) of the apple store can be played back with mplayer (which uses faad2 / and openQT (openQuicktime) used by ffmpeg)


Oct 21, 2003
1:14 AM  
roeles wrote:

My iTunes 4 sends this string to the music store:

GET /WebObjects/MZStore.woa/wa/com.apple.jingle.app.store.DirectAction/browse?path=%2F4 HTTP/1.1.Accept-Language: en-en, en;q=0.75, en-us;q=0.50, fr;q=0.25.
User-Agent: iTunes/4.1 ($OS)
Accept-Encoding: gzip, x-aes-cbc.
Host: ax.phobos.apple.com.edgesuite.net.
Cookie: countryVerified=1.
.

Not the Accept-Encoding part :)


Apr 17, 2004
2:29 PM  
James wrote:

If you use playfair or m4p2mp4 you can remove the DRM on the m4p files, or just use VLC which has the decryption built in.
Someone's written a perl interface here: http://hcsoftware.sourceforge.net/jason-rohrer/itms4all/


Apr 27, 2004
2:53 PM  
cottonbuds wrote:

Here's an interesting site that converted the Perl interface into PHP.
I think if he's using PHP it is going to be a lot easier for other web site to follow, since the Perl implemetation of itms-4-all is quite difficult because of the decryption library that needed to be installed the web site.


Link


Jul 7, 2004
4:36 PM  
Jon Lech Johansen wrote:

I've released FairKeys, a tool which lets you retrieve your FairPlay keys from Apple's servers.



x-apple-protocol-key 3:

98d1e22caa0d8abd65d143ad275a5ee7


 

Leave a comment





Waxy Links
Ads via The Deck
July 3, 2009
Kevin Kelly's Death Clock in Futurama — this might seem morbid to some, but I find it inspiring
July 2, 2009
Paul Lamere's Coolness Index — are female singers uncool?
Kickstarter's Big Day — 13 projects ended on July 1, raising an average 188% of their goals
Anil Dash on Malcolm Gladwell's criticism of Chris Anderson's Free — I read through Gladwell's New Yorker piece twice, and the arguments seem petty and off base
72-year-old retired boxer beats up knife-wielding knucklehead — the inane Facebook photos make this story even more delicious
July 1, 2009
Pez sues Burlingame Museum of Pez for copyright infringement — so disappointing
RIAA wins lawsuit against Usenet.com — judge rules Betamax case doesn't apply; every other Usenet provider is next
June 30, 2009
EveryBlock releases source code — it was a requirement of their funding from the Knight Foundation
Hype Machine detects cheating on charts, names names — one of the bands responds in the comments and gets schooled by Anthony (via)
Ze Frank on black, white, and shades of green — I'm loving this series
China bans gold farming, real-world sale of virtual goods — Eurogamer estimates 1 million Chinese gold farmers with worldwide trade worth more than US$10 billion annually (via)
The Pirate Bay sold to publicly-traded Swedish gaming company — Brokep's statement is delusional; being acquired will almost certainly kill the site
Michael Rubin's "Droidmaker" book now available for free download! — authoritative 518-page history of Lucasfilm, the creation of Pixar, and much more (via)
June 29, 2009
Jason Rohrer interviewed about "selling out" to make iPhone and ad games — he recently switched from free, open-source games; also, EA claims Spielberg's LMNO isn't cancelled
Nedroid's Cosby Experiment — view all 190 Cosbys
How the NYT kept their reporter's Taliban kidnapping off Wikipedia for seven months — they collaborated with Jimmy Wales directly to freeze the entry; NPR asks if it was ethical (via)
David Fincher may direct Facebook film, adapted by Aaron Sorkin — possibly starring Michael Cera or Shia LaBeouf as Zuckerberg; this sounds familiar (via)
Quarrygirl's undercover investigation of non-vegan ingredients used at L.A.-area vegan restaurants — outstanding blog reporting, with industrial food testing from 17 different restaurants and research into suppliers
June 28, 2009
James Barnett's oil paintings of landscapes from video games — looking at the paintings, I felt like I'd actually visited those locations in real-life (via)
WSJ interviews Brenda Brathwaite about "Train," a board game about the Holocaust — not all games need to be fun (via)
June 27, 2009
How Rob Manuel accidentally started a Michael Jackson moonwalk flashmob — I'm in London right now, and I've seen several massive vigils and tributes on the streets (via)
Top teams join forces to win Netflix Prize — check the leaderboard for the first score to break the 10% improvement threshold (via)
Wired on the success of Nike+ — backstory on how it works and the Hawthorne effect; simply measuring something can change its behavior (via)
June 26, 2009
Imeem to delete all user-added photos and videos, with five days' notice — with no way to back up videos at all (via)
Shnabubula's chiptune tribute to Michael Jackson — also: Virt's incredible VRC6 cover of Thriller
June 25, 2009
Metafilter user highlights 20 years of Elvis Costello's "adenoidal" voice in the NYT — Stephen Holden and Neil Strauss have a limited musical vocabulary (via)
June 24, 2009
Flashterm, free telnet client for the web — I love his gallery page, full of BBSes
Peter Nitsch's Flash port of AA-Lib, image-to-ASCII art library — the demo is fun; also: his real-time video conversion to ASCII (via)
Simon Willison's four lessons from the Guardian's journalism crowdsourcing experiment — they deliberately made it game-like to encourage participation (via)
June 22, 2009
Ze Frank's That Makes Me Think Of... — first of a series on Time.com, reminiscent of The Show (via)

Andy Baio lives here. Some rights reserved, for your pleasure.