Eiji James Yoshidaの記録

パケット作りが趣味のセキュリティ技術者の記録(2006年9月6日執筆開始)。当ブログはGoogle AnalyticsとAmazonアソシエイトを利用しています。

VMware ESXiにクリップボード経由でバイナリファイルを転送する方法

最初に書いておくけど、凄く強引で面倒な方法なので全然実用的じゃない。ネットワーク経由で転送する方が確実だし楽なので、そちらをお勧めする。
さて、なんとなく想像はついていると思うけど、要はcertutilコマンドなどを使ってバイナリファイルをテキストファイルに変換して、その内容をクリップボード経由で転送するだけ。

バイナリファイル → テキストファイル → クリップボード経由で転送 → テキストファイル → バイナリファイル

注意すべき点はクリップボード経由で転送できるテキストの長さには制限があるみたいで、私の環境では1回に65436バイトまでしか送れなかった。
テキストファイルが大きくて1回で転送できないなら、60KBくらいで分割する必要がある。
Linuxにはsplitコマンドがあるので簡単だけど、Windowsには同じようなことができるコマンドは標準では入っていないので、メモ帳などで開いて適当に分割するしかないかも。
ということで、手順をまとめると下記になる。

  1. バイナリファイルのサイズを少しでも小さくするためにzipなどで圧縮
  2. certutilコマンドなどを使って圧縮ファイルをテキストファイルに変換
  3. テキストファイルが65436バイトより大きい場合は、小さくなるようにテキストファイルを分割Linuxならsplitコマンドで60KB程度に分割)
  4. テキストファイルをテキストエディタで開いて内容をコピーし、ESXi上の仮想マシンテキストエディタを開いて内容をペーストし保存
  5. 分割している場合はテキストファイルを結合
  6. certutilコマンドなどを使ってテキストファイルを圧縮ファイルに変換
  7. 圧縮ファイルを展開してバイナリファイルを取り出す

netcat(nc.exe)程度のサイズなら圧縮してテキストファイルに変換しても60KBに収まるので1回で転送できて楽だけど、1MB以上になると面倒でやりたくないね。