turtlechanのブログ

無知の私がLinuxをいじりながら書いていくブログ

【Linux】Calibre でkindle本の DRM を解除する方法メモ

LinuxDRM を解除しようとしたら設定に少し手間が掛かった。
再設定するころには忘れていると思うので、備忘録として記事に残すことにした。

はじめに

Windows では問題なく DRM 解除ができていた。
Linux では Amazon Kindle をwine上で動かしているので Calibreプラグイン DeDRM_plugin が「kindlekey1.k4i」を上手く取得できないのが問題の模様。

 

結論を言うと Amazon Kindle をインストールしているwineに Python2 をインストールして DeDRM_tools_x.x.x.zipに含まれている「kindlekey.pyw」をwine上で実行すればいい。
そして生成された kindlekey1.k4i を DeDRM_plugin に読み込ませる。

DRM を解除する

LinuxCalibre, DeDRM_plugin、 wine上に Amazon Kindle がすでにインストールされていることを想定して書いています。まだの場合は下のおまけの部分を読んでください。

wine上に Python2 をインストール

インストーラーのダウンロード

python2 のインストーラーをダウンロードします。

※私は python 2.7.15 をインストールしていますが、2.7 なら他のでも大丈夫だと思います。

Download Python | Python.org
URL: https://www.python.org/downloads/

上記のサイトに飛んで、Python 2.7.15 の Download をクリック。

Download Python の画面01

Files の「Windows x86 MSI installer」をクリック。

Download Python の画面02

ダウンロードされますので、ホームディレクトリ(~)にでも保存して下さい。

インストール

wineで python2 のインストーラーを起動して、wine上にインストールします。

以下のコマンドを実行。

~$ wine msiexec /i python-2.7.15.msi

インストーラーが立ち上がるので、特に何も変更せずインストールします。問題なくインストールが完了するはず。

kindlekey1.k4i の生成

DRM 解除のための鍵となるファイル kindlekey1.k4i を生成します。

DeDRM_tools のダウンロード

DeDRM_tools に含まれる python スクリプトを使用するので、以下のサイトからダウンロードします。

Releases · apprenticeharper/DeDRM_tools · GitHub
URL: https://github.com/apprenticeharper/DeDRM_tools/releases

バージョンは最新版で問題ないと思います。ホームディレクトリ(~)にでも保存してください。

DeDRM_tools · GitHub 画面01

kindlekey1.k4i を生成

以下のコマンドで、ダウンロードしたファイルを解凍、
今回必要なファイルは「kindlekey.pyw」です。それだけを解凍してます。

~$ unzip -j ~/DeDRM_tools_6.6.3.zip "Other_Tools/DRM_Key_Scripts/Kindle_for_Mac_and_PC/kindlekey.pyw"

※ダウンロードしたzipファイルはホームディレクトリ(~)に保存したと仮定しています。

wine上の Python2 で「kindlekey.pyw」を実行します。
次のコマンド。

~$ wine python ~/kindlekey.pyw

成功すると以下のウィンドウが出ます。

kindlekey.pyw の成功画面

ホームディレクトリ内に「kindlekey1.k4i」が出来ているはずです、確認してみてください。

CalibreDRM 解除

Calibre に上記で生成した「kindlekey1.k4i」を読み込ませ、DRM を解除できるようにします。

Calibre に kindlekey1.k4i を読み込ませる

Calibre を起動して「設定」をクリック。

calibre の画面01

設定画面が出てくるので、高度な設定の「プラグイン」をクリック。

calibre の画面02

プラグイン画面が出てくる。
DeDRM を選択して「プラグインをカスタマイズ」をクリック。

calibre の画面03

DeDRMの設定画面、「Kindle for Mac/PC ebooks」をクリック。

calibre の画面04

「Import Existing Keyfiles」をクリック。
ファイラーが起動するので、上記で生成した「kindlekey1.k4i」を選択します。

calibre の画面05

先程まで空白だったところに「kindlekey1」が追加されているはず。

calibre の画面06

