何故C#だったのか?に関して
昨日Visual Studio(以下VS)の登録の件を紹介したが、登録自体は行われていたということで大勢に影響は与えなさそうだ。多分VSをダウンロードした際に一緒に登録も行ってしまっている可能性が高いと考えられる(そうしないと「後○日」というポップアップが出てしまう)。
ただ、検察側の主張ではVSのダウンロードや登録なども南青山の派遣先でやっていたことになり、業務外の開発をよくやれたものだと改めて感じる。
さて、VSを見てみた機会にC#の方も再検討してみた。
被疑者が「C#できるか?」という点は、本事件で被疑者が逮捕されてすぐの頃から大きな論点になっていた。
被疑者がiesys.exeを作成したとすると、「何故普段使っているJavaではないのか?」、またウィルス作成に使われているのはC++が多いとのことで、「何故一応知識があるというC++で作らなかったのか?」という疑問が当初から出されていた。
比較表の各言語について説明を行う。
使用する場合は別途ロードする必要があるが、一般の人は殆ど入れていない。
トロイのように不特定の人にロードさせて動かす場合は、Javaで書いても動くPCが少ないのは致命的であり、この点で選択から外れる。
Windows用業務アプリケーションを書く感覚に近くなるだろう。
そうした時に参考になるサイトがネット上にはあって、今回のトロイもサンプルプログラムを流用していることが、以下のシマンテック社解析記事で報告されている。
<作成者との暗号化通信の処理に使われる文字列が日本語で書かれており、コードは日本語の Web サイトから取られていることも判明しました。>
記事中の「図 1. コード中に見つかった日本語」で引用されているプログラムコードが記載されているのが以下のサイである(ページの下の方にあり)。
”パスワードで文字列を暗号化する”
< //パスワードから共有キーと初期化ベクタを作成する
//saltを決める
byte[] salt = System.Text.Encoding.UTF8.GetBytes("saltは必ず8バイト以上");>
このサイト(「dobon」さんが運営しておられる)はC#の参考として非常に良く出来ていて有名なサイトである。
つまり、犯人が参考にしたサイトにはC++のサンプルコードは載っておらず流用できない。
しかも、このサイトから「暗号化」という本来ややこしい機能のサンプルコードを流用出来ており、他にも隠しwebブラウザなども流用しているようなので、これがなければ犯人はもっとずっとトロイ作成に手間取っただろうと考えられるぐらい重要になる。
(当方も利用させて頂いているので、非常に役立つ素晴らしいサイトであることはよく知っている)
よって、C++は使用する必要がなく、かつ重要なプログラムがある参考サイトには載っていないのだから、これも選択から落ちることになる。
(文法の違いは余り気にならないという人もいるようだが、普通は一系統の方がやりやすいだろう)
・C#…以上からC#が消去法的に割りとすんなり残ることになる。ただそれだけでなく、MicrosoftがJavaの代替的な位置づけを与えているソフトで、Windowsとの親和性がよく使いやすい言語でもある(当方も使用)。
よって無難かつ有効な選択と言って良いと思われる。
つまり、「何故C#で他の言語ではなかったのか?」という問いの答えは、ポイントとなる項目を把握すると簡単な比較によって容易に出るということである。
ただ、ソフト技術者はそれぞれが一家言をお持ちと思うので、以上の整理はあくまでも当方のごく個人的見解とさせていただく。
なおC#について書いたので、「C#できるか?」についても、以前に当ブログで記したのは5月23日で時間も経っていることもあり、別の観点を含めて明日書いてみようと思う(こちらは容易に結論は出ないと思うが)。
以上