2019/07/11(木)パスワードファイル暗号化(7zip 利用版)
2021/05/21 06:34
パスワードファイル暗号化(7zip 利用版)
このサンプルマクロは、以下の仕様を満たすものとします。マクロの目的
Tera Term の getpasswd コマンドで作成したパスワードファイルを、暗号化または解凍します。暗号化・解凍はそれぞれ別のマクロとし、個別に実行可能とします。
また、共通する情報は設定ファイルを include して読み込むものとします。
なお、アーカイブ作成・解凍のための前提アプリに、コマンドライン版 7zip を利用します。
7zip は、GNU LGPL ライセンスによって開発されているアーカイバです。
https://sevenzip.osdn.jp/
利用可能環境
Windows (7zip)
7zip を利用するための環境は、以下の通りです。インストールディレクトリ = C:\7za920
実行ファイル名 = 7za.exe
※ 上記フォルダは、マクロの設定ファイルで任意のものに書き換えることが可能です。
サンプルスクリプトでは、コマンドライン版 7zip を上記フォルダに格納していることが前提です。
マクロの設定ファイルを、環境に合わせて書き換えてください。
Teraterm
依存する Tera Term バージョン:・Tera Term バージョン 4.69 以降*1
・利用する Tera Term コマンド:
種別:制御 | Ver | 機能の簡易説明 |
---|---|---|
end | マクロの実行そのものを終了する。 | |
if,then,elseif,else,endif | 条件分岐 | |
include | インクルードファイルに移る。 | |
種別:文字列操作 | Ver | 機能の簡易説明 |
sprintf2 | 4.62以降 | フォーマットされた出力を返す。 |
strspecial | 4.67以降 | 特殊文字を変換する。 |
種別:ファイル操作 | Ver | 機能の簡易説明 |
filedelete | ファイルを削除する。 | |
filesearch | ファイルまたはフォルダがあるか確かめる。 | |
foldersearch | 4.69以降 | フォルダがあるか確かめる。 |
getdir | MACRO の現在のディレクトリを得る。 | |
makepath | フルパス名を作成する。 | |
種別:パスワードコマンド | Ver | 機能の簡易説明 |
passwordbox | パスワードを入力するためのダイアログボックスを開く。 | |
4.54以降 | 特殊文字の解釈を制御するオプションの追加。 | |
種別:その他 | Ver | 機能の簡易説明 |
exec | アプリケーションを起動する。 | |
4.63以降 | 起動したアプリケーションの終了を待つオプションの追加。 | |
4.78以降 | カレントディレクトリを指定するオプションの追加。 | |
messagebox | ダイアログボックスを開き、ユーザーにメッセージを知らせる。 | |
4.54以降 | 特殊文字の解釈を制御するオプションの追加。 | |
4.60以降 | キャンセル時にマクロ停止を確認する機能の追加。 |
適宜、マクロの設定ファイルで任意のものに書き換えてください。
マクロの使い方
実行タイミング
任意のタイミングで実行が可能です。ファイル名 | 利用目的 |
---|---|
PasswdCnf.ttl | PasswdArc.ttl および PasswdExt.ttl の共通設定ファイルです |
PasswdArc.ttl | 入力パスワードで、パスワードファイルを暗号化 zip にします |
PasswdExt.ttl | 暗号化 zip を入力パスワードで解凍します |
マクロの指定方法
詳細は TeraTerm マクロの使い方 を参照してください。ttpmacro.exe を利用する場合
ファイルの拡張子 .ttl を ttpmacro.exe へ関連付けしておきます。.ttl ファイルをダブルクリック等で実行します。
ttermpro.exe を利用する場合
ttermpro.exe を利用する場合は、起動時にオプションへ /M=xxx.ttl のように指定します。メニューから実行する場合
Tera Term メニューから「コントロール(O)」→「マクロ(M)」を選択します。対象ファイルを選択して「開く」ボタンをクリックすると、実行されます。
コード
著作権情報
7zip に関する著作権は、7zip 開発プロジェクトおよび参加されている開発者が所有しています。https://sevenzip.osdn.jp/ を参照してください。
以下、著作権情報はサンプルマクロに限定して記述します。
このサンプルマクロに関する著作権は、当サイト管理者が所有しています。
著作権者
神場 和也ライセンス
3条項BSDライセンス関連情報
(なし)サンプルコード
ファイルダウンロード
passwdファイル暗号化.zip次のソースファイル 3 点をセットにしたものです。
ファイル名 | 利用目的 |
---|---|
PasswdCnf.ttl | PasswdArc.ttl および PasswdExt.ttl の共通設定ファイルです |
PasswdArc.ttl | 入力パスワードで、パスワードファイルを暗号化 zip にします |
PasswdExt.ttl | 暗号化 zip を入力パスワードで解凍します |
項目 | 内容 |
---|---|
文字コード | Shift JIS |
実行確認バージョン | Tera Term Ver 4.102 |
備考 | 下記コピペ用ソースコードをファイルに保存したものです。 |
コピペ用
以下のソースコードをファイルに保存のうえご利用ください。※ UTF-8 で保存した場合は、Tera Term Ver 4.102 以降で実行する必要があります。詳細は マクロファイルの仕様 を参照してください。
・include 対象となる PasswdArc.ttl および PasswdExt.ttl の共通設定ファイル
想定ファイル名:PasswdCnf.ttl
; 7zip Archive macro of Tera Term ; ---------------------------------------------------------- ; File: PasswdCnf.ttl ; Description: PasswdArc.ttl および PasswdExt.ttl の共通設定 ; Environment: generic ; Update: 2019/6/21 ; Author: Kazuya Jimba ; Site: http://ttm.jimba.ddo.jp/adiary.cgi/teraterm ; Special Thanks ; https://sevenzip.osdn.jp/chm/cmdline/syntax.htmx ; ---------------------------------------------------------- ;; ディレクトリ関係 ; 7zip 実行ファイルの格納ディレクトリ _7zipDir = 'C:\7za920' ; パスワードファイルの格納ディレクトリ getdir _pwdir ;; ファイル名関係 ; 7zip 実行ファイル名 _7zipExe = '7za.exe' ; getpasswd で使用するパスワードファイル名 _pwfile = 'password.dat' ; 圧縮ファイル名 _pwArchive = 'passwd.zip' ;; パス生成 makepath _7zip _7zipDir _7zipExe makepath _pwdat _pwdir _pwfile makepath _pwzip _pwdir _pwArchive
・指定したパスワードでアーカイブするマクロ
想定ファイル名:PasswdArc.ttl
; 7zip Archive macro of Tera Term ; ---------------------------------------------------------- ; File: PasswdArc.ttl ; Description: getpasswd で作成したパスワードファイルを、 ; 指定したパスワードでアーカイブするマクロ。 ; アーカイバには 7zip を利用する。 ; Environment: generic ; Update: 2019/6/21 ; Author: Kazuya Jimba ; Site: http://ttm.jimba.ddo.jp/adiary.cgi/teraterm ; Special Thanks ; https://sevenzip.osdn.jp/chm/cmdline/syntax.htmx ; ---------------------------------------------------------- ;;; 変数設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; includePath = 'PasswdCnf.ttl' ;;; メイン処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 暗号化処理共通ファイルを読み込む。 include includePath ;; 対象が存在するか確認する。 filesearch _pwdat if result = 1 then foldersearch _pwdat if result = 1 then sprintf2 msg '%s はフォルダであるため終了します。' _pwdat messagebox msg 'Error' end endif else sprintf2 msg 'ファイル %s が存在しないため終了します。' _pwdat messagebox msg 'Error' end endif ;; パスワード情報取得 _msgtitle = 'パスワード入力' _msgline = 'パスワードファイルを暗号化します。\n暗号化用パスワードを入力してください。\n' strspecial _msgline passwordbox _msgline _msgtitle 1 _filepassword = inputstr ;; 圧縮コマンドの生成 sprintf2 _ArcCmd "%s a -tzip -p%s %s %s" _7zip _filepassword _pwzip _pwdat ; 暗号化処理コマンドラインを実行する。 exec _ArcCmd 'hide' 1 ; 元ファイルを削除する。 filedelete _pwdat if result = 1 then sprintf2 msg 'ファイル %s が削除できませんでした。' _pwdat end endif ;;; 終了処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end
・指定したパスワードで解凍するマクロ
想定ファイル名:PasswdExt.ttl
; 7zip Archive macro of Tera Term ; ---------------------------------------------------------- ; File: PasswdExt.ttl ; Description: getpasswd で作成したパスワードファイルを、 ; 指定したパスワードで解凍するマクロ。 ; アーカイバには 7zip を利用する。 ; Environment: generic ; Update: 2019/6/21 ; Author: Kazuya Jimba ; Site: http://ttm.jimba.ddo.jp/adiary.cgi/teraterm ; Special Thanks ; https://sevenzip.osdn.jp/chm/cmdline/syntax.htmx ; ---------------------------------------------------------- ;;; 変数設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; includePath = 'PasswdCnf.ttl' ;;; メイン処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 暗号化処理共通ファイルを読み込む。 include includePath ;; 対象が存在するか確認する。 filesearch _pwzip if result = 1 then foldersearch _pwzip if result = 1 then sprintf2 msg '%s はフォルダであるため終了します。' _pwzip messagebox msg 'Error' end endif else sprintf2 msg 'ファイル %s が存在しないため終了します。' _pwzip messagebox msg 'Error' end endif ;; パスワード情報取得 _msgtitle = 'パスワード入力' _msgline = 'パスワードファイルを復号化します。\n復号化用パスワードを入力してください。\n' strspecial _msgline passwordbox _msgline _msgtitle 1 _filepassword = inputstr ;; 解凍コマンドの生成 sprintf2 _ExtractCmd "%s x -tzip -p%s %s -o%s" _7zip _filepassword _pwzip _pwdir ; 暗号化処理コマンドラインを実行する。 exec _ExtractCmd 'hide' 1 ; 元ファイルを削除する。 filedelete _pwzip if result = 1 then sprintf2 msg 'ファイル %s が削除できませんでした。' _pwzip end endif ;;; 終了処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end