sekai013's blog

JavaScriptとかを勉強する

KSNCTF #3 Crawling Chaos

問題

ksnctf - 3 Crawling Chaos

考えたこと

指定されたページに飛んだらフォームがあったのでとりあえずクリックしたら NG って言われたので、ソースを見たら異常な script タグがあった。

<script>
(ᒧᆞωᆞ)=(/ᆞωᆞ/),(ᒧᆞωᆞ).ᒧうー=-!!(/ᆞωᆞ/).にゃー,(〳ᆞωᆞ)=(ᒧᆞωᆞ),(以下略)
</script>

うーにゃーというのは這いよれニャル子さんというアニメのやつで、JavaScript ではなさそうだけど、type 指定されてないので、JavaScript っぽい。顔文字をコードに置き換えてるのかなぁという気がした。
No.2 がノーヒントで解けたのでノーヒントで解くぞと思って調子に乗ってたけど、Chromium の Developer tools で30分くらい粘ったけどわからなかったのでググった。
KSNCTF のヒント書いてるページを見つけたのでチラっと見た。

ksnctfに取り組んだ話 - ichirin2501's diary

気合いが足りないらしい。もう30分くらい粘ったけど何も得られなかったのでググった。
Firefox を使えというようなことを見たので、Firefox に切り替えたら2秒でもとの JavaScript っぽいのが見つかった。時代はFirefox!!Mozilla最高!!!

// 出てきたコードを勝手に整形した
$(function(){
    $("form").submit(function(){
        var t=$('input[type="text"]').val();
        var p=Array(70,152,195,284,475,612,791,896,810,850,737,1332,1469,1120,1470,832,1785,2196,1520,1480,1449);
        var f=false;

        if(p.length==t.length){
            f=true;
            for(var i=0;i<p.length;i++)
            if(t.charCodeAt(i)*(i+1)!=p[i])
                f=false;
            if(f)
                alert("(」・ω・)」うー!(/・ω・)/にゃー!");
        }
        if(!f)
            alert("No");
        return false;
    });
});

これくらいの JavaScript なら読めるので、答え出してくれるやつを、せっかくなので JavaScript で書いた。

https://github.com/sekai013/ksnctf/blob/master/crawling_chaos/crawlingChaos.js

走らせたらそのまま旗出てきたので通したら合ってた。

思ったこととか

Firefox 神!! Mozilla 最高!!!
いろんなツールあるんだから1つで詰まったら別のを使っていきたい!!! Chromium でもなんとかならないか頑張ってみたい!!

KSNCTF #2 Easy Cipher

聞いたことはあるけど意味は知らない言葉だった CTF, 気まぐれでググってみたら面白そうだったので

CTF初心者: 社会人のための趣味CTFまとめ

この記事を参考にして, ksnctf というのをググり倒しながら遊んでる。CTF 知らない人は気まぐれでググってみよう。
飛ばし飛ばし30番くらいまで解いたので、復習を兼ねてメモしていくので、もっと効率よく解けるとかこれはこのページが参考になるとかあったら教えてください。なんでもします。

問題

ksnctf - 2 Easy Cipher

以降には解き方に関わる記述があるので知らない人やったことない人はまずCTFでググって、興味を持ったらこのページを閉じよう!!!

考えたこと

えっこんな訳のわからん文だけで何をしろとかの指示もないのか(ドン引き)

初めてなので面食らったけど、問題文読んでるとスペースで区切ってくれてるし、 EBG, KVVV, yrggre, gur, SYNT とかが何回か出てきてるので、こいつらは単語で、アルファベット1文字が別のアルファベットに対応してるんだろうという気がした。換字式暗号とかカエサル暗号とかいうやつ。

特に怪しいのが SYNT で、これは絶対 FLAG だろと思ったので、とりあえず変換したらこうなった。

EB4 KVVV v1 a 1vzclr lr44re 1ho14v4h4vb3 pvcure 4ua4 erclapr1 a lr44re jv4u 4ur lr44re KVVV lr44re1 af4re v4 v3 4ur alcuaor4. EB4 KVVV v1 a3 rkazclr bf 4ur Par1ae pvcure, qrirlbcrq v3 a3pvr34 Ebzr. flag v1 flag1jmgkOW1aZdjkkaH. V31re4 a3 h3qre1pber vzzrqva4rl2 af4re flag.

