先日、会社で使用していた「介護サービス利用シミュレーションシート」で、゛初期化゛の内容を確認しなければならなくなり、VBAを開きましたが、マクロにパスワードロックがかかっていて開くことができず、仕方なく、非常にリスキーな方法で解除しました。自分で作成したVBAで、自分で設定したパスワードがわからず開けないという何とも情けない状況となりました。解除の方法は、バイナリーエディターで強制的に書き換えるという方法です。何度となくテストして成功するのを確認した後、実行しましたのでその方法を記録しておきます。
マクロ(VBA)パスワードの解除の準備
バイナリーエディターの入手
Vectorからバイナリーエディターの「Stirling」をダウンロードします。
対象ファイルのバックアップ
マクロの解除は、バイナリーエディターで強制的にパスワードを書き換えますので、ファイルが壊れる危険性が高く、必ずバックアップを取って下さい。尚、あくまでも自分の作成したマクロを解除するという緊急対応ですので、悪用はNGです。
編集ファイルの準備
Excelの拡張子が「xls」か「xlsm」かにより解除の方法が異なります。Excel2010以降、Excelファイル自体の保存形式が標準でZIP形式で圧縮された状態で保存されるようになったようです。つまり、「xlsm」ファイルは、内部的にはzipで圧縮されていますので、拡張子を「zip」に変更することで、Excelファイルを解凍できるようになります。
xlsm
①「xlsm」ファイルの拡張子を「zip」に変更する。
②「zip」ファイルを解凍する。
拡張子をzipに変更したファイルを選択、右クリックで「すべて展開」で解凍します。
xls
拡張子が「xls」の場合は、単独のバイナリーファイルの為、zipに変更して、解凍等の作業は必要なく、直接バイナリーエディターで編集するのみです。
マクロ(VBA)パスワードの解除
対象ファイルの検索
バイナリーエディターの起動
Stirling.exeをダブルクリックして起動します。
対象ファイルの選択
パスワードのハッシュ値の検索
検索データに「DPB=」と入力して、検索します。
“CAC866・・・・・2090″の74文字がパスワードのハッシュ値です。(DPB=” “で囲われた中の文字です。)
パスワード(ハッシュ値)の書き換え
書き換え
検索されたハッシュ値が、どんな値のパスワードなのか?はわかりませんので、新たなパスワード(今回は、1234)のハッシュ値に書き換えます。
注意:
ハッシュ値は、72文字、74文字、76文字、78文字の4つのパターンからランダムに作られますので、文字数の一致する新たなパスワードのハッシュ値を予め準備しておきます。このハッシュ値の求め方は、後述します。
※書き換えはコピペできませんので、直接ハッシュ値を入力していくしかありません。
再圧縮
ハッシュ値の書き換えが済みましたら、すべてのフォルダ及びファイルをまとめてzipに再圧縮します。
拡張子をxlsmに戻す。
xlsmファイルを開く
書き替えたExcelファイルを開くと以下のようなメッセージが表示されますが、「はい」を選択します。
VBAを開く
VBAを開き、書き換えたパスワード(「1234」)を入力します。
VBAのロックが解除できました。
プロジェクトのロック解除
ファイルを閉じると、ロックがかかりますので、ロックを解除して閉じます。VBAProjectのプロパティから「保護」タブを開き、「プロジェクトを表示用をロックする」のチェックを外し、パスワードを消して「OK」をクリックします。
代替ハッシュ値の検索
ハッシュ値は、72文字、74文字、76文字、78文字の4つのパターンからランダムに作られますので文字数の一致する新たなパスワードのハッシュ値を捜して、ハッシュ値を置き換えるのです。つまり、新たなブックにマクロを記述、パスワード入力でロックして、そのブックのパスワードのハッシュ値が同じ長さのハッシュ値となるまで何度もブックを作成して、置き換えるハッシュ値を求め、見つかった時点で、パスワードのハッシュ値を置き換えるのです。
新しいブックの作成
新規bookを開く
新しくブックを作成してマクロ(何でも良い)を記入しプロジェクトをロック(パスワード入力)します。
VBAを開く
ALT+F11でVBAを開きます。
マクロの記述
①標準モジュールの選択
どんなものでも良いので、マクロを記述します。
②マクロの記述
プロジェクトのロック
①VBAProjectのプロパティを開く
②パスワードの入力
「保護」タブを選択して、置き換えるパスワードを入力します。(ここでは、「1234」)
Bookを閉じる
拡張子を「xlsm」で閉じます
拡張子を変更する。
xlsmをzipに変更する。
「zip」ファイルを解凍する。
拡張子をzipに変更したファイルを選択、右クリックで「すべて展開」で解凍します。
同じ長さのハッシュ値を捜す。
「vbaProject.bin」をバイナリーエディターで開く
「DPB=」で文字列を検索する。
見つかったハッシュ値をメモする。
74文字ではありませんので、再度「新しいブックの作成」からやり直し、74文字のハッシュ値が見つかるまで繰り返します。見つかれば、パスワードの書き換えを行います。