+
putty
PuTTY PRIVATE PATCHES
2016/03/06
PuTTY PRIVATE PATCHES

PuTTY の 0.67 よりも新しい開発版をベースとして、 PuTTY 0.60 ごった煮版 2007年8月6日版 に諸々の機能を追加しました。

(このページの PuTTY は、 オリジナル同様に GDI でレンダリングするバージョンです。 Direct2D/DirectWrite バージョンは、 D2D/DW PuTTY にあります)

GDI PuTTY

ダウンロード
DOWNLOAD
ダウンロード

2016/03/06 版 putty-gdi-20160306.zip

2015/11/09 版 putty-gdi-20151109.zip

2015/08/16 版 putty-gdi-20150816.zip

2015/07/26 版 putty-gdi-20150726.zip

2015/02/28 版 putty-gdi-20150228.zip

2016/03/06 修正内容
  • 0.67 リリースに追随。セキュリティホール(vuln-pscp-sink-sscanf)が修正されたようです。
  • コンパイル環境を VisualStudio2015 に変更。副作用もあると思いますが、オリジナルが既に旧世代コンパイルには対応しないようですので。
2015/11/09 修正内容
  • 設定の読み込み時にクラッシュすることがあった。
2015/11/08 修正内容
2015/08/16 修正内容
  • 開発元の最新の更新に追随。Windows 10 での動作の改善などが入っているようです。
2015/07/26 修正内容
  • バグフィックスを含む 0.65 がリリースされたため、追随。なお元にしたコードは 0.65 そのものではなく、より新しい機能を含む開発版のブランチになります。
  • 開発版での変更として、ED25519 や OpenSSH の新フォーマット鍵ファイルへの対応があります。
  • ごった煮版 pageant には passphrase を設定に保存する機能が含まれていましたが、以前から注意を喚起しているように、実装的に見ても危険なように思います。昨今の状況を鑑み、安全な実装に代替されるまで機能を削除することにしました。
インストール
INSTALL
インストール

適当なディレクトリに putty.exe を (64 ビット版を使う場合は \x64\putty.exe を) コピーしてください。 設定をレジストリではなくファイルに保存する場合は(推奨)、 \ini\putty.ini を putty.exe と同じ場所にコピーしてください。 日本語化する場合は、 \ja-JP\putty.lng を、同様にコピーしてください。

puttygen.exe その他の関連ファイルも同梱してありますので、 必要であれば適宜コピーしてください。 ただし動作は大半が未テストです。挙動に不審な点があれば、 PuTTYjp をご利用ください。

特徴
FEATURES
特徴
×
ECDH/ECDSA
2008/02/05

(2014/11/17 版で本家による実装に置き換えられました)

ECDH/ECDSA に対応しました。

ECDH/ECDSA は、Elliptic Curve (楕円曲線) 暗号に基づいて、RSA/DSA よりも少ないビット数でより強固な暗号を実現する方式です。対応するビット数は 256, 384, 521(512 ではないのに注意)です。ちなみに ECDSA の 256 ビットは、RSA の 3000 ビット近くに相当するようです。

実装は、openssh の ECC 関連ルーチンをベースに、openssl ライブラリに頼っています。静的にリンクしているため、バイナリのサイズがとても大きくなっています。また、独自にコンパイルする際は、ECC に対応した openssl が必要です。

openssl 非依存で独自実装を旨としてきた PuTTY 本家が将来的に ECDH/ECDSA に対応した場合、何らかの非互換が発生するかもしれません。

×
IME オンでカーソルの色を変える
2008/02/05

IME がオンのときに、カーソルの色を変えます。

カーソル色は、 Window -> Colours -> Select a colour to adjust: -> Cursor Text(IME ON), Cursor Colour(IME ON) で設定してください。

IME OFF IME ON

×
背景設定
2008/02/08

背景の効果・壁紙・透明度を設定できます。