s, y, n, t はそれぞれ f, l, a, g に変換、
もとの f, l, a, g はそれぞれ 1, 2, 3, 4 に変えてある
いろいろあって変換した文字に関しては大文字小文字を区別していない

これで問題文を読むと、最後から2番目の af4re は絶対 after だろって気がしてきたので
(4 -> t), (r -> e), (e -> r) の変換しようと思ったけど、 4 っていうのはもとの暗号文中の g だし、いままでの変換が正しいなら g と t, r と e をそれぞれ入れ替えてるので, 他のやつも全部入れ替えるだけなんじゃないかという気がしてきたので、入れ替えてくれるコード書いた。

https://github.com/sekai013/ksnctf/blob/master/easy_cipher/easy_cipher.rb

どんどんスワップしていったらこんな感じになった。

ROT XIII is a simple letter substitution cipher that replaces a letter with the letter XIII letters after it in the alphabet. ROT XIII is an example of the Caesar cipher, developed in ancient Rome. Flag is ***********. ****** ****** ***** ****.

ここで、さっき書いたコードで Caesar のスペル間違えてることに気付いて急いでコミットしなおした。

アルファベット入れ替えただけどころか、全部13文字分ずらしただけのROT13という暗号らしい。見たことある気がするけど覚えてなかった。

ROT13 - Wikipedia

旗入力したら通った。

思ったこととか

換字式暗号はドイルの「踊る人形」とかポーの「黄金虫」とかにもうちょっと難しいやつが出てくる。

www.221b.jp

エドガー・アラン・ポー Edgar Allan Poe 佐々木直次郎訳 黄金虫 THE GOLD-BUG

知ってたからノーヒントで解けたという感じでラッキーだった。

IPSJ 2015 3日目

バイトした。

セッション5: セキュリティなんとか

セキュリティっぽい話だった。

攻撃されたっぽい時に、通信ログとアプリケーションログを自動で関連付けてどの通信が悪いのか特定する手法の提案とか、
機械学習を用いてメールの中身を見ずにスパムを高い精度で見つける方法の提案とかがおもしろかった。

セッション4: グループウェア一般

曖昧なセッション名なので、特に関連ない講演がぶちこまれてるその他枠かと思ったらそのとおりだった。

twitter クライアント + 地図 みたいなアプリケーションを作って、そこから観光情報をつぶやくと地図にアイコン表示されて、その情報を共有できるみたいなアプリケーションの話とか
東京工科大学の学内ポータルで採用されてる JavaScript ライブラリと Java サーブレットの話とか、
同じく東京工科大学で、学生がプロジェクト管理するのに使う用の Web アプリケーションの話とかが面白かった。
コードからプレゼン資料、ホワイトボードを写真とった画像とか何でもかんでも詰め込んで置いておくらしい。何でもかんでも置くの微妙じゃない?と思ったけど、その雑多さを解決するための独自の検索システムの話もあってよかった。

JSとJavaのライブラリはオープンソースだそうです。
github.com また今度読みたい。

セッション4はいい講演が続いてたんだけど、ちょっとヤバそうなおっちゃんがいて、なんとなく不安だったけど、やっぱりやばくて、
おっちゃん講演者だったんだけど、「俺が株で決済手続きが遅れて損したのはハッキングだ陰謀だ」とかいうことと、どこどこ大学のだれだれ先生は〜〜みたいなことを唐突に切り替えながら話してて、とにかく異常だった。
情報処理学会にもう10年位きてるみたいなことを言ってたので、絶対になんとかしたほうがいい。
論文の原稿は英語だったけど、スライドは自己紹介だけ英語で、次のページから唐突に日本語出てきてなんじゃそらってなった。
よくわからん英語の論文読みたくないのはわかるけど、多分論文も異常だと思うし、ちゃんと読んで審査してくれ。

感想

全日程働くと流石に消耗した。頭痛いし寒気もする。
あと、もともと腰痛持ちなのに、大学のクソみたいな椅子に3日間座り続けたせいで異常に腰が痛い。
3日間座り続けるって大学に通ってれば普通なのでは?という気がしたけど気のせいっぽい。
大学の椅子が全部アーロンチェアになったら大学行きます。

