『敗北と死に至る道が生活』その4288
今日はエクセルのシートロックパスワードを忘れたエクセルを受け取ってパスワードを書き換える。というツールを作った。ハッカー的な作業だ。が、担当者が急死したり逃亡した場合、パスワードが分からないリスクもパスワードが漏れるリスクと同様に存在する。xlsxの実態がzipで、解凍して中身を見たらテキストファイルでありpassword=と平文で書かれているので楽勝だった。
・旧形式だったらxlsx形式にする。
・ユーザーTempフォルダ名を取得し、そこに置く。
・拡張子xlsxをzipに書き換える。
・zipファイルとして解凍する。
・解凍できたxmlファイルをBOMなしのUTF-8で読み書きしpassword-"???"をpassword:"83AF"に書き換える。83AFはpasswordのhash値。
・フォルダ構成ごとzip圧縮する。
・拡張子zipをxlsxに書き換える。
・ユーザーTempフォルダのxlsxを新規ブックとして起動する。
・MsgBoxで"開きました"と出してOKされたらユーザーTempフォルダの作業用ファイル、フォルダを削除する。
これでメモリ上だけにシートロックパスワードがpasswordの状態でエクセルを開いたことになる。
VBScriptだけでコーディングした。テキストスクリプトは見通しが良くてよい。