Article #407

既に発行済みのブログであっても適宜修正・追加することがあります。
We may make changes and additions to blogs already published.
posted by sakurai on May 27, 2021 #407

受信したデータは以下の図に示すように、一文字4bitのデータが連続する、VRAM内容を示すログデータです(右側を一部省略)。

図%%.1
図407.1 受信データ(部分)

VRAMデータ4bitの意味は以下のとおりです。

  • bit3: バリケード(シールド)=非画像情報
  • bit2: R=画像情報
  • bit1: G=画像情報
  • bit0: B=画像情報

従って、非画像情報を無視し、次のPHPにより画像フォーマットであるPPMに変換します。

log2ppm.php

 <?php
   print "P3\n256 256\n255\n";
   for($y = 0; $y <= 255; $y++) {
       $line = readline("");
       for($x = 0; $x <= 255; $x++) {
           $ch = hexdec($line[$x]);
           if (($ch & 0x4) != 0) echo '255 ';    // R
           else echo '0 ';
           if (($ch & 0x2) != 0) echo '255 ';    // G
           else echo '0 ';
           if (($ch & 0x1) != 0) echo '255 ';    // B
           else echo '0 ';
       }
       echo "\n";
   }

上記をフィルターとして実行し、ログデータを画像ファイルに変換します。

$ php log2ppm.php <putty.log >putty.ppm

生成されたファイルを画像処理ツールであるgimp2で開くと以下のように正常に受信されています。

図%%.2
図407.2 受信画像

以上で、ゲームのメモリダンプ機能がひとおおり完成しました。ゲームの状態を吸い出したのは、これをオートエンコーダによりCNNに認識させるのを目的としています。


左矢前のブログ 次のブログ右矢

Leave a Comment

Your email address will not be published.

You may use Markdown syntax. If you include an ad such as http://, it will be invalidated by our AI system.

Please enter the numbers as they are shown in the image above.