リッピングのツール達

2020/9/23

ここではリッピングに必要な全盛期に活躍したツール達の説明をします。


エンジン

リッピングにとって重要なのはAACSの肝であるデバイス認証の突破ホスト認証の突破なので、それを司るaacskeysが最も重要なツールであることは言うまでもありません。

しかしaacskeysはタイトル・キーまで抽出して終わっていることは前にも説明しました。BDAVの場合はタイトル・キーをCPSKey.cfgというテキストファイルに書いて終了します。この時点ではまだ映像コンテンツはタイトル・キーによって暗号化されたままなのでこれを解く必要があります。

またBDAVの場合のホスト認証突破にはBinding Nonce取り出しのためにその位置情報(LBA)が必要なのですが、aacskeysはそれは自前で獲得できず外から指定されることを前提に作っているので、aacskeys実行の前段階でこれを取得しておく必要があります。但しNeo2011版aacskeysの2010年5月頃の版では自前で取ってきています。

更にaacskeysはホスト・キーが分からない時はホスト認証を自前で突破、つまりBinding Nonceを取得しないで、他ツールに任せ、これをパラメータで貰うことができるような作りになっています。これが所謂V3リップの時の動作ですが、その時に必要なツールなどもここで説明します。

  1. BackupBluRay.jar
    拡張子を見て想像がつく人がいるかもしれませんが、Javaで書かれたプログラムでCPSKey.cfgに書いてあるタイトル・キーを読んで映像コンテンツをデコードするコンソールアプリです。映像コンテンツ復号の本体プログラムでaacskeysに次いで重要なプログラムと言えます。
    尚、このツールはファイル名は一緒ですがBDMV用とBDAV用は別プログラムでした。CPSKey.cfgのフォーマットがBDMV用とBDAV用で異なっていたので別物を作っていました。同一のものでパラメータで切り替えればいいとだけだと思うのですが、そうしてなかったですね。
     
  2. bnlba
    その名の通り、Binding Nonce LBAを取得するWindowsコンソールアプリで、リッピングしたいBlu-rayメディアが入ったBlu-rayドライブのドライブレターをパラメータに指定して実行するとBinding Nonce LBAを標準出力する単純なプログラムです。
     
  3. IsoBuster
    こちらもほぼbnlbaと同じですが、私は使ったことがないです。
     
  4. cBackupBluRay
    基本的にはBackupBluRay.jarをC言語で書き直したWindowsコンソールアプリで、先頭の「c」はクローンという意味です。しかしデコードの際に後述するcciも除去するオプションがあるなど機能的にも多少の違いがあります。作者は日本人なので日本語の詳しいREADMEが付いてました。この作者、ハンドル名とかなかったと思いますが、2chにもちょくちょく登場しました。
     
  5. dumpbn
    PowerDVDなどのBlu-ray再生アプリからBinding Nonceを横取りするWindowsコンソールアプリです。

フロントエンド・ツール

前述のエンジンとなる各ツールを見てもらうと分かる通り、全てコンソールアプリケーションです。そのためコマンドプロンプトでそれぞれのツールをコマンド実行しないといけません。手順としては以下のような感じです。

まずbnlbaIsoBusterを実行。取得したBinding Nonce LBAを今度はaacskeysのパラメータにして、更にドライブレターも指定して実行。次にBackupBluRay.jarなどをやはり必要なパラメータを指定して実行します。そんなに沢山のコマンドを打たないといけない訳ではありませんが、こうしたコマンド実行は沢山キーボードで打鍵しないといけない訳でUNIX使いMS-DOSの頃からパソコンをやっている人なら抵抗ないですが、通常のWindows使いには馴染みのない作業です。

例え馴染みのある人でも各アプリの仕様(どんなパラメータをどういう順序で指定するのかなど)や実行順序も覚えてないといけないので、これは何気に煩わしかったです。

そこでフロントエンドとしてこれらの一連の処理を簡易に実行できるようバッチファイルが用意されていました。

[フロントエンドとしてのバッチファイル例]

@echo off
rem
rem This is the BDAV version.
rem If you don't know the Binding Nonce LBA,
rem get "IsoBuster 2.1" and put the LBA of "Unit_Key_RW.inf".
rem

setlocal

:inp_drive
echo Input Blu-ray Drive (ex.f[ENTER])
if defined BDAV_DRIVE set BDAV_DRIVE=
set /p BDAV_DRIVE=
if /i "%BDAV_DRIVE%"=="" goto inp_drive

:inp_dir
echo Input Output Stream Directory (ex.c:\mydir[ENTER])
if defined BDAV_DIR set BDAV_DIR=
set /p BDAV_DIR=
if /i "%BDAV_DIR%"=="" goto inp_dir

