ooooooo_qの日記

脆弱性の話とか

最近の活動

昨年12月から2月ぐらい

12月

  • json dayでXSSの話をしたかったけどあまりできなかった
  • 2,3日に一度はXSSを見るようになった
  • XSS幾つか報告した

1月

2月

  • 寒いのと忙しいのであまり動けず
  • webmailサービスのXSS報告した

12月から1月の上旬ぐらいまでが一番色々調べてていたのだけど、まだまとめてなかったり書けないことがあったりする状態。

去年の時点では、今年の春ぐらいからは脆弱性関連そんな触らなくなって可視化の方にシフトしていく気だったのだけれども無理そう。

最近の活動

ここ三ヶ月ぐらい色々してた記録です。

9月

  • json dayでXSSの話をした
  • scalaに入学した
  • XSS見つけた

10月

  • XSS報告した
  • XSS探す
  • isucon3に参加して予選落ちした
  • XSS見つける
  • XSS報告した
  • 紙のパンフレットを見た時に、頭のなかでデベロッパーツール立ち上げようとするようになる

11月

  • XSS探す
  • XSS見つける
  • サイボウズにのりました http://cybozu.co.jp/specialthanks.html
  • サイボウズセキュリティチャレンジに参加したけど何も見つけられなかった。
  • XSS探す
  • IPAに報告した
  • こたつをだした

12月

XSS探す(予定)

code school

code school http://www.codeschool.com/

 code schoolからThe Fundamentals of Designってコースが出来た、というメールが来ていた。 以前からサイトに登録はしていて、いつかそのうちやりはじめようと、ずっと思っていたのでこれを機会に始めてみた。ちょっと前に週末だけ無料だった時もあったけど、忙しかったので。

code school

 githubと共同でtry gitなどを作っていて有名なプログラミング学習サイト。英語のみ。 言語仕様やそのフレームワークが中心で、アルゴリズムやブール演算についてなどのプログラミングの基本的な部分はない様子。(コース少ししかやってないで多分だけど。) 基本的にweb系(ruby,js,css&html,ios,他)の言語のコースが用意されていて、各コースの最初の部分は無料で試せる場合が多い。

 学習系の中でも、デザイン、UIが凝っている方。ブラウザから擬似的なコンソールやエディタへ入力して、そのコードが正しければ次へ進む。ゲーミフィケーション的にポイントやバッジもある。 bacbone.jsやCoffeScriptのコースではなぜか歌が流れる。

入力画面サンプル

f:id:ooooooo_q:20130803115241j:plain

コースごとにインタフェースのデザインが違う。上の画像はCoffeScriptのコース。

料金

 前述の通り、無料で幾らかはできるけども全部のコースやるには課金が必要。 月$25。今回課金した。なぜか$5の割引チケットを持ってたので$20。随分前にtry gitをやった時にもらったらしい。今は表記が見えないので割引はないのかもしれない。

 確か去年は各言語ごとだったかでいくらって決まってて、クリアすると割引チケットもらえる仕組みだったはず。 今は言語ごとで縛らず、月いくらになって安くなってる。

経過

 CoffeScriptのコースクリアした。

 かかった時間は2時間前後ぐらい。CoffeScriptの事前知識はゼロではなかったので、時間は人によって前後すると思う。 CoffeScript、Object?keyなど、短いコードかけてやはり良い。たまに混乱するけども。

designのコースはちょっと触った感じでは中々難しい。本当に最初しかやってないけれど、こういった分野の文章にはどのフォントがいいかとか問題が出た。文化背景知らないとハードル高いのではと思う。勘+トライアンドエラーで答えている状態。

現在の状態。まだちょっとしかやってない。

f:id:ooooooo_q:20130803114210p:plain

 アルゴリズム、というかプログラミングの本当に基礎的なことを学びたいならCodecademyのほうかまたはKhan academyだろうか、他にも今は色々有りそう。(Codecademyのコースでjsで普通にforでよいだろうというところをひたすら再帰で解く問題があった。今は知らない。)

