des 2019/09/06 19:56

(9/10追記有)【小ネタ】ウディタでコマンドプロンプトを操作するCSVファイルを生成する

追記(9月10日)

本文に誤りがありましたので訂正いたしました。
謹んでお詫び申し上げます。



出せるネタが無いのでゲームとは関係の無いタイトルどおり小ネタです。
「ウディタで」とは書きましたが、ファイルを出力できるツール類なら何でも可能です。というかここまでまどろっこしい事をする必要はありません。

前提となる解説は下記の記事を読んだほうが早いのでまずはこちらを。

覆された常識、CSVファイルでウイルス感染 - 日経 xTECH 2018/05/30 05:00
https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00001/00535/

仕組みとしてはExcelがダウンロードされているPCは初期設定だとCSVファイルはExcelで開かれてしまう事を利用し、悪意のある関数等が書き込まれたファイルを開かせてどうのこうのするという手法らしいです。
この挙動は何かに使えそうという事で、ネット上に公開されていた電卓を起動するサンプルコードをお借りして試しに起動させてみました。

サンプルコード

DDEAUTO {C:\Windows\System32\cmd.exe}
=cmd|'/C "calc"'!a2

※1行目はDDE関数を用いてコマンドプロンプトを開くコードなので変更不可。→必要ありませんでした。(9月10日修正)
※/Cを/Kにするとコマンドプロンプトを表示したままにできるので確認時は少し楽です。

と、確かに電卓が起動しました。
ちなみにこのコードにある「"calc"」はsystem32内にあるファイル名を表していると思われます。(一部開かないファイルがあるので不確定)
ですので、以下のように変えるとsystem32内の別ファイルを起動できます。
(例)
"notepad":メモ帳
"mspaint":旧版のペイント
"control":コントロールパネル
"dxdiag":DirectX 診断ツール
"Taskmgr":タスクマネージャ(挙動が怪しいので使わないほうがいいかも)

もう少し踏み込んでsystem32外にあるファイルを指定します。

サンプルコード

注意:原因は分かりませんがCookieが破損する事があります。(1敗)
DDEAUTO {C:\Windows\System32\cmd.exe}
=cmd|'/C "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"'!a1


このファイルを開くとGoogle Chromeが立ち上がります。
気合で弄ってたら開くようになったので理由は知りませんが、ファイルパスを直接指定すると開くようです。

ここからが本番で、CDBにコードを書き込んでcsvファイルで出力します。
まずコモンイベントを雑に作ります。


※1行目はデータ名が入るので!a1を!a2に変えておく。
単にcsvファイルにするだけならtxtファイルとして保存する機能を用いてもできますが、保存先の利便性の都合で今回はCDBを使います。

テストプレイで起動し実行

できました。

という訳でゲーム面で使う機会のない小ネタでした。

最後に一言。
csvファイルをExcelで開く時は気を付けよう!

追記(9月10日)

ADV170021 | Microsoft Office の多層防御機能の更新プログラム - Microsoft 最終更新日 : 2019/08/13
https://portal.msrc.microsoft.com/ja-jp/security-guidance/advisory/ADV170021
さらに調べた所1年ほど前のアップデートで対策パッチが配布されてました。

おまけ

拡張子をxlsにして出力してもなぜか動きました。
txtファイルと互換性があるんですね……。

フォロワー以上限定無料

追記(今回の内容に関連した過去記事の補足)

無料

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索