2019/06/15(土)passwordbox ファイル解析

はてブ数 2019/06/15 00:07 Macro::macro サンプル

passwordbox ファイル解析

このサンプルマクロは、以下の仕様を満たすものとします。

マクロの目的

getpassword コマンドで作成したファイルの暗号化部分を復号化し、同等構成のファイルを生成します。
Tera Term の接続状況に拠らず実行可能です。

利用可能環境

Teraterm
依存する Tera Term バージョン:バージョン4.67以降
種別:制御Ver機能の簡易説明
break4.53以降ループから抜ける。
if,then,elseif,else,endif条件分岐
while,endwhile繰り返す。
種別:文字列操作Ver機能の簡易説明
sprintf24.62以降フォーマットされた出力を返す。
strlen文字列の長さを返す。
strscan部分文字列の位置を返す。
strspecial4.67以降特殊文字を変換する。
strsplit4.67以降文字列を分割する。
strtrim4.67以降前後の文字を削除する。
種別:ファイル操作Ver機能の簡易説明
filecloseファイルハンドルを閉じる。
fileopenファイルを開く。
filereadlnファイルから一行読む。
filesearchファイルまたはフォルダがあるか確かめる。
filewritelnファイルに文字列を改行付きで書き込む。
種別:パスワードコマンドVer機能の簡易説明
getpasswordパスワードを読み出す。
種別:その他Ver機能の簡易説明
inputbox文字列を入力するためのダイアログボックスを開く。
4.53以降デフォルト入力文字を設定するオプションの追加。
4.54以降特殊文字の解釈を制御するオプションの追加。
messageboxダイアログボックスを開き、ユーザーにメッセージを知らせる。
4.54以降特殊文字の解釈を制御するオプションの追加。
4.60以降キャンセル時にマクロ停止を確認する機能の追加。

マクロの使い方

まず、メモ帳等の起動したテキストエディタへサンプルコードをコピペして「pw解析.ttl」等の適当な名前で保存します。
.ttl が ttpmacro.exe に関連付けされている場合は、そのままダブルクリックしてマクロを起動します。

getpassword コマンドで作成したファイルのパスを入力すると、マクロを保存したフォルダに「パスワード解析結果.txt」が作成されます。

コード

著作権情報

著作権者
jing さん
ライセンス
著作権フリー
関連情報
公開先サイト:https://ja.osdn.net/projects/ttssh2/ticket/38222

サンプルコード

ファイルダウンロード
teraterm-pw-analyze.zip

※ 解凍してご利用ください。
項目内容
文字コードShift JIS
実行確認バージョンTera Term Ver 4.102
備考上記公開先サイトから転載したものです。
コピペ用
以下のソースコードをファイルに保存のうえご利用ください。
wfile =    'パスワード解析結果.txt'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; ファイル定義
:FileInput
inputbox 'パスワード DAT のパスを入力してください。' 'Path input'
pwdat = inputstr

strlen pwdat
if result = 0 then
	goto FileInput
endif

; ファイルの存在確認
filesearch pwdat
if result = 0 then
	sprintf2 msg 'ファイル %s がありません\n終了します' pwdat
	strspecial msg
	messagebox msg 'Error'
	exit
endif

; Passowrd file Open (ファイルハンドラ:fhPWDAT 読み取り専用)
fileopen fhPWDAT pwdat 0 1

; Write file open (ファイルハンドラ:fhWrDat)
fileopen fhWrDat wfile 0 0

; 上から順に変数へ格納
while 1
	filereadln fhPWDAT line
	if result = 1 then
		break
	endif

	;; 解析開始
	strscan line '='
	if result = 0 then
		; [定義部分]
		strscan line '['
		if result then
			pLpw = line
			strtrim pLpw '['
			strscan pLpw ']'
			if result then
				strtrim pLpw ']'
			endif
		endif
		filewriteln fhWrDat line
	else
		; パスワード識別子
		strsplit line '='
		PassName = groupmatchstr1 

		getpassword pwdat PassName pLpw

		sprintf2 msg '%s=%s' PassName pLpw
		filewriteln fhWrDat msg
	endif
endwhile

; File Clese
fileclose fhWrDat
fileclose fhPWDAT