Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
6th February 2009, 21:22 | #661 | Link | |
Registered User
Join Date: Sep 2008
Posts: 189
|
Quote:
Code:
http://www.boundlesssupremacy.com/Cappy/getlibs/getlibs-all.deb getlibs -w http://ftp.de.debian.org/debian/pool/main/q/qt-x11-free/libqt3-mt_3.3.8b-5+b1_i386.deb Anyway i recently switched from Java SE to ME and compiled the compact virtual machine (cvm) with debug flag so it's pretty verbose if something goes wrong. You can grab my binary snapshot from here. Run it with (adjust the paths): Code:
./bin/cvm ${HOME}/bdplus/trunk/bdj/jni/libbdjinterface.so If you want to compile it you will need the phoneme advanced mr2 snapshot. I had to merge the bdj.c with the phoneme source before compiling the cvm. Let me know if you need to know more details. Last edited by loo3aem3ON; 6th February 2009 at 21:34. |
|
7th February 2009, 20:36 | #662 | Link |
Registered User
Join Date: Jan 2007
Location: Internet
Posts: 378
|
I'm running this on a 32 bit Ubuntu, ldd reports no missing libs. I've written a small java app which just loads the qtawt library and this works, don't know why it doesn't work from bdj.
Anyway, i've tried your cvm snapshot and had more success, qtawt is now loaded and i get a black window. During startup i got this error Code:
"/home/<scrubbed>/bdj-cvm/lib/basis.jar" is not a valid classpath zip file or directory. The cvm runs but fails to load any BD-J applet from the disc. The path to my drive matches the hardcoded path so this isn't the problem. I can't remember you ever mentioned which disc you are using, i assume we are talking about X-Files here because your posted 77770.jar matches almost the one from my disc (but there are differences, i think because i don't have your version of the movie and i remember Anydvd was updated to support a different version of X-Files), but i don't have 99900.jar (and no directory with that name) on my disc. These are the error messages from loading the 99900.jar file, loading the 77770.jar produces the same ones: Code:
[W] [BDJAppManager.startTitle()] startTitle(65535) [W] [W] [BDJAppManager.setTitleSelectState()] set current title context state: 3, previos state: 1 [W] called Java.com.cl.bdj.helper.AppsDatabaseHelper.pGetAppControlCode [W] java.util.zip.ZipException: No such file or directory [W] [W] at java.util.zip.ZipFile.open(Ljava/lang/String;IJ)J(Native Method) [W] [W] at java.util.zip.ZipFile.<init>(Ljava/io/File;I)V(ZipFile.java:146) [W] [W] at java.util.jar.JarFile.<init>(Ljava/io/File;ZI)V(JarFile.java:138) [W] [W] at java.util.jar.JarFile.<init>(Ljava/lang/String;Z)V(JarFile.java:90) [W] [W] at com.cl.bdj.jar.JarAuthenication.extractJar(Ljava/lang/String;Ljava/lang/String;Z)V(Unknown Source) [W] [W] at com.cl.bdj.appmanager.BDJAppProxy.securityCheckProcess(Ljava/lang/String;Ljava/lang/String;)V(Unknown Source) [W] [W] at com.cl.bdj.appmanager.BDJAppProxy.loadResources()V(Unknown Source) [W] [W] at com.cl.bdj.appmanager.BDJAppProxy.startBDJApp([Ljava/lang/String;)V(Unknown Source) [W] [W] at com.cl.bdj.appmanager.BDJAppManager.runAutoStartApps()V(Unknown Source) [W] [W] at com.cl.bdj.appmanager.BDJAppManager.startTitle(I)V(Unknown Source) [W] [W] at com.cl.bdj.appmanager.BDJAppManager.initTitle(Z)V(Unknown Source) [W] [W] at com.cl.bdj.main.BDJCFacade.initTitle(I)V(Unknown Source) [W] [W] at com.cl.bdj.main.BDJCFacade.executeCommand(I[Ljava/lang/Object;)I(Unknown Source) [W] [W] [BDJAppProxy.loadResources()] Start printing class path for application:OID(2147443820), AID(16384) [W] [W] [BDJAppProxy.loadResources()] ClassPath<0>:file:///DOCR/signed/99900/ [W] called Java.com.cl.bdj.helper.AppsDatabaseHelper.pGetAppBaseDirectory -> OrgID = 7FFF646C, AppID = 4000 called Java.com.cl.bdj.helper.AppsDatabaseHelper.pGetAppClasspathExt -> OrgID = 7FFF646C, AppID = 4000 [W] [BDJAppUtil.getAppClasspath()] /DOCR/signed/ [W] [W] [BDJAppUtil.getAppClasspath()] 99900 [W] [W] [BDJAppUtil.getAppClasspath()] [W] [W] [BDJPrimitiveCommand.doLoadXlet()] load BD-J app : com.bydeluxe.fox.FirstPlayXlet [W] called com.cl.bdj.helper.BDJTitleInfoHelper.pGetCurrentDiscIdFromC called Java.com.cl.bdj.helper.CUtil.pSetJITOffSwitch -> NOT IMPLEMENTED! [W] [BDJClassLoader.findClass()] Can't find class:com.bydeluxe.fox.FirstPlayXlet, start printing class path ... [W] [W] [BDJClassLoader.findClass()] ClassPath<0>:file:/DOCR/signed/99900/ [W] [W] [BDJAppUtil.createXletInstance()] [ERROR!]in createXletInstance(), caught exception ClassNotFoundException [W] [W] java.lang.ClassNotFoundException: com.bydeluxe.fox.FirstPlayXlet [W] [W] at java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class;(URLClassLoader.java:234) [W] [W] at com.cl.bdj.appmanager.BDJClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class;(Unknown Source) [W] [W] at java.lang.ClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;(ClassLoader.java:349) [W] [W] at java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class;(ClassLoader.java:291) [W] [W] at com.cl.bdj.appmanager.BDJAppUtil.createXletInstance(Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Object;(Unknown Source) [W] [W] at com.cl.bdj.appmanager.BDJPrimitiveCommand.doLoadXlet(Lcom/cl/bdj/appmanager/XletRunnerContext;)Z(Unknown Source) [W] [W] at com.cl.bdj.appmanager.StartXletCommand.execute()V(Unknown Source) [W] [W] at com.cl.bdj.event.BDJCommandRunner.run()V(Unknown Source) [W] [W] at java.lang.Thread.run()V(Thread.java:712) [W] [W] at java.lang.Thread.startup(Z)V(Thread.java:782) [W] [W] [BDJPrimitiveCommand.doLoadXlet()] load BD-J app ended : com.bydeluxe.fox.FirstPlayXlet [W] [W] [BDJAppProxy.stateTransition()] state change failed : BDJAppProxy (2147443820, 16384, com.bydeluxe.fox.FirstPlayXlet), 2 -> 0 [W] |
7th February 2009, 23:42 | #663 | Link | ||
Registered User
Join Date: Sep 2008
Posts: 189
|
It doesn't load the jar files from the disc. Instead you have to copy them to "/tmp/BDJRoot/" (both the 77770.jar and 99900.jar). That directory is the local application cache which can change over time when using BD-Live. It will extract a part of the jar archives inside the "DOCR/signed/" subdirectory. I don't fully understand this yet.
Quote:
Quote:
A good way to proceed is to edit the com.cl.bdj.helper.* classes (inside the bdj.jar) to make them print out a console message of the actual value/string they got from the native methods they called. For example: Code:
invokestatic com/cl/bdj/util/BDJTrace/info(Ljava/lang/String;)V The additional debug output i get when using the modified bdj.jar helps me to correct the bugs in the native interface. My source code C files are named after the helper classes as you might have noticed. |
||
14th February 2009, 17:44 | #664 | Link |
Registered User
Join Date: Sep 2008
Posts: 189
|
The classes in the "btclasses.zip" archive have been merged into the cvm binary (ROMization) to boost performance. That causes some problems because some of these classes have been customized by the vendor of my player. For example a "extractJar" method has been added to the java.util.jar.JarFile which is therefor missing in the cvm i compiled. I have several options in this case and will try them all.
I also managed to patch all methods which call native code and return boolean, int or string. I also succeeded in attaching a debugger (jdb) to the cvm to monitor the BD-J implementation. It's quite complex. Progress is slow because i'm working alone on this. So be patient. |
15th February 2009, 19:58 | #665 | Link |
Registered User
Join Date: Sep 2008
Posts: 189
|
I finally got the BD+ handshake application loaded and running:
Code:
[BDJPrimitiveCommand.doLoadXlet()] load BD-J app : com.macrovision.bdplus.Handshake [...] [BDJPrimitiveCommand.doLoadXlet()] load BD-J app ended : com.macrovision.bdplus.Handshake [BDJPrimitiveCommand.doInitXlet()] init BD-J app : com.macrovision.bdplus.Handshake [BDJPrimitiveCommand.doInitXlet()] init BD-J app ended: com.macrovision.bdplus.Handshake [BDJPrimitiveCommand.doStartXlet()] start BD-J app : com.macrovision.bdplus.Handshake [...] [BDJPrimitiveCommand.doStartXlet()] start BD-J app ended: com.macrovision.bdplus.Handshake [BDJAppProxy.stateTransition()] state change succeeded : BDJAppProxy (2147443820, 30583, com.macrovision.bdplus.Handshake), 2 -> 0 [...] called Java.com.cl.bdj.helper.BDJVFSHelper.RegisterAccessHelper.pSetPSR(104, 0) -> NOT IMPLEMENTED! called Java.com.cl.bdj.helper.BDJVFSHelper.RegisterAccessHelper.pSetPSR(103, F1000000) -> NOT IMPLEMENTED! called Java.com.cl.bdj.helper.BDJVFSHelper.RegisterAccessHelper.pTriggerPSR103change -> NOT IMPLEMENTED! You can download the binary snapshot here. Steps to reproduce: 1. mount the disc at "/media/cdrom/" (certificate will be verified) 1. place the 77770.jar and the 99900.jar in the directory "/tmp/BDJRoot/" (see posting #645) 2. create a directory "/DOCR/" (root directory -> i couldn't move it into the "/tmp/" folder) 3. make sure both directories have user write permission (stuff will be written into both directories by the java code) 4. run: "./bin/cvm ${HOME}/bdplus/trunk/bdj/jni/libbdjinterface.so" <-- adapt to your directory structure Edit: the "bdj.c" in the archive is slightly different from the version i used to create the cvm (debugging with jdb is currently disabled). Last edited by loo3aem3ON; 15th February 2009 at 20:07. |
16th February 2009, 02:06 | #666 | Link |
Registered User
Join Date: Sep 2008
Posts: 189
|
After the content code wrote PSR102 the player executes command 8 (native code calls java method "executeCommand") which creates a BDPlusStatusEvent object. The constructor gets the contents of PSR102 as parameter. The status event object is then passed to the application. The "pTriggerPSR103change" call might cause BD+ event#0210.
I'll run some tests to see if the handshake works properly. If successful i can start merging this into libbluray. Last edited by loo3aem3ON; 16th February 2009 at 02:11. |
18th February 2009, 01:51 | #667 | Link | |
Registered User
Join Date: Sep 2008
Posts: 189
|
It seems to be working. Below are the relevant sections of the console output. You should compare this with posting #642 (look for the correct return "BC79595F 97F05643 07A0ABF2 CC10F7C5")
Quote:
Btw the handshake application needs additional jar files but these are fetched automatically from the disc after i changed the VFS root to /media/cdrom. Last edited by loo3aem3ON; 18th February 2009 at 01:54. |
|
18th February 2009, 13:35 | #668 | Link |
Registered User
Join Date: Jun 2005
Posts: 2
|
You're doing an excellent job loo3aem3ON! And I would gladly help. But I'm afraid I don't know much about Java, and pretty much anything else discussed in this thread.
Just wanted to give you an encouraging word, and keep up the excellent work! |
18th February 2009, 14:30 | #669 | Link |
Registered User
Join Date: Sep 2008
Posts: 189
|
Thanks. You can help by grabbing the latest binary snapshot and playing around with it. Then report the problems you encounter.
About 80% of BD-J is implemented in java and this part can be copied from any Blu-Ray player without modifications. The rest are native functions which have to be implemented in C/C++ or whatever. Of particular interest are the functions which are used to indirectly talk with the BD+ content code via the player status registers (PSR) 102-104. I don't know how difficult it is to get the menus working. A black window pops up in the top left corner of the screen but it isn't filled with contents because that's being done by the second application which i haven't yet tried to start. The primary goal was to get the first application (BD+ handshake) running. |
18th February 2009, 21:20 | #670 | Link | |
Guest
Posts: n/a
|
Quote:
Keep up the good work guys! Slice P.S. something that might be nice to get more people testing this stuff is to make it easily and openly available, maybe precompiled and available for download from a repository for Linux. Also, basic step by step instructions on how to use these tools is not readily available so that might be something to consider. P.P.S. I have not followed the progress of AACS very closely, has it been completely broken yet or are we still stuck only being able to decrypt titles that feature MKBv7 or earlier? |
|
18th February 2009, 22:18 | #671 | Link |
Registered User
Join Date: Jun 2008
Posts: 117
|
@ Slice:
as of now we (Linux users) are only able to decrypt titles that are MKBv8 and earlier. We don't have processing keys for MKBv's beyond that. Although Mike Chen of the MakeMKV project claims that they have keys that may be able to go as far as MKBv11: http://forum.doom9.org/showthread.ph...79#post1242679 but he hasn't yet responded to a request to share these keys with KenD00 (for DumpHD). [edit: make that MKBv12: http://forum.doom9.org/showthread.ph...98#post1248998] Last edited by kkloster21; 18th February 2009 at 22:23. |
20th February 2009, 11:49 | #674 | Link |
Registered User
Join Date: Oct 2008
Posts: 1
|
Hi,
where I can find the source code of this project. Maybe you could host this project on https://launchpad.net/ ? There you can make an bazaar repo so others could hack on the code too!? I could help you to register and host this project on Launchpad. I can also provide you help for Debian/Ubuntu packaging. I would be glad to helping this project |
20th February 2009, 13:02 | #675 | Link | ||||||
Registered User
Join Date: Sep 2008
Posts: 189
|
I don't think "bypassing" BD+ is possible. We are doing exactly what all the licensed Blu-Ray players are doing.
Quote:
Quote:
Quote:
Quote:
Well maybe by the time AES becomes insecure we will all have DRM modules implanted in our brains. Quote:
It's currently hosted at assembla: https://trac.assembla.com/bdplus/ Quote:
AACS needs to added to libbluray (currently BD+ only). The maintainer (Accident) is busy at the moment. You could help by finding volunteers to help with the project. I need to explain and simplify the environment for BD-J so more people are willing to experiment. The directory structure needs to be explained (eg. BUDA = "Binding Unit Data Area" etc). Furthermore some of the native functions return data specific to the movie "The Day The Earth Stood Still". |
||||||
21st February 2009, 21:43 | #676 | Link |
Registered User
Join Date: Sep 2008
Posts: 189
|
The BD-J platform development project is now hosted at https://launchpad.net/bdj.
The method "readBDJO" (trunk/src/bdjo/BDJOReader.cpp) and its dependencies need to be ported from java to C++. I've already renamed all the file extensions. The conversion from and to XML is irrelevant. Have a look at the method names in "AppsDatabaseHelper.c" and you will see why. The native code first needs to parse the index.bdmv to obtain the FirstPlaybackmobjidref (name of a BD-J object in the BDJO/ directory) and then parse the identified *.bdjo file. At the moment the data from the 07777.bdjo is hardcoded in the methods of "AppsDatabaseHelper.c" so other applications from other Blu-Rays won't work. Furthermore the AppCacheInfo section of this BD-J object contains a list files which have to be loaded into the local cache (which i called "/tmp/BDJRoot/") for fast access. Currently these files have to be copied manually. So you see how important it is to read these BD-J objects properly. Reading the index.bdmv is not a problem. |
22nd February 2009, 06:55 | #677 | Link | |
Registered User
Join Date: Aug 2002
Posts: 111
|
Quote:
Related to libaacs, and libbluray, I was thinking of keeping the libraries separated, but write some example sources that uses both libraries, and massage them to play together nicely. I may end up checking in libaacs since its maintainer appears to be MIA. I have version 0.05. |
|
22nd February 2009, 11:46 | #678 | Link |
Registered User
Join Date: Sep 2008
Posts: 189
|
That's the latest binary/build snapshot containing the libraries missing from the launchpad repository: Download.
Start it simply with "sh run.sh". The disc has to be mounted at "/media/cdrom". It probably won't run far so don't be disappointed (see my previous posting for an explanation). I'm working on it. @Accident: Focus on libaacs then and maybe rename libbluray to libbdplus. Last edited by loo3aem3ON; 22nd February 2009 at 11:55. |
22nd February 2009, 19:10 | #680 | Link | |
Registered User
Join Date: Sep 2008
Posts: 189
|
Quote:
Code:
CERTIFICATE/app.discroot.crt CERTIFICATE/bu.discroot.crt BDMV/index.bdmv BDMV/BDJO/* BDMV/JAR/* See if you can find these files somewhere. Otherwise i could send you those from my disc. |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|