Monthly Archives: May 2005

AUDIOTrak OPTOPlay

I use an AUDIOTRAK OPTOPlay to output audio digitally to my DD/DTS receiver. More than 4 months ago I submitted a patch to the ALSA project. The patch fixes a bug in the usbaudio driver that prevents the use of sample rates other than the default with the OPTOPlay. The bug report has yet to even be reviewed. Compiling a custom kernel package just for this one small fix is a waste of time, so I usually end up just patching the binary.

objdump -h /lib/modules/*/kernel/sound/usb/snd-usb-audio.ko | grep " .text" | cut -d' ' -f19

objdump -d --prefix-addresses /lib/modules/*/kernel/sound/usb/snd-usb-audio.ko | grep "cmp    $0x530a92" | cut -d' ' -f1

The above commands will output one offset each. Add the two together and you have the patch offset. Unload the snd-usb-audio module. Open up snd-usb-audio.ko in a hex editor. Overwrite 12 bytes starting at the patch offset with 0×90s. Save and close. Load the module. You should now be able to use sample rates other than the default with the OPTOPlay.

FairPlay.no

What follows is a high-level description of FairPlay that I wrote for a Norwegian journalist:

Kryptoalgoritmen som benyttes i FairPlay heter AES. Nøklene som benyttes er 128-bit.

Når man kjøper en sang i iTunes Music Store fra en ny PC for første gang så genererer Music Store serverne en tilfeldig brukernøkkel. Når sangen er ferdig lastet ned så bruker iTunes denne brukernøkkelen til å legge DRM på filen. Det som skjer når iTunes ber om brukernavn og passord for å autorisere datamaskinen er at alle brukernøklene som tilhører kontoen din blir lastet ned og lagret på PC’en.

Under Windows lagres brukernøklene i en fil i mappen

C:Documents and SettingsAll UsersApplication DataApple ComputeriTunesSC Info

og under MacOS X i mappen

/Users/Shared/SC Info

Dette brukernøkkellageret er kryptert med en nøkkel som beregnes på bakgrunn av diverse informasjon (under Windows er dette BIOS versjon, navnet på CPU’en, Windows Produkt ID og serienummeret på C: harddisken).

Hvis du har en iPod så vil iTunes under synkronisering kopiere over brukernøkkellageret og kryptere det med en nøkkel som beregnes på bakgrunn av serienummeret til iPod’en.

Det eneste man trenger for å dekryptere en FairPlay fil er altså brukernøkkelen som ble brukt for å legge til FairPlay på filen.

For å skaffe seg brukernøklene sine kan man enten hente de ut fra brukernøkkellageret som ligger på PC’en eller iPod’en, eller man kan laste de ned fra Apple sine servere (FairKeys) på samme måte som iTunes gjør det når maskinen autoriseres.

Apple har aldri endret hvordan FairPlay legges til på filene. Det de derimot har endret flere ganger er hvordan brukernøkkellageret blir kryptert. De har også endret protokollen for kommunikasjon mot Music Store serverne i et forsøk på å stenge ute andre programmer enn iTunes fra å f.eks. laste ned brukernøklene.

Protokollen for kommunikasjon mot Music Store serverne er HTTP basert. Se disse to XML filene for en oversikt over kommandoer:

http://phobos.apple.com/storeBag.xml
http://phobos.apple.com/secureBag.xml

Det er samme protokollen som benyttes i SharpMusique for å kjøpe filer fra iTunes Music Store uten DRM.