2019/08/12(月)Tera Term の「リンク」と「接続」


Tera Term の「リンク」と「接続」

Tera Term は、複数のプログラムで構成されていて、相互にプロセス間通信をすることで成り立っています。

Tera Term のヘルプから画像を引用します。

Tera Term モジュール構成
Tera Term モジュール構成

上記の図からは Tera Term 本体 (ttermpro.exe) と Tera Term マクロ実行プログラム (ttpmacro.exe) が異なることがわかります。
「リンク」と「接続」の違いを説明する上で、これの理解が必要になります。

リンク

Tera Term マクロ実行プログラム (ttpmacro.exe) から見た Tera Term 本体 (ttermpro.exe) へのアクセス有無を「リンク」と呼んでいます。
このため、マクロが Tera Term 本体へ通信している状態を「リンクしている」と呼び、マクロが Tera Term 本体へ通信していない状態を「リンクしていない」と呼んでいます。

リンクするためには ttpmacro.exe が connect 等で ttermpro.exe と DDE によるプロセス間通信を行う必要があります。
DDE については、このページの下部にもう少し技術的な内容を書いたのでここでは省略します。

また Tera Term を終了した場合、デフォルト設定では併せてリンクも終了するようになっています。

Point:
DDE による Tera Term 内アプリケーション同士のプロセス間通信。

接続

Tera Term 本体が「Tera Term を構成するプログラム以外」のサーバやスイッチングハブ等と通信している状態を「接続」や「アクセス」と呼んでいます。

Telnet や SSH 等のプロトコルで通信している状態ですね。

Point:
TCP/IP による通信。

DDE

DDE (Dynamic Data Exchange) は日本語で「動的データ交換」とも呼ばれる Windows 2.0 (1987年) の時代に発表されたプロセス間通信のメカニズムです。

DDE 通信から見た Tera Term の「リンク」は Tera Term 本体がサーバ、マクロ実行プログラムがクライアントになっています。
サーバ - クライアントモデルで通信していると書くと TCP/IP による Telnet や ssh との通信と混乱しかねませんが、実のところ概念は同じものでも利用している技術が異なります。

OLE (Object Linking and Embeddin) の登場以降では活躍の場が少なくなったものの VBA といったマクロを介さず利用できることから 2017 年 10 月にはセキュリティ研究者が DDE を悪用したマルウェア拡散手順を公開、2017年12月には Word の DDE 機能がデフォルトで Disable される*1という変遷がありました。

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV170021

この攻撃手法については https://www.ipa.go.jp/files/000063813.pdf に詳しいため、参照いただければ幸いです。
参照先の PDF では「この文書には、他のファイルへのリンクが含まれています。リンクされたファイルのデータでこの文書を更新しますか?」といったダイアログボックスが表示されていることがわかります。

これらのことから、セキュリティの向上という名目で DDE が無効化される流れも想像できます。
Windows で DDE が利用できなくなると Tera Term マクロが動作しなくなります。

*1 : Excel や Outlook は、現在でも DDE を利用可能。

2019/08/08(木)SCP のダウンロード先をデスクトップに


SCP のダウンロード先をデスクトップに

https://osdn.net/projects/ttssh2/forums/5841/41014/#forum-message-83348

これに口をはさんだ後で「マクロで作るならどうやるだろう?」と思ってしまったので作ったマクロ。

inputbox でダウンロードするデータを指定しておいて、デスクトップに送ってみる。

; ダウンロードするファイルの指定
inputbox 'Download file' 'input'
SrcFileName = inputstr

; ダウンロード先
expandenv BaseDir '%HOMEDRIVE%%HOMEPATH%'
sprintf2 DestFileName "%s\Desktop\%s" BaseDir SrcFileName

messagebox DestFileName 'DestFileName'

; コマンド scprecv <remote file name> [<local file name>]
;scprecv SrcFileName DestFileName


ここまで書いて、私は思いました。

「……あ、これ .ttl ファイルをダブルクリックしただけじゃだめじゃん。」

そう、メニューから「コントロール」→「マクロ」で呼び出さないといけません。
うーん、デスクトップ指定が面倒だと言っているのに、あんまり面倒さが変わらないw


というか、だ。
自分が Tera Term の SCP 機能を使うときは、ダウンロード先を開いたうえで、ソースとデストのパスをそれぞれテキストエディタにコピペしてた。
ソースは Tera Term の画面で echo $(pwd)/xxx とかでフルパス出力させればコピペも楽だったし。

他の人……というか同僚が WinSCP を使う中、自分だけそんなやり方をしてたのを思い出す。


