r8
(Include basic test and decode hints for TV shows.) committed by joe.walton.gglcd
- Include basic test and decode hints for TV shows.
Include basic test and decode hints for TV shows.
Jul 11, 2009
issue 2
(8.2 of iTunes itl not readable) commented on by zzz20090...@pby.com
- Sorry for that first paragraph above - the poor writing reflects my level of
frustration at the time.
I've had two important realizations:
1) sean.patrick.obrien (2009-Apr-27) was right: you must inflate - not deflate;
2) The 8.x ITL I was using came from the "Previous iTunes Libraries" folder, where
damaged libraries (too) are kept - the library I was testing was probably corrupt.
Using inflate code and a copy of my current (working) iTunes Library, I was finally
successful.
Here's the code added to Hdfm.java:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;
...
// In Hdfm.read(...):
byte[] by_Decompressed; // Moved out of example for clarity
int i__Decompressed;
ByteArrayOutputStream os_Decompressed;
InflaterInputStream is_Inflater;
...
// Comment out the following line:
// return new Hdfm(version, unknown, headerRemainder, decrypted);
// Add these lines instead:
is_Inflater = new InflaterInputStream( new ByteArrayInputStream(
by_Decrypted ), new Inflater() );
os_Decompressed = new ByteArrayOutputStream( restOfFile.length );
by_Decompressed = new byte[restOfFile.length];
while( true )
{ i__Decompressed = is_Inflater.read( by_Decompressed, 0,
restOfFile.length );
if( i__Decompressed == -1 )
break;
os_Decompressed.write( by_Decompressed, 0, i__Decompressed );
}
by_Decompressed = os_Decompressed.toByteArray();
os_Decompressed.close();
is_Inflater.close();
return new Hdfm( version, unknown, headerRemainder, by_Decompressed );
// End modification
I borrowed the core of this code from devdaily.com; Java experts can probably do the
whole thing better (and use accepted formatting conventions). BTW, this fix applies
to the r7 code.
Sorry for that first paragraph above - the poor writing reflects my level of
frustration at the time.
I've had two important realizations:
1) sean.patrick.obrien (2009-Apr-27) was right: you must inflate - not deflate;
2) The 8.x ITL I was using came from the "Previous iTunes Libraries" folder, where
damaged libraries (too) are kept - the library I was testing was probably corrupt.
Using inflate code and a copy of my current (working) iTunes Library, I was finally
successful.
Here's the code added to Hdfm.java:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;
...
// In Hdfm.read(...):
byte[] by_Decompressed; // Moved out of example for clarity
int i__Decompressed;
ByteArrayOutputStream os_Decompressed;
InflaterInputStream is_Inflater;
...
// Comment out the following line:
// return new Hdfm(version, unknown, headerRemainder, decrypted);
// Add these lines instead:
is_Inflater = new InflaterInputStream( new ByteArrayInputStream(
by_Decrypted ), new Inflater() );
os_Decompressed = new ByteArrayOutputStream( restOfFile.length );
by_Decompressed = new byte[restOfFile.length];
while( true )
{ i__Decompressed = is_Inflater.read( by_Decompressed, 0,
restOfFile.length );
if( i__Decompressed == -1 )
break;
os_Decompressed.write( by_Decompressed, 0, i__Decompressed );
}
by_Decompressed = os_Decompressed.toByteArray();
os_Decompressed.close();
is_Inflater.close();
return new Hdfm( version, unknown, headerRemainder, by_Decompressed );
// End modification
I borrowed the core of this code from devdaily.com; Java experts can probably do the
whole thing better (and use accepted formatting conventions). BTW, this fix applies
to the r7 code.
Jul 10, 2009
issue 2
(8.2 of iTunes itl not readable) commented on by zzz20090...@pby.com
- If I run the code against an older (before 2009-Mar), I get the decrypted file;
anything later (incl. 8.2) gives me Chinese text.
"deflated" suggests compression; the latest version of the iTunes library should be
compressed after it's decrypted?!
I inserted this code after
decrypted = crypt(restOfFile, Cipher.DECRYPT_MODE);
in Hdfm.read(...):
java.util.zip.DeflaterInputStream is_Deflater = new java.util.zip.DeflaterInputStream
( new java.io.ByteArrayInputStream( decrypted ), new java.util.zip.Deflater() );
java.io.ByteArrayOutputStream os_ByteArray = new java.io.ByteArrayOutputStream(
restOfFile.length );
byte[] by_Compressed = new byte[restOfFile.length];
int i__Compressed;
while( true )
{ i__Compressed = is_Deflater.read( by_Compressed, 0, restOfFile.length );
if( i__Compressed == -1 )
break;
os_ByteArray.write( by_Compressed, 0, i__Compressed );
}
by_Compressed = os_ByteArray.toByteArray();
return new Hdfm( version, unknown, headerRemainder, by_Compressed );
I temporarily modified ParseLibrary.parse(...) to immediately return the Hdfm to
ParseLibrary.main(...) - since ParseLibrary.drain(...) was failing - and write
Hdfm.fileData (aka by_Compressed) to decrypted-file. With pre-8.? ITLs, I get an
obvious database; otherwise I get tons of Chinese characters.
If you have code that works, please post an example. It's agonizing being so close
yet so far (cannot revert database to 7.x). BTW, tried inflating too; got some kind
of header error.
Thanks.
If I run the code against an older (before 2009-Mar), I get the decrypted file;
anything later (incl. 8.2) gives me Chinese text.
"deflated" suggests compression; the latest version of the iTunes library should be
compressed after it's decrypted?!
I inserted this code after
decrypted = crypt(restOfFile, Cipher.DECRYPT_MODE);
in Hdfm.read(...):
java.util.zip.DeflaterInputStream is_Deflater = new java.util.zip.DeflaterInputStream
( new java.io.ByteArrayInputStream( decrypted ), new java.util.zip.Deflater() );
java.io.ByteArrayOutputStream os_ByteArray = new java.io.ByteArrayOutputStream(
restOfFile.length );
byte[] by_Compressed = new byte[restOfFile.length];
int i__Compressed;
while( true )
{ i__Compressed = is_Deflater.read( by_Compressed, 0, restOfFile.length );
if( i__Compressed == -1 )
break;
os_ByteArray.write( by_Compressed, 0, i__Compressed );
}
by_Compressed = os_ByteArray.toByteArray();
return new Hdfm( version, unknown, headerRemainder, by_Compressed );
I temporarily modified ParseLibrary.parse(...) to immediately return the Hdfm to
ParseLibrary.main(...) - since ParseLibrary.drain(...) was failing - and write
Hdfm.fileData (aka by_Compressed) to decrypted-file. With pre-8.? ITLs, I get an
obvious database; otherwise I get tons of Chinese characters.
If you have code that works, please post an example. It's agonizing being so close
yet so far (cannot revert database to 7.x). BTW, tried inflating too; got some kind
of header error.
Thanks.
Jun 30, 2009
issue 2
(8.2 of iTunes itl not readable) commented on by derelk
- The existing key still works fine for me in 8.2. As noted above, the data must be zlib deflated after it is
decrypted.
The existing key still works fine for me in 8.2. As noted above, the data must be zlib deflated after it is
decrypted.
issue 2
(8.2 of iTunes itl not readable) reported by chris.escsoft
- looks like they changed it again in .itl for iTunes 8.2 beta.
The file no longer will decompress.
looks like they changed it again in .itl for iTunes 8.2 beta.
The file no longer will decompress.
May 26, 2009
issue 1
(BHUILuilfghuila3 no longer works in latest iTunes) commented on by chris.escsoft
- looks like they changed it again in .itl for iTunes 8.2 beta.
The file no longer will decompress.
looks like they changed it again in .itl for iTunes 8.2 beta.
The file no longer will decompress.
May 02, 2009
issue 1
(BHUILuilfghuila3 no longer works in latest iTunes) commented on by chris.escsoft
- do you know how to uncompress this file? Would it be a standard zlib deflate?
do you know how to uncompress this file? Would it be a standard zlib deflate?
Apr 27, 2009
issue 1
(BHUILuilfghuila3 no longer works in latest iTunes) commented on by sean.patrick.obrien
- The key is still the same. The data is just zlib deflated. Passing the decrypted data through inflate will result in
usable data.
The key is still the same. The data is just zlib deflated. Passing the decrypted data through inflate will result in
usable data.
Mar 26, 2009
issue 1
(BHUILuilfghuila3 no longer works in latest iTunes) reported by chris.escsoft
- What steps will reproduce the problem?
1. key has changed with iTunes 8.1.x.x
2.
3.
What is the expected output? What do you see instead?
fails to decrypt
What version of the product are you using? On what operating system?
current
Please provide any additional information below.
needs new key
What steps will reproduce the problem?
1. key has changed with iTunes 8.1.x.x
2.
3.
What is the expected output? What do you see instead?
fails to decrypt
What version of the product are you using? On what operating system?
current
Please provide any additional information below.
needs new key
Older
Nov 09, 2008
Tools
(Brief information about the provided tools.) Wiki page edited by joe.walton.gglcd
Nov 05, 2008
Tools
(Brief information about the provided tools.) Wiki page added by joe.walton.gglcd
Nov 04, 2008
r4
(Initial import including tests and sample tools.
) committed by joe.walton.gglcd
- Initial import including tests and sample tools.