:inp_bnlba
echo Input Binding Nonce LBA Extend(ex.16800[ENTER])
if defined BDAV_BNLBA set BDAV_BNLBA=
set /p BDAV_BNLBA=
if /i "%BDAV_BNLBA%"=="" goto inp_bnlba

if exist CPSKey.cfg del CPSKey.cfg
@echo on
aacskeys %BDAV_DRIVE% w %BDAV_BNLBA%
if exist CPSKey.cfg java -jar BackupBluRay.jar %BDAV_DRIVE%: %BDAV_DIR%

@echo off
echo Input ENTER key for closing DOS Window.
set /p BDAV_END

endlocal

このバッチファイル例だとIsoBusterは事前に実行してBinding Nonce LBAを取得しておく必要がありますが、大分楽になりますよね。このようなバッチファイルと更には必要なプロセス・キーを書いたファイル、及び上記エンジンとなる各ツールのセットがBackupBDAVとして用意されてました。

それでも結局コマンドプロンプトを起動してこのバッチファイルを実行し、ドライブレターや出力フォルダなどを一々手で打鍵しないといけない(できるだけコピー&ペーストはしますが)ので、やはり既にGUIに慣れてしまった多くのWindows使いには煩わしかったです。そこでこの一連の処理を完全GUI化したアプリが開発されていました。私が愛用していたのは以下のBDAV BackupGUI Betaというアプリです。ご覧のように完全日本語対応というか、逆に日本語版しかないので作者不明ですが日本人です。

[BDAV BackupGUI Beta]

名前の通りベータ版のままでしたが、全く問題なく使えました。各種エンジンアプリなど必要な部品を同一フォルダに置いておくだけで、利用するエンジンアプリの種類やそのアプリに対するオプションパラメータの指定もラジオボタン一つでできますし、各種フォルダ指定も通常のWindowsアプリケーションのようにマウスでポンポンと選べます。そして最後は「処理開始」ボタンをクリックするだけです。

すると以下のように呼び出した外部コンソールアプリの標準出力も右の画面内に表示されるし、進行状況もプログレスバーで出ます。後は処理が終わるのを待つだけ。

[BDAV BackupGUI Betaの実行中]

非常に安定もしていて、このアプリ起因でリッピングが失敗したことは一度もありませんでした。

尚、タイトル名が表示されていますが、これには別のbdavinfoというアプリが必要でした。

 
似たようなツールとしてGuiForBackupBDAVforV1というアプリもありました。こちらも作者は日本人です。しかしこちらは呼び出したコンソールアプリの標準出力が別途コマンドプロンプトが立ち上がって表示される、つまり自分の画面内に表示できないのが全然いけてなかったし、それと関係してか、呼び出したコンソールアプリの出力結果ファイル中間処理用のバッチファイルがカレントフォルダに残ったままだったのも、今一いけてなかったですね。しかしもっと致命的だったのは進行状況が分かるプログレスバーが進まないという残念なバグが解消されていませんでした。READMEにはWindows7で当該問題を解消したと書いてありますが、Windows10でまた出てしまったのでしょうか。

[GuiForBackupBDAVforV1]

また上記いずれのツールもaacskeysに関してはNeo2011版のインターフェースを前提に作られていたので、KenD00版だと動きませんでした。どちらも既に開発が停止していた上、ソースが公開されてなかったので治しようがなかったため、ソース公開されているaacskeys側を直す他なかったのは前述している通りです。


BDMVの場合

ここまで説明してきたエンジンツールの多く、更にフロントエンド・ツールは全てBDAV用のものですが、aacskeysもエンジンである前述のBackupBluRay.jarなどもBDMVとBDAVの両対応との説明もしてきてますので勿論BDMV用のフロントエンド・ツールもあります。

まずはBDAVと同じくバッチファイルがあります。

[BDMV用のバッチファイル例]
@echo off
java -server -jar BackupBluRay.jar %1 %2

ただ見ての通りBDAVのものと比べると極めて単純ですよね。BackupBluRay.jarを実行しているだけではないかと思われるでしょう。aacskeysを実行しないのか。aacskeysを実行しないとBackupBluRay.jarのインプットであるCPSKey.cfgが吐かれないので動きません。

ではどうやってやるのかと言うと、まずaacskeysをsオプションまたはvオプションで実行します。すると各種キーが表示されるので、その中からDecrypted Title KeyまたはDecrypted Unit Keyを特定のフォーマットでCPSKey.cfgに書き込んでから、上記のバッチファイルを実行します。要はCPSKey.cfgを自分で編集して作りなさいという話ですが、ちょっと面倒ですよね。

