はまちやリバースエンジニアリング
http://hamachiya.com/junk/mms.html
mixiミュージックのサービスが始まったと思ったら、はまちちゃんがまたろくでもないことをしでかしたみたいなので(w)ソースを覗いてみた。(ソースは最下部に掲載)
- 基本はprototype.jsでXMLHttpRequestを生成しているだけなのだけど
- JavascriptのXMLHttpRequestはクロスドメインなリクエストは受け付けない
- IEだとセキュリティの設定をごにょごにょするとクロスドメインなリクエストが出来てしまう罠・・・
function login()
- リクエストはmixiミュージックのエンドポイントに出している
-
- var url = 'https://upload.mixi.jp/music/login.pl';
- リクエストヘッダを書き換えている
- requestHeaders : ['User-Agent', 'mmm/v0.1 (by glucose)'],
- これ以外のヘッダをもったリクエストは弾かれるようになってるみたい
- パスワードとメールアドレスを一緒に載せてPOSTで送ると、セッションIDが返ってくるので正規表現で抜き出して値を保持しておく
-
function upload()
- 曲データーをXMLとしてアップロード用のエンドポイントに送信するためのリクエスト生成
- var url = 'http://upload.mixi.jp/music/upload.pl';
-
- リクエストヘッダを書き換えておく
- requestHeaders : ['User-Agent', 'mmm/v0.1 (by glucose)'],
- さきほど取得したセッションIDをクエリパラメーターの中に含めておく
- var param = 'session_id=' + document.getElementById('session_id').value + '&data=' + document.getElementById('data').value;
- リクエストヘッダを書き換えておく
function updateTimestamp()
- timestampタグの値を更新する
- ?timestampタグの更新によって再生回数をカウントするのかな?
- はまちやスクリプトを使うとtimestampを任意の期間でガンガン更新できるので、こんなイタズラができてしまう とみた。
- ?timestampタグの更新によって再生回数をカウントするのかな?
- 送信しまくる => 変なランキングの出来上がり
流れはこんな感じです。案外簡単な実装でできてしまう迷惑ハックですね(笑)リバースエンジニアリングというほどのものじゃないな・・・
で気づいたんだけど、
-iTunesで2秒とか3秒とか短い秒数の曲を用意する
- その曲のタイトルを「ぼくはまちちゃん!」アーティストを「はまちや2」と書き換えておく
- ひたすらリピート再生する
としちゃえば同じイタズラが出来てしまうんじゃないかと思った。どうなんだろね。案外脆弱な物かも。
*mixiミュージックのクライアントソフトは三分間ごとぐらいに再生している曲をチェックするみたい。それでtimestampを更新したXMLを吐き出してるんだと思う => だからtimestampをいつでも書き換えられるはまちやスクリプトがワルもの ということになる。
iTunesの曲データーはXMLで管理されていて、データは恣意的に書き換え可能ですよね。ユーザーのほとんどは曲データーをデータベースから自動取得していると思うけど、中にはこんなイタズラをする人もいるでしょう。ユーザーが変てこなデーターを送信してもmixiサイドにはそれが妥当な物かどうかチェックすることはできないから、いたずらロジックを組んだ「はまちちゃん!」がランキングのトップにあがってしまうという事態が起こっちゃう。
(サーバサイドの実装がどんなんかは知らんので、推測でしか話できないけど・・・)
基本的にユーザーを疑わない性善説的なやり方なんだなと思いますた。
まぁ mixiミュージックが無料公開されて、膨大なデーターが送られてくるようになれば こんな少数のイタズラも陰に隠れしまうでしょうね。そうなるべきだし。
追記:
mixiへ送るXMLはiTunesのXMLからそのまま引っ張ってきているのだと思っていたら、全然違った。iTunesフォルダの「iTunes Music Library」は下記のような構成で曲情報を管理していました。
どこかでXMLを変換してるんだろうけど、mixiのクライアントソフトがやってるのかしら?そもそも再生中のiTunesをたたいてメタデータを取得するってどうやるんだ。分かりません。
追記2:
http://blog.bulknews.net/mt/archives/001247.html
こんなんあるみたいです。情報どうも!
39 Track ID 39 Name SANTA CLAUS IS COMING TO TOWN Artist Bill Evans Album 25 EVANS -VERVE (Disc1) Genre Jazz Kind AAC オーディオファイル Size 4293201 Total Time 266795 Disc Number 1 Disc Count 2 Track Number 4 Track Count 14 Date Modified 2006-04-03T23:46:16Z Date Added 2006-04-03T23:45:56Z Bit Rate 128 Sample Rate 44100 Play Count 2 Play Date -1064047920 Play Date UTC 2006-05-19T12:36:16Z Persistent ID BE7F7BFEC30F524B Track Type File File Type 1295270176 File Creator 1752133483 File Folder Count -1 Library Folder Count -1
以下、はまちちゃんのJavascriptソース