こわいわーJavaScriptこわいわー
なんか最近「Coinhive」って言うウィルス的サムシングの話題が世間を騒がせているそうなので、僕もそれについて便乗して何か書こうと思って筆を取ってみました。
まあプログラムの話とか僕よくわかんないので法律の話でもまずはしていこうと思います。件の事件で争点となる部分は実はお金に関することでなく、「正当な理由がないのに人の電子計算機(PCなど)で意図しない動作をさせる不正な指令を与えた」みたいなのが争点になります。
(不正指令電磁的記録作成等)
第百六十八条の二 正当な理由がないのに、人の電子計算機における実行の用に供する目的で、次に掲げる電磁的記録その他の記録を作成し、又は提供した者は、三年以下の懲役又は五十万円以下の罰金に処する。
一 人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせるべき不正な指令を与える電磁的記録
二 前号に掲げるもののほか、同号の不正な指令を記述した電磁的記録その他の記録
2 正当な理由がないのに、前項第一号に掲げる電磁的記録を人の電子計算機における実行の用に供した者も、同項と同様とする。
3 前項の罪の未遂は、罰する。
要するに「コンピュータウィルスを作った・使ったよね?」が争点になってるわけです。んでんで、もっと突っ込んだ話をしますと意図しない動作をさせる"不正な指令"とはなんぞやの解釈がこの事件の核心みたいになるわけです。現段階での刑罰に当たるコンピュータウィルスの定義がふわっとしているので解釈をいくらでも広げることが可能なわけですね。
で、今回利用された*1JavaScript (JS) はWebで広く使われている言語で画面の動きの制御とかを担っています。目に見える部分、見えない部分にかかわらずですね。そこで「不正な指令」ってのを拡大解釈されてしまうと迂闊にJavaScriptつかえないじゃんアゼルバイジャンってなことにもなっちゃう可能性がでちゃうわけです。だから、こうしたマイニング広告は認めたくないけど擁護はするみたいな派閥が生まれたりするわけなんです。
まあ、ざっくりですがまとめますと素人は安易にJSに手を出してはいけないってことです(二重の意味で)。
さて、そういったお堅い話は有識者の方にまかせるとしましょう。そんなどうでもいい話よりアホなツールつくったんで良かったらどうぞ。
こんなんできた
そうしたわけで今話題のウイルス作成言語で意味もなく負荷を与えるボタンをつくりました。
軽めのジョークツールですが一応注意書きを……。万が一ボタンを押してPCがヤバそうだって感じたら本ページを閉じて対処してください。
以下、ソース
<button onclick="Omoi()">クリックすると開始</button> <script> var Omoi= function () { console.log('開始'); var omo = []; var Omoifunc = function(){ for(var i = 0; i< 1000000; i++) { omo[i] += omo[i]*omo[i]; console.log('実行中...'); console.clear(); } } Omoifunc(); } </script>
Omoifunc()
とかいう頭悪そうな関数名実は結構気に入ってる。処理自体は重そうな意味のないループを回しているだけです。
余談
ちなみに件のCoinhiveジョークコンテンツとしてこんなのができているようですよ。
GitHub - renyamizuno/point-hive: 冗談だってマジになんなよ
ところで、これを取り上げている某記事。この辺りを赤枠で囲ってジョークだからって書いてあるんですけど、多分ここだけ切り抜いて指摘されてもジョークかどうか分からないと思うの僕だけですかね……。
const miner = new Coinhive('AS89asdfASDF8fjjaeiig0239458J!'); // this site key
miner.start();// 20秒ぐらいほったら満足やろ
setTimeout(miner.stop, 20000);
実際に判断する場所こっちなんじゃないかなって……。
class Cointhive {
~略~
__run () {
if (!isWorker) {
console.log('mining!!!');
}
// 足し算したい
for(let i = 0; i< 1000000; i++) this['?'] += i;
}
}
*1:言語を争点とすると論点がずれると思うけども僕がオチにJSというワードを使いたいから言語が問題であるかのように書きます