今月中にjsとgitは終える予定。おそらく。

テストが通ったらニャーと鳴く

そんなmochaのレポーターを作ってみた。要するに保存するたびにテストしてニャーニャー言う。

node.jsから音声ファイルを再生する。

play.jsを使えればよかったのだけど、手元の環境では動かなかった。 仕方ないのでコマンドラインからなんとか再生できないか調べてたら、powershellからならいける様子。

というわけで書いてみた。

var exec = require('child_process').exec, script;

// Use COM objects to get filesystem information
script = '$c = New-Object Media.SoundPlayer(\'ファイル名\');$c.PlaySync()';

exec('powershell.exe -Command "' + script + '"', function(err, stdout, stderr) {
  console.log(stdout);
}).stdin.end();

でいけた。windows vista以降であれば、たぶんこれでできる。

参考

reporter書く

nyancatのreporterを参考にしながら、jsで書いていく。 成功時にnyaaa.waveを再生し、失敗したらnyeee.waveを再生する。

nyaaa.js

var exec = require('child_process').exec;

exports = module.exports = Nyaaa;

function Nyaaa(runner) {

  runner.on('pass', function(test){
      console.log('pass');
      play('nyaaa.wav');
  });

  runner.on('fail', function(test, err){
      console.log('fail');
      play('nyeee.wav');
  });

  runner.on('end', function(){
      console.log('end');
  });
}

function play( filename ){

  var script = '$c = New-Object Media.SoundPlayer(\''+__dirname +'/sounds/'+filename+'\');$c.PlaySync()';
  var command = 'powershell.exe -Command "' + script + '"\n';

  exec(command, function(err, stdout, stderr) {
    console.log(err);
  })
  .stdin.end();
}

参考

にゃーをつくる

猫の鳴き声の音声ファイルを作る。 手元に猫がおらず、また野良猫は目を合わせると大体逃げられるのでCeVIOさんに代わってもらった。 CeVIO(チェビオ)は文章を読み上げてくれてwavファイルで出力できる。元気いっぱいや悲しいといった感情を指定できる。

f:id:ooooooo_q:20130523201824p:plain

こんな感じのGUI

にゃーとそのまま入力すると求めてるものと、なんか違うなーという気分になる。読み上げ用のソフトだから、あまり猫っぽくはない。 にゃあああもにゃゃぁもなど試してみたが、結局「にゃあー」にして話すスピードを下げるのに落ち着いた。 成功時は元気いっぱいにし、失敗したときは悲しげにしてみた。

参考

ファイル配置

node.jsのモジュールがインストールされている場所を調べる。

>npm -g bin
C:\Users\ユーザ名\AppData\Roaming\npm
(not in PATH env variable)
/npm/node_modules/mocha/libs/reporters/
    ...
    nyaa.js
    ...
    /sounds
        nyaaa.wav
        nyeee.wav

ファイルをこんな構成で配置。reportersの中に作ったファイルを入れてやれば動く。 だけれどwavパス指定などにつまづいて、ここら辺調べるのに結構手間取った。

実行

mohca --reporter nyaa --watch ファイル名

これでファイルを更新するたびにニャーニャー鳴いてくれる。

やってみると、起動時からにゃーとなくまで2,3秒あるがちゃんと再生される。 テストが2,3個の時は、ほぼ同時に再生されるので合唱したように聞こえて、失敗が混じっていると不協和音になるので気づく。 10~ぐらいになってくると、再生されるタイミングがずれてくるのでにゃーにゃーいうようになる。

nyancatのレポーターってどうかかれてるんだろうという好奇心と、cevioいじって楽しかったのが混ざった結果こうなった。 mochaに自作のreporter追加してnpmに登録なんてこともできるようなので、もうちょっとちゃんと書き直したらやってみるかもしれない。