そのさ.`zipcloak` 要る?

いざ,と言う時,いっっつも忘れてしまっていて,いっっっつも時間を浪費してしまう.

これはいけません.

macOS でも,パスワード付き *.zip in コマンドライン,のワークフローについてのメモ.


Plastic Zip BagPlastic Zip Bag / moriyoshi


ということで,手続きは,まるっと覚えてしまを

一応,より具体的な想定シーンを用意して.;

doc-a.pdfdoc-b.pdfの 2 つ (複数) のファイルを,

同じディレクトリに 201703.zipという名前で,

1 つのパスワード付き zip 形式ファイルにまとめる (圧縮する).


そして手続きは,こう.;

  1. パスワードを用意しておきます.
    % pwgen 16 1 | pbcopy
  2. zipコマンド使って,パスワード付き zip 形式ファイルで圧縮しましょう,と命令.
    1 でクリップボードに退避していたパスワードを.
    % zip -e 201703.zip doc-a.pdf doc-b.pdf  
    Enter password:    # 1 でのパスワードを [command + v].で,[enter].
    Verify password:   # 同様に [command + v].
    
  3. 201703.zipができる.
    おわり.

どんなもんでしょう.
うん,結構シンプル.これなら覚えられる.

“ワークフロー” ってのは,ちょっと大げさか.

スクリプトなりエイリアスなりを用意してしまうのも良いかも.

環境

この度,執筆時点での作業環境 (前提条件) は以下の通りです.;

  • macOS
    % sw_vers  
    ProductName:    Mac OS X  
    ProductVersion: 10.12.3  
    BuildVersion:   16D32
    
  • Homebrew
  • pwgen
    なければ % brew install pwgen


homebrew 様々です.

以下,上述 手続き の簡単な補足,メモです.

pwgen 16 1 | pbcopy

パスワードを生成してもらいます.

具体的には...

16 文字 (桁?) のパスワードを 1 つ生成 pwgen,そのパスワードをコピー pbcopy する.

特に分解して説明しなくとも,読み解けるかと思います.

まずは最低限としてここから覚えていけば良いかな,と.

ちなみにここでは,出来た結果 (パスワード) を pbcopy で,コピー (クリップボードへ退避) していますが,そんなことせず “標準出力に出力された結果を選択して~",でも良いと思います.
思いますに後者の方が結果を明示的に把握,確認できるので,前者の "直接クリップボードへ送っちゃう” 方法より精神衛生上,良いかとは思います.

zip -e 201703.zip doc-a.pdf doc-b.pdf

ここでは,zip コマンドを使い,パスワード付きで圧縮しています.

具体的には...

doc-a.pdfdoc-b.pdf を,201703.zip と言う名前のパスワード付き (-e) zip 形式で圧縮 zip する.

-e と言うオプション.

これが「パスワードを付けてね」となる.

--encrypt と書いても良いんだそうです.

圧縮対象となるファイルが複数の場合は,半角スペース区切りで

個人的にこれが最も知りたかったことでして,ファイルが複数の場合は各アイテムを半角スペース区切りで並べれば良い様子.

zip -e [archive] [file 1] [file 2] ...

実は複数ファイルを扱うケースは,なぜか,どれも一旦フォルダに格納して,そのフォルダごと圧縮する,と言うものばかりで,なんだろなーと思ったのが今回のエントリの動因だったりします.

一応,挙げておきます.;

» Tech TIPS:Mac(OS X)でパスワード付きZIPファイルを作成する - @IT
» パスワード付きZIPファイルを作りたい|MacFan
» 【Mac】「macOS Sierra」でzipファイルをパスワードで保護する方法 | 酔いどれオヤジのブログwp

ちなみに最後に挙げた 3 つ目のエントリ,《「macOS Sierra」で...》ってありますがこれはおそらく罠で,誤解を生むと思います.
間違っていたらごめんなさい.

その他,知ったこと,分からなかったこと,とか

pwgen ? mkpasswd ?

パスワードの生成にて.

mkpasswd 持っているのに,なぜそれを使わなかったのか,と言う点に関しての補足メモ.