うーん、サンプルマクロの記事としては微妙なので、技術メモとして。

何か応用効くかなぁ……

一応、上記サンプルマクロのバージョン情報を。
利用マクロのバージョン情報
種別:通信Ver機能の簡易説明
scprecv4.57以降SCPプロトコルでファイルを受信する。
種別:文字列操作Ver機能の簡易説明
expandenv4.71以降環境変数文字列を展開する。
sprintf24.62以降フォーマットされた出力を返す。
種別:その他Ver機能の簡易説明
inputbox文字列を入力するためのダイアログボックスを開く。
4.53以降デフォルト入力文字を設定するオプションの追加。
4.54以降特殊文字の解釈を制御するオプションの追加。
messageboxダイアログボックスを開き、ユーザーにメッセージを知らせる。
4.54以降特殊文字の解釈を制御するオプションの追加。
4.60以降キャンセル時にマクロ停止を確認する機能の追加。

Tera Term 本体が、環境変数をデフォルトで解釈してくれるならすごくうれしい。

2019/08/01(木)正規表現 Oniguruma の利用バージョン

正規表現 Oniguruma の利用バージョン

Tera Term で利用されている鬼車 (正規表現エンジン) のバージョンを、更新履歴からリストアップしてみました。
何に役立つのか分からない情報なため、とりあえずメモとして。

Tera Term に利用雄されている鬼車のバージョン一覧
Tera Term バージョン鬼車バージョン
2023.12.19 (Ver 5.1)Oniguruma 6.9.9へ差し替えた。
2023.10.15 (Ver 5.0)Oniguruma 6.9.8へ差し替えた。
2021.06.05 (Ver 4.106)Oniguruma 6.9.7.1へ差し替えた。
2019.08.31 (Ver 4.104)Oniguruma 6.9.3へ差し替えた。
2019.06.15 (Ver 4.103)Oniguruma 6.9.2へ差し替えた。
2019.02.28 (Ver 4.102)Oniguruma 6.9.1へ差し替えた。
2018.11.30 (Ver 4.101)Oniguruma 6.9.0へ差し替えた。
2018.05.31 (Ver 4.99)Oniguruma 6.8.2へ差し替えた。
2018.02.28 (Ver 4.98)Oniguruma 6.7.1へ差し替えた。
2017.11.30 (Ver 4.97)Oniguruma 6.6.1へ差し替えた。
2017.08.31 (Ver 4.96)Oniguruma 6.6.0へ差し替えた。
2017.05.31 (Ver 4.95)Oniguruma 6.2.0へ差し替えた。
2017.02.28 (Ver 4.94)Oniguruma 6.1.3へ差し替えた
2016.11.30 (Ver 4.93)Oniguruma 6.1.2へ差し替えた
2015.02.28 (Ver 4.86)Oniguruma 5.9.6へ差し替えた
2013.11.30 (Ver 4.80)Oniguruma 5.9.5へ差し替えた
2013.05.31 (Ver 4.78)Oniguruma 5.9.4へ差し替えた
2012.12.02 (Ver 4.76)Oniguruma 5.9.3へ差し替えた
2010.2.20 (Ver 4.65)Oniguruma 5.9.2へ差し替えた
2008.1.15 (Ver 4.57)Oniguruma 5.9.1へ差し替えた
2007.8.8 (Ver 4.53)Oniguruma 5.9.0へ差し替えた
2007.5.7 (Ver 4.52)Oniguruma 5.7.0へ差し替えた
2007.3.10 (Ver 4.51)Oniguruma 5.5.3へ差し替えた
2007.1.22 (Ver 4.50)Oniguruma 5.5.2へ差し替えた
2006.11.20 (Ver 4.49)Oniguruma 4.5.1へ差し替えた
2006.11.1 (Ver 4.48)Oniguruma 4.4.6へ差し替えた
2006.10.28 (Ver 4.47)Oniguruma 4.4.5へ差し替えた
2006.10.9 (Ver 4.46)Oniguruma 4.4.4へ差し替えた
2006.9.16 (Ver 4.45)Oniguruma 4.4.1へ差し替えた
2006.7.24 (Ver 4.41)Oniguruma 4.2.0へ差し替えた
2006.2.24 (Ver 4.28)Oniguruma 4.0.1へ差し替えた
2006.1.21 (Ver 4.26)Oniguruma 3.9.1へ差し替えた
2005.10.7 (Ver 4.21)正規表現ライブラリ Oniguruma のバージョンをバージョン情報に追加した