効果と壁紙は Window -> Background に設定があります。 効果は Effect: に Plane, Glass, Double Glass の 3 種類あり、

  • Plane - 普通の平坦な背景
  • Glass - Aero の Glass 効果(Vista 以降)
  • Double Glass - Glass を二重に重ねる(Vista 以降)

壁紙は Wallpaper: に 4 種類の設定があり、

  • None - 壁紙なし
  • Bitmap file - 指定した *.bmp 形式の画像を表示
  • Bitmap file on Desktop - 仮想的にデスクトップへ貼り付けた画像へ透過
  • Desktop - デスクトップの壁紙へ透過(xterm 風)

ただし Wallpaper: Desktop は、Effect: Plane 時のみ有効です。

Plane Glass Double Glass

壁紙の貼り付け方や位置は、さらに詳細を設定できます。 貼り付け方は Position: に 5 種類あり、 Windows 7 のデスクトップ壁紙と同様の選択が可能です。

  • Fill - アスペクト比を保って隙間なく描画
  • Fit - アスペクト比を保って画像全体を描画
  • Stretch - アスペクト比を保たず隙間なく描画
  • Tile - 画像を繰り返して敷き詰める
  • Center - 拡大縮小せずそのまま表示

Position: Stretch 以外の場合、 画像の基準位置は Horizontal/Vertical Align: で指定できます。

透明度は Window -> Transparence に設定があります。 ウィンドウのアクティブ時と非アクティブ時のそれぞれの背景の、 透明度のアルファ値を % 単位で指定してください。0% が完全な透明で、 100% が不透明です。 ただし Effect: Plane 時には、0% を指定しても僅かに不透明が混じります。

Transparency

×
文字を除去してクリップボードへ
2008/02/05

putty 上で選択したテキストをクリップボードに送るときに、 テキストから設定された文字を除去します。たとえば emacs で、

