あめみやしろぐ

お仕事(院内SE)のことをかいたり思いついたことをかいたりします。

シート保護を回避しよう

いつものようにネット(はてブ)をぼんやりと見ていたらこんな記事があった。

nlab.itmedia.co.jp

 

この話、割と有名な話だと思いつつ「同じような手順でパスワード解除することもできる」とコメントしたところ存外スターを頂いたので、一応手順を残しておきたい。

 

「シート保護がされているxlsxのパスワードを忘れてしまった」(案外多いのだ、そういう問い合わせ)といった時参照していただけば幸いである。

今回は「前任者が残したNW図を編集しようと思ったらシート保護がされていた」という想定でいこう。

f:id:amemiyashiro:20201122155525p:plain

 

①ファイルの拡張子をxlsx→zipへ変更する。

②任意のソフトを用いて解凍する。

③解凍すると以下のようなフォルダが生成される。

 

 f:id:amemiyashiro:20201122160919p:plain

④「xl」フォルダを開く。以下のような構造が展開される。

 f:id:amemiyashiro:20201122161011p:plain

⑤「worksheets」フォルダを開く。以下のような構造が展開される。

 f:id:amemiyashiro:20201122161154p:plain

⑥「sheet1.xml」を任意のエディタで開く。

⑦「sheetProtection」の文字列を検索する。以下のようなセクションがヒットするだろう。*1

<sheetProtection algorithmName="SHA-512" hashValue=...
/>

⑧「sheetProtection」のセクションを削除する。

⑨「sheet1.xml」を上書き保存し、③で解凍されたフォルダ全てを選択してzipファイルへ圧縮する。

⑩生成されたzipファイルの拡張子をxlsxへ変更する。

⑪シートのパスワード保護を解除することができた。

f:id:amemiyashiro:20201122162519p:plain

 

ちなみに7zipをつかうと解凍せずともzipファイルの中身を直接触ることができるので、慣れていればこっちの方が楽かもしれない。

f:id:amemiyashiro:20201122163053p:plain

 

この方法でパスワード解除ができるのはあくまで「ワークシートがパスワード保護されている場合」であって、ファイルそのものがパスワード保護されている場合はどうにもならないのではあるけれど。

*1:このセクションをよく見るとSHA-512でパスワードが暗号化されていることがわかる。さすがに平文でパスワードを載せるようなことはしてないのだ。頑張ればここから復号化することもできそうではあるけれど、おそらくsheetProtectionセクションを削除する方が早い。