...キーボードを使用して分離されたDOSベースの仮想マシンにファイルを転送する

ユーザーアクティビティをシミュレートして、ファイルを仮想マシンに転送することを検討してください。



すべてのプログラムを備えたDOSオペレーティングシステム(FreeDOS 1.1 / MS-DOS 6.22)を実行している仮想マシンがありますが、リムーバブルメディア、シリアルポートとパラレルポート、ネットワークアクセス、インストールされたゲストアドオンがないとします。 利用可能な唯一のものはコンソールです。



クライアントのマシンからキーボードを介してファイルを仮想マシンにコピーしてみましょう! 仮想ですが:)



キーペーストキーボードエミュレータを使用する場合でも、キーボード上のファイルのコピーは長いプロセスであるため、空き時間を確保して開始します。



試験台



まず、実験用のテストベンチを準備します。

  1. QEMU仮想化ホストおよびクライアント-GNU / Linux
  2. 仮想マシン:

    1. VM「DOS」
    2. VM「Windows XP」(VM「DOS」のクライアントでもあります)


Windows XP仮想マシンへのアクセスは、SPICEプロトコルを介して行われます。 ゲストアドオンがインストールされて動作し、ネットワークにアクセスできます。



DOS仮想マシンへのアクセスは、VNCプロトコルを介して行われます。 追加のソフトウェアはインストールされていません。



Windows XP仮想マシンで、キーペーストプログラムが起動し、入力をエミュレートする準備が整います。 タイピングはオペレーティングシステムで動作を麻痺させるため、DOS仮想マシンのクライアントを仮想マシンまたは別のコンピューターに移動することは正当化されます。



単純なバイナリファイルの作成



DOS VMで5バイトの単純なバイナリファイルを作成してみましょう。各バイトには、その位置に対応する値、つまり16進システムの1,2,3,4,5が含まれています。



次の内容の5.txtファイルを作成します。



 n 5.ビット
 e 0000 01 02 03 04 05
 rcx
 5
 w 0
 q


ここで、最初の行は作成するファイルの名前を決定し、2行目は16進形式のファイルの内容、4行目はファイルサイズを決定します。



デバッグプログラムで処理するためにファイルを送信します



debug < 5.txt







dirコマンドを使用して、ファイルが作成されていることを確認します



dir 1.bit







大きなファイルを転送する準備



デバッグでは、最大64 KBのバイナリファイルのみを作成できます。 大きなファイルを作成するには、電子メールで使用されるBase64エンコードを使用します。 DOSには、デフォルトでBase64エンコーディングを操作するツールがないため、base64エンコーディングを操作するプログラムとmd5チェックサムをチェックするプログラムをコピーします。



まず、md5sumプログラムをコピーして、16進表現を使用してmd5チェックサムを確認します。



Linuxでは、hexdumpプログラムを使用して、デバッグプログラムに転送するためのファイル準備を作成します。



hexdump -v -e '"e %04_ax "' -e '10/1 "%02X "' -e '"\n"' md5sum.exe > md5sum_.hex







出力では、フォームの内容を含むファイルを取得します。

 e 0000 4D 5A 73 01 3C 00 01 00 02 00
 e 000a F1 0F FF FF 66 12 00 50 00 00
 e 0014 00 00 00 00 00 1C 00 00 00 0E 00
 e 001e 74 07 B9 80 3B BE FE 76 89 F7
 e 0028 1E A9 B5 80 8C C8 05 05 00 8E
 e 0032 D8 05 FC 0A 8E C0 FD F3 A5 FC
 e 003c 2E 80 6C 12 10 73 E7 92 AF AD




コマンドを使用してmd5sum.exeファイルのサイズを数える



ls -l md5sum.exe







その結果、「30579」という番号が取得されます。 この数値を10進数から16進数に変換すると、「7773」という数値が得られます。



空白およびファイルサイズの情報を使用して、 ソースファイルを作成し、デバッグプログラムを使用してバイナリファイルを作成します。



「Windows XP」VMでファイルの操作性を確認します。



debug < md5sum.txt







ファイルがコンパイルされます。 md5sum.binファイルの名前をmd5sum.exeファイルに変更し、md5sum.exeファイルのチェックサムの計算を試みます。



md5sum.exe md5sum.exe







チェックサムが計算され、一致します。



これで、ファイルをDOSに転送し、チェックサムを確認できます











同様に、 base64.exeファイルをコピーします。





大きなファイルをコピー



大きなファイルをコピーしてみましょう。 例として、RIT-labsのDOS Navigatorディストリビューションを取り上げます。 次のコマンドを使用して、配布ファイル「dn151.zip」をBase64形式にエンコードします。



base64 dn151.zip > dn.b64







同様に、unzip.exeファイルをパックします



base64 UNZIP.EXE > unzip.b64







DOSでのテキストエディターの編集は大きなテキストファイルを消化するのが非常に難しいため、splitコマンドを使用してファイル「dn.b64」を3500行のファイルに分割します。



split -d -l 3500 dn.b64 dn







コマンドの結果として、ファイル「dn.00」、「dn.01」、「dn.02」および「dn.03」を取得します。



編集とキーボードを使用して、結果のファイルをDOSにコピーします。 ストリームリダイレクトを使用して、4つのテキストファイルを1つに結合します



タイプdn.00 >> dn.txt
タイプdn.01 >> dn.txt
タイプdn.02 >> dn.txt
タイプdn.03 >> dn.txt




base64を使用して結果ファイルをデコードします

base64 dn.txt dn.zip







アンパッカーをデコードします。

base64 unzip.txt unzip.exe







DOS Navigator配布パッケージのアーカイブを解凍します

unzip -e dn.zip -dc:\dn







解凍後、「DOSナビゲーター」コマンドを開始できます。

c:\dn\dn







おわりに



この実験の結果、キーボードエミュレータを使用して大量のテキストを転送し、DOSの下でもファイルを仮想マシンにコピーすることを学びました。 一見すると、クリップボードと対話してバイナリファイルを作成する手段が含まれていないように見えます。



ファイル転送プロセスは非常に遅くなりますが、一方では機能し、緊急事態や妄想状態で使用できます。 キーボードを介したファイルの実際の転送に進む前に、特別に準備されたCDからテキストファイルをコピーできます。



使用したソフトウェア:






All Articles