Excelのマクロパスワードを忘れた場合のハッキング方法

長期間問題なく動いていたExcelマクロが、基幹システムの変更などで急に動かなくなってしまったときなどに「パスワードなんだっけ…?」と、なることがたまにはあると思います。
もっとひどい話だと、誰が作ったかわからないマクロの手直しを頼まれて、「パスワード?知らないよ?」とか言われた話も聞いたことがあります。
そんなときに使える、マクロパスワードのハッキング方法を紹介します。
この方法の使用は自己責任でお願いします。
他人が作ったマクロの破壊などに使うのは、絶対にやめましょう。
マクロパスワードのハッキング方法
結論から言うと、マクロパスワード部分のバイナリデータを書き換えて、パスワードを任意の文字に変更してしまう方法で行います。
では、詳しく解説していきます。
Excelファイルを展開する
最初にパスワードを書き換えるExcelファイルのバックアップを必ず作成しましょう。最悪2度と開けなくなる可能性があります。
.xlsmファイルは、内部的にはzipで圧縮されているので、拡張子を変更することで解凍することができます。
ということで、早速解凍していきましょう。
xlsmファイルの拡張子をzipにリネームします。

リネームしたら解凍します。
解凍したファイルの「xl」フォルダにある「vbaProject.bin」というファイルにマクロのパスワードデータが保存されています。

旧タイプのExcelファイル(.xls)の場合は、解凍する必要はなく、.xlsファイルをそのまま使用します。
バイナリエディタでパスワードを書き換える
次に、バイナリエディタでパスワード部分を書き換えます。
バイナリエディタは「Stirling」を使用するので上のリンクからダウンロードして置きましょう。
解凍したファイルの「xl」フォルダにある「vbaProject.bin」を「Stirling」にドラッグ&ドロップで放り込みます。(.xlsファイルの場合は、そのまま放り込みます)

そしたら、「検索」ボタンを押して、データの種別を「文字列」にし「DPB」と検索します。

検索した「DPB」の後ろにあるダブルクオーテーションで囲まれたデータが、vba(マクロ)パスワードのハッシュ値になります。ここを書き換えます。

パスワード部分の文字を選択すると、下のステータスバーで文字数を確認することができます。この文字数が重要なので覚えておきましょう。

パスワード部分であるハッシュ値の文字数は、Excelファイルを保存したときに以下の4パターンからランダムで選択されます。
1. 72文字
2. 74文字
3. 76文字
4. 78文字
(パスワードの長さは関係ありません)
ここで新しいExcelファイルを作成し、vba(マクロ)パスワードを自分で決め、作成したファイルでこれまでの作業をもう1回行います。
感の良い人ならもうお解りかと思いますが、ハッシュ値の文字数が同じ数になったときに、その部分を丸ごとコピペして書き換えます。
すると、パスワードがわからなかったファイルのパスワードが、あなたが作成したファイルのパスワードに置き換わります。
文字数が違った場合は、保存してからやり直すことで文字数がランダムに変化するので、狙った文字数が出るまで繰り返します。
「そんなの面倒くさい!」という人のために、私の環境で出たパスワード「1234」のハッシュ値を置いておきます。(他環境で使えるか試してませんが…)
パスワード「1234」
72文字
6062CC13E913E9EC1714E94DB4B5BB69EAA21E41EBFCFC944A99D12883ECB411D5C4C725
74文字
6260CE844BA14BA1B45F4CA1150CFD13A1426AB619731444BC027169003BC46CF98D2C3F8D
76文字
959739565B76787678898877782825EE08AE357FA52C620973A13594A42DFC132D2E4EE37E44
78文字
0E0CA28EEEF2390F390FC6F13A0F679EAF816FACBCDC6B29C63A6E0CC7935ECD22FE5F1FB29113
ちなみにStirlingは、テキストデータをコピペできないので、上のデータを使う場合は、手打ちするか、キーボードシミュレーターというツールを使って疑似コピペを行いましょう。
ハッシュ値を書き換えたら、保存します。
展開したファイルの再圧縮
「vbaProject.bin」を書き換えて保存したら、「_rels」「docProps」「xl」「[Content_Types].xml」をまとめてzipに再圧縮します。

再圧縮したら、zipファイルの拡張子をxlsmに戻します。

Excelファイルを開いて修復する
パスワードを書き換えたExcelファイルを開くと「読み取れない内容が含まれています。」というウインドウが表示されるので、「はい」を選択します。

修復が終了するとウインドウが表示されるので、「閉じる」を押します。

そしたらVBEを開いて書き換えたパスワードを入力すると…

vbaコードを開くことができます!

まとめ
繰り返しになりますが、悪用厳禁で自己責任でお願いします。
こんな方法使わないで済むようにパスワードの管理はしっかりと行いましょう。
-
前の記事
あの「Minecraft」の無料ブラウザ版が爆誕 2019.05.14
-
次の記事
AndroidのTorBrowser正式バージョンがリリースしたので触ってみた 2019.05.23