でもまあ面白い講演も多かったし、学会ってこんな感じなのかっていうのも分かったしいい経験になったと思う。
あと情報処理学会ジャンパーもらった。よかった。 3回生までは無料で聴講できるらしいので、ちゃんと勉強して来年も気が向いたら行きたい。

異常につかれた。ねる。

IPSJ 2015 2日目

今日もバイトした。

セッション3: 高度交通システム

カーナビとかのおかげで自動車内でもいろんな情報が入ってくるようになったけど、それに気を取られて事故ると困るから、 HUD を含めたいろんなディスプレイに適切に情報を出したり、今主流になってるタッチディスプレイではなくて、簡単なハンドジェスチャーとかで操作できたりすると運転に集中できるとかいう自動車内の UI の開発の話とか
ETC つけてない違反を取り締まりづらい大型車をどうやって効率よく摘発するかみたいな国交省の人の話とか
電車の遅延が発生したときにユーザが知りたい情報を簡単にわかりやすく伝えるためのアプリケーションの UI 開発の話とかを聞いた。
めちゃくちゃ考えて UI が設計されてるというのがわかってよかった。他にも面白い講演が多かったけど、噛みまくり詰まりまくりで質問されても答えられなくて上司が代わりに答えるみたいな人もいた。
ほとんど上司が作ったスライドをそのまま読んだだけです〜みたいな印象を受けた。流石にひどかった。

特別講演

13時からの特別講演を見たいと思ってたけど、セッション3終わったあとで会場で話してる人たちがいて、邪魔するのは悪いと思ってたら30分くらい残ってくれたので見れなくなったけど、本部に戻ったら講演のニコ生の配信がスクリーンに映ってたので見てた。
途中から見たのと、音小さかったのとであんまりわからなかったけどすごそうだった。AR の話だった気がする。

セッション4: システムセキュリティと認証

セキュリティ全然わからないけど楽しそうだし興味あるので楽しみにしてた。
POODLE attack 後の SSL/TLS 移行状況みたいな話がめちゃくちゃ面白かった。説明もわかりやすいし話もうまいし講演者のレベルが違うという感じだった。
20日にイベントあってもうちょっと話をするとのことだったので全然わからんけど行ってみようかなという気分になった。(調べてみたけどイベント見つからなかった。もうちょっと調べたい。)

あとはパスワードを一括管理するクラウド型のサービスの話とか聞いた。もうちょっと話聞いたり質問したりしたかった。

セッション4にして圧迫学会というかなんというか、講演者にイチャモンをつけて黙らせないと気がすまないみたいな座長にあたった。
「私はそれはちょっとわかりませんね」みたいなことを言ってたけど、事前知識ない俺でも分かったこともあったし、iPhone でメール読みながら聞いてたらそらわからんやろという感じだった。
話聞いてて座長自身が知識とかある人なのはわかったけど、う〜んという感じだった。

感想

知らないことしかないけど、いろんな話を聞けて面白い。バイトとしても悪くない。もっと勉強して来年以降とか、他のイベントにも行きたいという気分になってきた。

働いてちょっと思ったのは、セッション2の座長も facebook, twitter, LINE, Gmail とかやりたい放題だったし、こういう人間に限って、一番良かった講演を答えてくださいみたいなのに答えなかったり、なかったとか言う。まあ聞いてないんだから答えられんよなと思った。
一方ちゃんとしてる人ももちろんいて、なんというかいろんな人間がいるなあという感じだったけど、良くないと思う。

あとは、論文のコピーを50部くらい講演前に講演者に渡すということになってるんだけど、ほとんどの講演者はそのまま持って帰ってしまうので、講演者に渡すより参加者に配るとか入り口に置いておいて自由に取ってもらうとかしたほうがいいと思う。
講演者も自分の論文の別刷り渡されても仕方ないと思うし、聞く方も資料見たいと思う。なんとかなってほしい。

IPSJ 2015 1日目

情報処理学会第77回全国大会に学生バイトとして参加している。
運良く雑用とか待機ではなく会場のスタッフになったので講演を聞いてた。