あとは閉じてください。以上で「kindlekey1.k4i」の読み込みは完了です。次回から CalibreKindle本 を開くと自動で DRM が解除されるようになります。
また、DeDRM に kindlekey1.k4i を読み込ませたら、kindlekey1.k4iファイル はもう必要ないので削除して問題ありません。

ちなみに、「WINEPREFIX:」のところに正しいwineのパスを書いて追加ボタン(+)をクリックしても kindlekey1.k4i は生成できませんでした。あとwineのディレクトリ構造が変になったりするので追加ボタン(+)はクリックしない方がいいと思います。

DRM を解除してみる

wine上の Kindle for PC でダウンロードしたファイルを Calibre で開けば自動で DRM を解除してくれます。
フォーマットが「AZW3」になっていれば解除が成功しています。

calibre の画面07

calibre の画面08

おまけ

wineのインストール

wineにもバージョンは色々あるが私は気にしない。

Debian

~$ sudo apt-get install wine

RHEL系は少々面倒だった気がするので割愛。

Amazon Kindle のインストール

wine上で動かすには 1.17.x が安定していたと思う。この記事を書いている時点では問題なく同期可能。
どこからかインストーラーをダウンロードして来てください。一応現時点でダウンロードできる URL を書いておきますが、問題が起きても自己責任でお願いします。

Kindle for PC 1.17.44183
URL: http://www.mediafire.com/file/ku208jm2ccqvn1w/KindleForPC-installer-1.17.44183.exe/file

wineでインストーラーを起動してインストール。

~$ wine KindleForPC-installer-1.17.44183.exe

※ winecfgでwindowsバージョンをWindows 7 に設定しておいて下さい。

Calibre のインストール

Debian

~$ sudo apt-get install calibre

RHEL系は割愛。

DeDRM_plugin のインストール

以下から DeDRM_tools_x.x.x.zip をダウンロードします。バージョンは最新版でいいんでね?

Releases · apprenticeharper/DeDRM_tools · GitHub
URL: https://github.com/apprenticeharper/DeDRM_tools/releases

ダウンロードしたファイルを解凍しておきます。

 

Calibre を起動して
設定→プラグイン→ファイルからプラグインを読み込む
DeDRM_calibre_plugin フォルダ内の「DeDRM_plugin.zip」を選択
Calibre を再起動で完了です。

おわりに

wine上に pycrypto もインストールしているのを見るが、私の場合はインストールせずにできた。この辺はよく分かってないです。

wine上で安定して動く Kindle for PC 1.17 がいつまでサポートされるか分からない所が不安ですね。

何かの参考になれば幸いです。

追記

Kindle for PC が接続できなくなった

Debian 9 で最近dist-upgradeしたら Kindle for PC がネットに接続できない現象が発生しました。
「接続できません。ネットワークの設定とプロキシの構成を確認してください」というダイアログが表示されます。Debian 10 でも同様の症状が出てます。
私の技量では原因を見つけることはできませんでした。リリースノートを見て削除されたパッケージをインストールすれば直るかもしれないですが、面倒なので私は試していません。
とりあえず私の環境では Debian 9.8 に戻して正常に接続できることを確認できました(Wine 1.8.7-2)。また、Manjaro Linux では問題なく接続できています。
Debian 固有の問題?もしかしたらUbuntu系でも同様の症状が出てるかもしれないですね。

Calibre 5.x で DRM が解除できない

現在 Calibre のメジャーバージョンが「5」になっています。DeDRM_plugin も最新のもの(beta)で Calibre 5 に対応したみたいなのですが、私の環境では DRM が解除されませんでした。Crypto がねーよって言われます。バージョンが上がったことで Python2 から Python3 に移行されているみたいだったので Python3 に Crypto を入れたけど駄目でした。
解決策としては Calibre 4 にするのが早そうです。
calibre - Download for Linux に書かれているコマンドを実行すればスクリプトが勝手にやってくれます。

~$ wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin version=4.23.0

※ コマンドそのままコピペだとそんなコマンドないって怒られたので必要な部分のみ抜粋。
※ 上記のコマンドでも、すでにインストールされているCalibreどうする?って聞いてくれるいい子。