一応.

以前 expect を扱った話をしました.

この時参考にさせていただいたエントリで,mkpasswd も同時に入ってくることは知っていました.勿論,この mkpasswd が何をするものであるかも.;

インストールは mkpasswd ではなく expect で行ないます。

ですから,「パスワードを生成したい」と思って真っ先に浮かんだアイテムは,このツールでした.

にもかかわらず,なぜ pwgen を使ったのか.
わざわざ別途インストールまでして.

理由は,何でもない...今となってはどうして放ったのか不思議なのですが(笑),いざ mkpasswd を目の前にした時,期待通りのレスポンスが得られず,いまいち理解できなかったから.と,そんな程度のものだったりします(恥)

ちなみに同様のことを mkpasswd でするとしたら,こんな感じかと思われます.

% mkpasswd -l 16 | pbcopy

両者の違いは,良く分かっていません.

  1. The makepasswd command generates true random passwords using /dev/urandom.
  2. The pwgen command generate pronounceable passwords.

“pronounceable” という事は,pwgen の方は,「何となく読めるような感じの」?文字列でパスワードを作ってくれる,という事なのでしょうか.

賢者のどなたか.

zip だけでいーじゃん?

zipcloak 要る?

今回の作業で最も引っ掛かったのがこれ.

パスワード付きの zip を作成方法について改めて調べていた中で,この作業が zip コマンド 1 つだけで完結するという事に,中々受け入れ難くて,呑み込むまでにちょっと時間を要しました.

以前にも「macOS でパスワード付き zip ファイル作りたいんだど」と思って調べたことがありまして*1,その時知ったのは,;

  1. ターミナルで zip コマンドなり,Finder の [●●を圧縮] なりで,zip ファイルを作って.
  2. 1 の zip ファイルに対し,ターミナルで zipcloak コマンド使ってパスワード掛ける.

という方法.

何気に,2 つのステップを踏まなければならない事に,歯がゆさを感じていたりもしていました.

加えれば,実際,これを書いている時点*2においても,Google 検索に放り投げると,この小面倒くさい zip + zipcloak の記事やエントリがほぼ上位を占めます.

zip コマンドで -e オプション噛ませれば,一発でできるのに?
「まずぅ~.ファイルを選択してぇ~,右クリックしてぇ~,[●●を圧縮] 選んでぇ~,zip ファイルを作ってぇ~,それからぁ [アプリケーション] のぉ [ユーティリティ] 行ってぇ~,[ターミナル] ってぇのあるからそれ起動してぇ~,"zipcloak" って打ってぇ~...」.

何で?

自分には知らない歴史や背景があったりするのかな.

ちなみに,Finder のメニューで zip ファイルを作ると余計なファイルが生成されるとか,zipcloak 走らせた時 Local Entry CRC does not match CD とかエラー吐く,等と言った報告を目にするのですが.;

» 新・OS X ハッキング! (30) 「__MACOSX」の意味は? いま敢えて「zip」を見直す | マイナビニュース
» 新・OS X ハッキング! (154) 機能逆引きなら使える? 便利に使えるワンフレーズコマンド集(1) | マイナビニュース
» Tech TIPS:Mac(OS X)でZIPファイルを作成する - @IT
» Mac OS Xでパスワード付きZIPファイルをつくる - domeiの日記
» 【Mac】zip圧縮する方法について - 備忘録のような何か

zip コマンドで zip ファイルば作れば,どうやらそうゆうの関係ないみたいだし.(Win 環境ないので,未検証)

zip + zipcloak という手続きを採る意味がますます分からないです.

そんなことでして,zipcloak は憶えません.

なんで zipcloak が在るのですか?

正直,今もなお腑に落ちておりません.

こんなんもできるらしいですよ

メモ.

$ zip -e --password=xxxx encrypt.zip source.txt

--password=xxx の “xxx” にパスワードを一緒に設定できるみたいですよ.

でもマニュアルでは《THIS IS INSECURE!》って言ってますけど.

はい,おしまい.

*1:憶えろよwww

*2:2017.03