担当会場のセッション1のテーマは災害で、災害発生時に現実世界にあるリソースにうまいことタスクを割り当てて、被災状況などの緊急時必要な情報へのリクエストをさばく研究とか、災害によるサーバデータの破損を防ぐために近所のサーバにバックアップ取るとき、 OpenFlow を使った SDN で、そのとき流れてる他のパケットとかを考慮して動的に最適なルーティングをする研究とか、回線状況が不安定なとき、オフラインではブラウザキャッシュのデータベースにデータを保存して、オンラインになったらデータを自動的に送信することでデータをロストしないような災害時用の Web アプリケーションの研究とか見てた。
災害発生時は人命とか重要データをロストしないために不安定な回線状況でもなんとかまともなパフォーマンスを出さないといけないということと、あとは現場の人たちが使えるいい感じの UI が重要という話が多かった。
1つ毛色が違ったのがドライブシミュレータ中で津波を再現するっていうのがあってこれはこれで面白かった。

セッション2はマルチメディアって名前だったけどまあなんでもありという感じだった。
車がインターネットに接続してファイルを DL するとかいう場合(例えばカーナビの画像とか?)、車の近くの設備(RoadSideUnit) に負荷が集中してしまう問題を、ファイルを DL してない車はもうファイルを DL し終わった近所の車にキャッシュされてるファイルを DL するっていう手法で RSU 負荷を20%くらいにしてデータロスも99%カット出来たみたいな発表とかを見た。
スマートデバイスから何千とかのモデルでできてるリッチなものを見るとき、従来の MVC アーキテクチャだとレンダリングの負荷が大きすぎて端末が死ぬ!!っていう問題を解決するために、サーバサイドでデータを画像化してクライアントに送るっていうサーバサイドレンダリングっていう話は JavaScript ライブラリとして実装しているらしくて、聞いてても HTML5 とかの知ってる言葉が出てきてなるほどという感じになった。
他は端末間をいったりきたりするプログラム、モバイルエージェントというのを知った。90年代に盛り上がって特許取られてお通夜だったのが2013年に特許切れてまた盛り上がってきたらしい。昔はクローズドなネットワークで使う予定だったらしいけど、今は事情が変わって、オープンなネットワークで使えないといけないけど、デバッグむずくなるからそのための標準化仕様を考えてるみたいな話を聞いた。全然知らない話だったけど面白そうだった。

1日目は全セッション終了後に懇親会があって、バイトは無料だったので参加した。
料理は全然足りてないのに小さい丸テーブルに各ビール瓶10本とか置いてあって、片手が開いてると日本酒かワインを渡されるみたいな感じで、ミスって飲酒した。
ワインは初めて飲んだけどまずかった。

バイトとしては話聞いて酒飲んでるだけでお金もらえて最高だった。学会のバイトならまたやってもいいかという気分になった。

情報処理学会第77回全国大会は 3/18・3/19 もやっているので暇な人は適当に来ましょう(´・ェ・`)ノ

情報処理学会第77回全国大会

Livetube Notifier v1.4.1 公開しました

Livetube Notifier - Chrome Web Store

変更点

  • ワード一覧タブの配信者名、タグをクリックすると対応した配信者、タグページに飛べるようにした。 使ってたら飛んで欲しくなったので飛べるようにした。

  • タグの大文字小文字を区別しないようにした。 らいつべのタグページが大文字小文字を無視してることに気付いたので従った。 配信者名では区別されているようなので、配信名、配信者名については区別するままです。

アップデートするたびに前のいろんな仕様を思い出して、改善されてる感が出てきていい。
使ってるとやっぱりこっちのほうがいいなとか出てくるのでそういうのは直していきたい。

Ruby でディレクトリ構成をファイルに出力するCLIアプリケーション書いた

sekai013/tree · GitHub

使う予定は全くないけどあったらなんとなく便利な気がしたし、練習と思って書いた
普通にこのコマンドでできるよみたいなのありそうな気もしたけど何も考えずに書いた
とりあえず動いたけどカスみたいなコード書いてるのわかりながら書いてたので直していきたい

tree path filename で path で指定した先のディレクトリの構造を filename として出力する
指定しないとそれぞれ pwd , 'directory_structure.txt' を指定したことになる
$HOME/.treeignorenode_modules とか .git とか中のファイルをいちいち列挙してほしくないディレクトリ名を書いておくと中は見ないようにして今日は力尽きた ひたすら眠い

f:id:sekai013:20150313234450p:plain