(require 'disp-table)
(defface highlight-eol-face '((t (:foreground "color-19"))) nil)
(defface highlight-wrap-face '((t (:foreground "color-22"))) nil)
(aset standard-display-table ?\n
      (vconcat (mapcar
                (lambda (c) (logior c (lsh (face-id 'highlight-eol-face) 19)))
                "⇂\n")))
(set-display-table-slot standard-display-table 'wrap
                        (+ (lsh (face-id 'highlight-wrap-face) 19) ?»))

といった設定で改行を "⇂" でマークし、 継続マークを "\" から "»" に変更している場合、 Window -> Selection -> Ignore characters に "⇂»" を設定することで、 これらのマークを無視した正味のテキストをクリップボードに送ることができます。

putty.lng を使ってメッセージを日本語化している環境などで、 Ignore characters に文字が正しく設定できないことがあります。 putty.lng を削除して試みてください。 もしくは、直接 registry/putty.ini の IgnoreChars キーに、 UTF-8 コードの文字で設定してください。

Select and Paste

×
Bracketed Paste
2008/02/05

Bracketed Paste Mode に対応しました。使用例は Tera Term の vim からの制御シーケンスの使用例 をご覧ください。

×
ウィンドウ位置を記憶
2008/02/05

Session -> Save the current session settings で Save する際に、 現在のウィンドウ位置を併せて保存し、次回からそのウィンドウ位置で起動します。 位置は、レジストリもしくは putty.ini の TermX と TermY キーに保存されます。

×
IME の前後フィードバック対応
2008/02/24

MS-IME や ATOK の「カーソル位置の前後の内容を参照して変換する」 オプションがオンのときに、この変換の試みに対応します。 詳しくは、 日経トレンディネットの解説 秀丸エディタの紹介 をご覧ください。

具体的には、IME からのリクエストに応じて、 カーソルのある行(表示行)のテキストを返しています。 Vista 以降で導入された TSF による入力には未対応です。

×
最新のソースコード
Latest Source Code

ベースとなるソースコードを、適宜 svn 最新スナップショットに変更しています。

×
プライベートキー定義
2008/02/28

キーを押したときに送信されるコードシーケンスを独自に定義できます。 たとえば、Shift + Up キーで xterm と同様の ^[[1;2A を送信したり、 Shift + Ctrl + Alt + Up キーで適当に決めた ^[[1;9A を送信したりできます。

設定するには、putty.ini を直接編集してください。フォーマットは、以下の通り。

VKey<VK_CODE>=<>,<Shift>,<Ctrl>,<Shift+Ctrl>,<Alt>,<Shift+Alt>,<Ctrl+Alt>,<Shift+Ctrl+Alt>

<VK_CODE> は、目的のキーの仮想キーコード(十進数)です。 キーと仮想キーコードの対応表は ここ などのリストを参照してください。0 ~ 255 が有効な値です。

= の右側には、 Shift Ctrl Alt のモディファイアキーの組み合わせで 8 種類のシーケンスを、 , で区切って記述してください。 \ は、続く 3 文字が 3 桁の 8 進数であることを示します。 たとえば \033[A は、いわゆる ^[[A に変換されます。 \ 自身や、区切り文字 , は、それぞれ \134 \054 と記述できます。 \ と続く 3 文字は、正しく 8 進数として変換できなくても、 不定の 1 文字として送信されるので注意してください。

たとえば Insert キーの動作として、 Shift+Insert で 2 を、Shift+Ctrl+Insert で 3 を、 Alt+Insert で 4 を送るようにし、 それ以外のモディファイアの場合は従来の putty と同じにするには、 Insert キーの仮想キーコードは 45 なので、

VKey45=,2,,3,4

とします。もう少し有用な例としては、 Up Down Left Right の各キーを、(たぶん) xterm と同じにする記述です。 putty.ini の [Session:Default%20Settings] セクション等に追加してください。

# Normal,Shift,Ctrl,Shift-Ctrl,Alt,Shift-Alt,Ctrl-Alt,Shift-Ctrl-Alt
# LEFT UP DOWN RIGHT
VKey37=\033OD,\033[1;2D,\033[1;5D,\033[1;6D,\033[1;3D,\033[1;4D,\033[1;13D,\033[1;14D
VKey38=\033OA,\033[1;2A,\033[1;5A,\033[1;6A,\033[1;3A,\033[1;4A,\033[1;13A,\033[1;14A
VKey39=\033OC,\033[1;2C,\033[1;5C,\033[1;6C,\033[1;3C,\033[1;4C,\033[1;13C,\033[1;14C
VKey40=\033OB,\033[1;2B,\033[1;5B,\033[1;6B,\033[1;3B,\033[1;4B,\033[1;13B,\033[1;14B

この xterm 風の設定を各アプリケーションで認識するためには、 たとえば emacs では、~/.emacs に

(define-key function-key-map "\e[1;2A" [S-up])
(global-set-key [S-up] 'scroll-down)
(define-key function-key-map "\e[1;2B" [S-down])
(global-set-key [S-down] 'scroll-up)

などと設定することで、Shift+Up/Down で scroll-down/up するようになります。 また、readline ライブラリを使う bash などのアプリケーションでは、 ~/.inputrc に

"\e[1;2C": forward-word
"\e[1;2D": backward-word

と設定しておくと、Shift+Left/Right で forward/backward-word します。

さらに、アルファベットとテンキー以外の全キーを(たぶん) xterm 風に定義した ini ファイルのサンプル もどうぞ。ただし英語キーボード仕様。 一部で独自に拡張していますが、ほぼ emacs の xterm.el に準拠しているつもりです。 必要であれば (load-library "term/xterm") して (terminal-init-xterm) で、 一通りのキーシンボルは定義済みになります。

ライセンス
LICENSE
ライセンス

PuTTY is copyrighted by Simon Tatham.

PuTTYjp is copyrighted by Hideki EIRAKU.

PuTTY ごった煮版 is copyrighted by 蛭子屋 双六.

reconnect patch is copyrighted by warp13.

Unless explicitly stated, PuTTY patch provided by this page is covered by the PuTTY License (see LICENCE file in zip).

改変履歴
HISTORY
改変履歴
2015/02/28 修正内容
  • セキュリティフィックスを含む 0.64 がリリースされたため、追随。なおこちらが元にしたコードは 0.64 よりも新しいものになります。
2015/01/09 修正内容
  • 開発元の最新の更新に追随。細かなバグフィックスがいろいろあったようです。
2014/11/18 修正内容
  • 設定ウィンドウなどのサイズや文字コードが不適切だった
2014/11/17 修正内容
  • 開発元が svn から git へ移行したことに伴い、その master branch に追随しました。
    • 現在 pre-0.64 branch で 0.64 release の作業が進んでいますが、master branch はより最近の変更(たとえば ECDSA/ECDH 対応など)を含みます。
    • これにより openssl/openssh 由来の対応コードは削除し、開発元の独自実装による ECDSA/ECDH に対応しています(短い命だった……)。現状どちらのコードに信頼性/安定性がある/あったかは何とも言えない状態です。旧コードで生成した鍵はそのまま使えます。ただし保存したホスト鍵 (openssh の known_hosts 相当) のフォーマットに互換性が無かったため、初回のログイン時に警告が出るかもしれません。
    • その他、細かい bug fix などをいろいろ含むようです。
    • 0.63 から最新までの変更点のうち、画面表示のタイミングのみ 0.63 相当に巻き戻しています。(最新版では、たとえば大きなファイルを cat すると、描画がスクロールしていくのではなく、しばらく固まったのち最終状態のみ表示してしまうので。そのほうがいいという方もいると思うので、将来的に選択できるようにしたい)
  • この機会に付属ツール類について、あらためて。実行ファイルが生成できる程度にはベースの変更に追随していますが、動作を充分には確認していません。以下、オリジナルとの差異になりますが、
    • pscp : オリジナルそのまま
    • psftp : 変更点は .ini ファイル対応のみ
    • puttygen : 変更点は日本語化のみ
    • puttytel : putty.exe と同程度の変更
    • plink : .ini ファイル対応のみ
    • pageant : パスワード保存機能追加
    • pfwd : ごった煮版独自の plink 改変ツール、plink の変更に追随してない
    • plinkw : ごった煮版独自の plink 改変ツール、plink の変更に追随してない
    これらのうち、特に pfwd/plinkw については、セキュリティについて充分に検討されていないうえ、動作に不具合があったとしてもこちらで対応できる可能性は低く、そもそも動作は全く確認しておらず、今後も付属するべきか検討中です。
2014/10/02 修正内容
  • ADB接続が使えなくなっていた
  • オリジナルの r10281 に追随
2014/09/10 修正内容
  • ホスト鍵が ECDSA の場合にクラッシュすることがあった。旧バージョンでホスト鍵を取得していた場合、警告が出るかもしれません。
2014/09/09 修正内容
  • ECDH 鍵交換に対応 (詳細は こちら)
  • i386 版の puttygen.exe がクラッシュしていたのを修正
  • ECDSA をホスト鍵の優先順位の上位へ
2014/09/02 修正内容
  • 本家の r10214 に追随。主な内容は、セッション共有に対応(設定は Connection->SSH に。openssh の ControlMaster 的なものです。Reconnect 機能と衝突があるかも)。マウスイベント関係の修正。細かいバグフィックスなど。問題があって巻き戻したパッチもあります。
  • ECDSA 鍵認証に対応 (詳細は こちら)
2013/08/07 修正内容
  • ベースのコードを 0.63 に変更。
  • "This is a SECURITY UPDATE. We recommend that _everybody_ upgrade, as soon as possible." とのことなので、とりあえずコードを merge して build したものを公開します。ただし、動作や SECURITY FIX の影響などは未確認です。独自改変部分に FIX すべき部分があるかどうかなどは、追って調査する予定です。
2013/03/06 修正内容
  • ベースのコードを 2013/02/25 頃の svn 9752 に変更。hmac-sha2-256 に対応したようです。
  • OSC シーケンスの 104, 110, 111, 112 に対応しました。
2013/03/04 修正内容
  • 文字コードが設定できなかったのを修正
2013/03/01 修正内容
  • ベースのコードを 2013/01/24 頃の svn 9752 に変更。 多数のバグフィックスや改善の他、 機能追加として SGR(1006) 拡張マウストラッキングへの対応があります。
  • ベース側で内部的なコンフィギュレーションの保持方法を大きく変更したため、こちらの変更量も大きめです。追随しきれず、設定が保存されない・反映されない不具合があるかもしれません。過去に発生していた設定関係のトラブルも仕切り直しです。
  • ごった煮版由来の付属ツール類は、実行ファイルが生成できる程度にはベースの変更に追随していますが、動作は確認していません。以下、ごった煮版とオリジナルの差異になりますが、
    • pscp : オリジナルそのまま
    • psftp : 変更点は .ini ファイル対応のみ
    • puttygen : 変更点は日本語化のみ
    • puttytel : putty.exe と同程度の変更
    • plink : .ini ファイル対応のみ
    • pageant : パスワード保存機能追加
    • pfwd : ごった煮版独自の plink 改変ツール、plink の変更に追随してない
    • plinkw : ごった煮版独自の plink 改変ツール、plink の変更に追随してない
    パスワード保存機能を持つ pageant と pfwd や、plink の(セキュリティ修正を含むかもしれない)変更に追随していない pfwd と plinkw は、特に注意が必要でしょう。
  • SztupY 氏の Android Debug Bridge 対応 を、Marijuana 氏の GDI 版対応 を参考にして取り込みました。ありがとうございます。
  • OSC シーケンスの 4, 10, 11, 12 (それぞれ色番号指定、文字色、背景色、カーソル色の設定と取得) に対応しました。色の取得に対しては rgb:rrrr/gggg/bbbb 形式で返します。最近の emacs は、いくつか条件がありますが、このエスケープシーケンスによって背景色を取得し、色のテーマ(dark or light)を自動的に設定するようです。なお、こちら に詳しい解説があります。
  • OSC シーケンスの 52 (Windows 側クリップボードの内容の設定と取得) に対応しました。たとえば tmux の中でコピーした文字列を自動的に Windows のクリップボードへ反映させることが可能になるなど便利に使える可能性がある一方、ユーザーが意図しない間にクリップボードの内容を読み出したり改変したりすることも出来てしまうため、セキュリティ的に危うくもあります。このためデフォルトでは (最大 0 文字まで許す、という形で) 機能しないようになっています。変更するには、Terminal -> Features の中の、Clipboard modify/query の数字を設定してください。約 1500 バイト相当の文字数 (base64 エンコード時に約 2000 文字) まで有効です。なお、こちら に詳しい解説があります。
2012/02/11 修正内容
  • ヘルプファイルがあると設定画面でエラーが発生したのを修正
  • ALT-Space が常に有効になっていたのを修正
  • Windows XP で Glass 系効果を選ぶとクラッシュしていたのを修正
  • Windows XP で Wallpaper 設定の Desktop が機能しないバグは未修正
2012/01/30 修正内容
  • Hideki EIRAKU 氏の PuTTYjp の更新に追随しました。引き続きお世話になります。
  • なお、PuTTYjp は UNIX/旧 Windows 用や Mingw でのコンパイルにも対応したパッチ/バイナリになっていますが、こちらのものは Windows XP SP2 以降用で Visual C コンパイルにのみ対応しています。
  • Yoshida Masato 氏の SURROGATE PAIR & IVS パッチを取り込みました。これは素晴らしい。ありがとうございます。
  • Bracketed Paste Mode に対応しました。使用例は、Tera Term の vim からの制御シーケンスの使用例 をご覧ください。
  • ごった煮に含まれていた壁紙機能を、完全に新しいものに置き換えました。壁紙種別が 4 種類、背景効果が 3 種類、透明度は 2 つあります。壁紙の配置は、Windows 7 準拠の方法が 5 種類、基準位置は 3 種類 × 3 種類の組み合わせで可能です。解説は準備中。
  • これで多くの方の希望に沿った背景設定が可能になるのではと期待しています。ただ、関連する設定も含めて組み合わせの数が非常に多いため、動作チェックしきれていない部分があるかもしれません。仕様として機能しない組み合わせや、直感に反する描画結果となるものもありますが、知識不足で修正方法が分からずに放置した部分や、描画速度が低下しているケースもありそうです。もし機能より安定性が重要ということであれば、よりオリジナルに近い上記サイトのバージョンのご利用も、検討ください。
  • 追記(2011/01/31): 余計な putty.lng が含まれていたため、zip を差し替えました。
2011/12/29 修正内容
2011/07/13 修正内容
  • PuTTY 0.61!
2011/07/06 修正内容
  • xterm/bitmap背景で起動時にクラッシュしていた問題を修正
2011/06/11 修正内容
  • x64 環境で pageant が機能しないことがある問題を WinSCP に倣って対処
2011/06/02 修正内容
  • Ignore characters の設定変更が正しく有効になっていなかった問題を修正
2011/06/01 修正内容
  • ソースコードのマージミス修正
2011/05/30 修正内容
  • ベースのコードを 2011/05/20 頃の svn 9169 に変更。主要な機能追加は Windows 7 のジャンプリスト、可変幅フォント、delayed compression への対応ですが、前二者について、ごった煮や大元の日本語化と整合しない部分を適当に処理したため、不具合があるかもしれません。
2011/01/07 修正内容
  • ハイパーリンクの表示の誤りを修正
2010/11/29 修正内容
  • ベースのコードを 2010/11/29 頃の svn 9020 に変更
2010/08/28 修正内容
2010/08/02 修正内容
  • ハイパーリンクの抽出が、かなり恥ずかしくバグっていた(表示のみバグっている箇所がまだありますが、近日修正予定)
2010/08/01 修正内容
  • マウスカーソル下ハイパーリンクのアンダーライン表示を改善
  • ブラウザ起動のデフォルト設定を Ctrl + クリックに変更
  • 64 ビット版で実行不能なものがあった
2010/07/13 修正内容
  • マウスで領域選択中にクラッシュすることがあった
2010/07/07 修正内容
  • ハイーパーリンクに対応
  • -ini オプションが効いていなかったのを修正(コマンドラインオプションの最初に指定しないと無効なのは同様)
  • コンパイラを Visual Studio 2010 に変更(putty.exe のみ PGO あり。なくても 2008 の PGO あり並の速度は出る)
2010/06/30 修正内容
  • ベースのコードを 2010/06/15 頃の svn 8965 に変更
  • 2ch Putty その2 930 氏の pfwd パッチを適用
  • putty.exe 以外のバイナリを同梱(ただし起動チェックすらしていない)
  • オリジナルからの差分ファイルに変更
2010/04/07 修正内容
  • ベースのコードを 2007/04/29 の putty 0.60 から 2010/03/20 頃の svn 最新に変更
  • 64ビット版の実行ファイルを同梱
2009/10/24 修正内容
2009/03/09 修正内容
  • ガイド付き最適化(PGO)ありでコンパイルし直しました。たとえば巨大なテキストファイルの cat で 20% 弱の高速化が見込めるようです。数十の putty を立ち上げて tail -f しているような人には意味があるかも、という程度の差ですが。
  • パッチの内容に変更はありません。
2008/12/13 修正内容
  • 不適切な wcwidth.o が link されていたため、 一部の文字の幅が正しく取得できていませんでした。 修正にあわせて wcwidth.c を 最新版 に差し替えました。
  • ウィンドウ位置を記憶する patch で、 初期位置が画面左上隅になっていました。 Milly のメモ さまの指摘に従い、Windows の標準的な動作に修正しました。
  • 付属の patch を適用してバイナリを生成するには、 Milly のメモ さまの指摘にあるように依存関係を自力で解決してください。すいません。
2008/02/05 修正内容
  • 初出