LoginSignup
1
2

More than 3 years have passed since last update.

macOS catalinaでAutomatorのサービスでAES256暗号強度なパスワードZipファイルを作る(しかもWindowsで開く想定)

Last updated at Posted at 2020-02-14

目的

Windows環境な人にMacからファイルを送る為に、AES256で暗号化してパスワードつけたZipファイルを作りたい。しかも手軽に。

イメージ-2.gif

Step概要

  1. 7zを入れる
  2. Finderにフルディスクアクセスをつける
  3. Automatorで暗号化サービスを作成する

では早速

1. 7zを入れる

以下でインストールします。簡単ですね。

brew install p7zip

(brewが入っていない人は適宜入れておいてください)

2. Finderにフルディスクアクセスをつける

Operation not permitted エラーで動かない原因がこれだと気付くまで何気にハマった箇所でした。Catalinaは中々厳しいです。

ではまず最初に、システム環境設定 を開きます。
image.png
セキュリティとプライバシー を開きます。
image.png

ここで変更するにはカギをクリックしますの横のカギマークをクリックして編集可能にします。
image.png

image.png
のようになればOK。

フルディスクアクセス を選択し右側のペインにFinderが入っていない場合は+ マークを押します。
アプリケーション選択ダイアログが出てくるので、Command + ↑などで最上位階層まで上がり、
Macintosh HDシステムライブラリCoreServicesと辿るとFinder.appが見えるはずですので、それを選択してOKしてください。
以下のようになればOK。
image.png

これをやらないと、後で7zコマンドを叩いた時に権限不足でエラーになるのです。(7z入れてみたりAutomatorを追加してみたりしましたがダメでした。)

不安な方は一度この後の実装をやってエラーが出ることを確認してから、このフルディスクアクセスへの権限追加を実施してもらってもOKです。Finderの再起動を求められますので、実施してもらってOKです。(その際、開いているFinderが一度全部閉じてしまいますので、作業途中のものがある場合は注意してください。)

また、不要になったらFinderのチェックを外すか、-ボタンでエントリーを消してしまえば元に戻ります。

3. Automatorで暗号化サービスを作成する

LaunchpadからAutomatorを起動します。
image.png
こんなアイコンです。

起動したらクイックアクションを選択して選択ボタンを押します。
image.png

次に実行時のオプションは以下のようにします。
image.png
イメージカラーは好きにいじってください。(どこに反映されるのかよくわかってませんが問題ないです。)

その後、以下の図の名前という検索窓があるのでそこにカーソルを合わせ、
image.png

「シェルスクリプト」と打つとシェルスクリプトを実行というアクションが出てきます。これを右側の開いた箇所にドラッグすると
image.png

以下のようになりますので入力の引き渡し方法引数としてを選択しておきます。
image.png

エディタ部分に以下のソースをコピペしてください。

password=$(osascript -e ' text returned of (display dialog "Enter password:" with title "AES256 ZIP" default answer "" buttons {"OK"} default button 1) ')
if [ "$password" != "" ];then
  password="-p"${password}
fi

/usr/local/bin/7z a -ssw -mem=AES256 -tzip ${password} -scsWIN -xr\!.DS_Store "$1".zip "$@"

最終的に以下のようになっていればOK。
image.png

あとは適当な名前で保存(command + s)したら完成です。
ちなみに、この際の名前が後でサービスメニューに表示されるので、わかりやすい名前にしておくと良いと思います。私はAES256ZIP4WINというものにしました。

使い方

フォルダごと圧縮する場合

Finderから圧縮したいフォルダ選択し、歯車マークもしくは副ボタンのクリック(私の場合は指二本クリック)すると、最下部にサービスというのが見えるので今回作成したサービスAES256ZIP4WINをクリックします。
image.png

するとパスワード入力ダイアログが表示されますので、パスワードを設定する場合は入力してください。設定しない場合は空欄でOKしてください。
image.png

すると、選択したフォルダと同じ場所にフォルダ名.zipというファイルが作成されます。
image.png

1つまたは複数のファイルを圧縮する場合

基本的には同じで、Finderから圧縮したいファイルを選択し、歯車マークもしくは副ボタンのクリックすると、今度は直接先ほどのサービスが選択できます。あとは同じです。
image.png

以上

これでお手軽にパスワード付き暗号化Zipが作成できるようになりました。👏
これまでわざわざWindowsのVM立ち上げて7Zipでやっていたのがだいぶ楽になりました。🙌

皆様のお役に立てれば幸いです。

appendix: ソース解説

パスワードの入力

password=$(osascript -e ' text returned of (display dialog "Enter password:" with title "AES256 ZIP" default answer "" buttons {"OK"} default button 1) ')

パスワードのハードコードとかさすがに出来ませんので、Applescriptのダイアログを使って結果を変数に代入しています。

パスワードに-pをつけてオプションとして動くようにする

if [ "$password" != "" ];then
  password="-p"${password}
fi

入力されたパスワードがある場合(空白じゃない場合)に、頭に-pを付与することで7zで有効なオプションにしています。

7zコマンド

/usr/local/bin/7z a -ssw -mem=AES256 -tzip ${password} -scsWIN -xr\!.DS_Store "$1".zip "$@"
  • 7zの後のaは圧縮(add)の意味。
  • -sswで、他のアプリケーションが対象ファイルを開いてても圧縮する。
  • -mem=AES256は圧縮メソッドの暗号強度指定。
  • -tzipはZIP形式の指定。AES256の指定はZIP用のオプションらしい。(というか7z形式だとそもそもそも基本がAES256とのこと)
  • ${password}は、ダイアログでのパスワードがある場合(例えばhogehoge)は-phogehogeとなる。
  • -scsWINで、ファイル名をWIN形式(SJIS)にする。(らしい)
  • -xr\!.DS_Storeで、Macによくある隠しファイル.DS_Storeを除外する。
  • 圧縮ファイル名は最初のファイルもしくはフォルダ名に.zipを付与したものとしている。(ここはもっとこだわれる箇所でもあるけれど、手で直しても良いレベルなので今はそうしてます)
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2