なぜaacskeysにBDMVフォーマットのCPSKey.cfgを吐き出す機能がないのか不明ですが、とにかくaacskeysがこのような仕様なので一連の処理をバッチ化することができない訳です。もしかすると後述するGUIツールが便利だったので、むしろそちらに合わせる形でaacskeysの仕様がこうなっているとも言えると思います。

その便利なGUIツールがSlySoft無償提供していたBlu-ray Disc Ripper for .NETというツールです。

[SlySoftのBlu-ray Disc Ripper 1.2 for .NET]

SlySoftというとAnyDVD HDという有料リッピングツールを作っていたベンダーですが、そこがなぜこのようなツールを無償提供していたのかは不明です。

.NETとあるので、.NET Frameworkのインストールなどは必要ですが、VCなどのランタイムライブラリが必要なツールがあるのと同じようなものです。BDドライブのドライブレターと出力先フォルダを指定して後はやはりDecrypted Title KeyまたはDecrypted Unit Keyを指定するだけ実行します。

[Blu-ray Disc Ripper 1.2 for .NETの実行状況]

GUIツールらしくプログレスバーも出て、とても使いやすいです。Decrypted Title Keyなどを指定する必要があるので、予めaacskeysを実行して取得しておく手間はあるのですが、逆にそれだけと言えばそれだけです。このツールにCPSKey.cfgを読む機能がないので、aacskeysがCPSKey.cfgを吐いても意味がないのため、敢えて作らなかったとも言えるかもしれません。

また前述のBDAV BackupGUI Betaは一発実行で楽だと言いましたが、やってくれるのは動画ファイルの暗号解除までなのでBDデータとして必要な他のデータPLAYLISTフォルダCLIPINFフォルダなどは自分でコピーする必要があります。まあコピればいいだけの話ではありますが、手間がかかることには変わりありません。しかしこのツールはそれもやってくれます。

従ってこれを実行し終えると出力先にできたデータをそのままBDに焼くだけで、リッピングされたBDMVディスクが完成してしまいます。


リッピング後のツール

リッピングは映像コンテンツの暗号が解除され、プレーンなデータになれば基本的には完了です。しかしBDAVの場合は中にはこのデータをまたレコーダに戻して再生したいと思う人も非常に多いでしょう。その場合実はまだやることがあります。

映像コンテンツには暗号化とは少し違う概念ですが、コピー禁止符号というものが埋め込まれているのが普通です。CCI(Copy Control Information)と呼ばれるものですが、これを除去しないとレコーダなどでコピーができません。コピー禁止符号を検知したといって即停止してしまいます。

このCCIを除去するツールとして使われていたのがcciconvというコンソールアプリケーションです。これのGUI版であるcciconvGUIというアプリもありました。画面の作り(使う部品の傾向)からして前述のBDAV BackupGUI Betaと同じ作者と思われます。

また前述のcBackupBluRayなどはオプションでこのcciを除去しながら暗号解除をやってくれます。

またパナソニックのBlu-rayレコーダDIGAは独自のコピー禁止情報(フラグ)を持っていて、これを解除しないとやはりコピーができませんでした。この情報はCCIのように映像コンテンツ(m2tsファイル)に埋め込まれていたものではなく、別のプレイリストファイル(拡張子が.rpls)に書かれていました。

このプレイリストファイルの特定の場所(フラグ)にある数値が書かれていて、それを変更すればOKでした。その値というのが通常はヘキサで22だったのですが、これを00にすると解除されました。そのためこれを実施するツールの名がまさにrpls22clrというコンソールアプリケーションでした。まんまですよね。これもGUI版であるrpls22clrGUIというツールもありました。いずれも作者は日本人です。

[rpls22clrGUI]

当初はプレイリストファイルの中の正確なフラグ位置が分からなかったので、ヘキサ0x22の場所を探し、当然他にもヘキサ0x22にたまたまなっている箇所もあり得るので、前後の特定情報から位置を予測して特定しクリアしていました。しかし実は0x22以外の値があることも分かりました。その場合フラグ位置を特定するのが難しくなったのですが、逆にその頃プレイリストファイルの構造からフラグ位置を正確に特定する方法も分かって、その値を単純に0x00にするのではなく、その値と0x22との排他論理和(XOR)にすればいいことも判明しました。

最早0x22をクリアするといった単純な処理ではなくなったのですが、依然ツール名はrpls22clrのままでした。因みに上記改良がなされたのはrpls22clr 1.40で、GUI版は最初から入ってます。


 
Blu-rayの暗号システムのトップページへもどる
デジタル家電のトップページへもどる
ホームページへもどる
inserted by FC2 system