
産経新聞(iPhone版)というのがあります。
これは無料で産経新聞が紙の紙面の構成のまま読めるというとても便利なアプリです。
今回、暇だったので、WireSharkというバケット解析ソフトでiPhoneのウェブとの通信を盗聴?してみました。
バケット解析の結果、産経新聞アプリを起動するとまず、決まったURLにアクセスする。ここには最新の紙面の情報があるxmlのURLが書いてある。
http://www.sankei.co.jp/netview/iphone/current_edition.xml
<CurrentEdition Root="2010_04_10_i" XMLFileName="2010_04_10_i.xml"/>
上のxmlを見て、この日の新聞の何面にどの情報が書いてあるかとかの情報を得る。なんかxmlだと新聞社のウェブサイトよりとてもセマンティックって感じ。
http://www.sankei.co.jp/netview/iphone/2010_04_10_i/2010_04_10_i.xml
<Edition Newspaper="iphone" Name="2010_04_10_i" Date="2010/04/10" Version="1.01" FrontPageURL="" PageWidth="38" PageHeight="51.5"> <Sections> <Section Name="総合" Index="3"/> <Section Name="国際" Index="4"/> ... </Sections> <Pages> <Page ID="12984" XMLLocation="pages_xml/page12984_netviews1958.xml" PageNumber="1" ThumbnailURL="thumbnails/page1.jpg" Section="総合"/> </Pages> </Edition>
次は上のxmlからページの画像の格納されているURLを示すxmlにアクセスする。
http://www.sankei.co.jp/netview/iphone/2010_04_10_i/pages_xml/page12984_netviews1958.xml
<Pages ID="12984" PageTitle="" PageNumber="1"> <LevelImages Level1Partitions="1" Level2Partitions="2" Level3Partitions="4" Directory="pages_images/page12984_netviews1958/" FileType="jpg" BasePixelWidth="372" BasePixelHeight="504"/> <Articles/> <Regions/> <RichMedias/> <Titles/> <Links/> </Pages>
実はこれでもうすべての画像データにアクセスできるようになった。
まず、画像データの基本のURLは
http://www.sankei.co.jp/netview/iphone/2010_04_10_i/pages_images/page12984_netviews1958/lv1_0_0.jpg
である。
あとは末尾のファイル名を変えればよい。
下にファイル名と内容を一覧にしてみた。
| ファイル名 | 内容 |
|---|---|
| lv1_0_0.jpg | ページ全体 |
| lv2_0_0.jpg | ズームした左上 |
| lv2_0_1.jpg | ズームした左下 |
| lv2_1_0.jpg | ズームした右上 |
| lv2_1_1.jpg | ズームした右下 |
| lv3_0_0.jpg | もっとズームした左上 |
| lv3_0_1.jpg | もっとズームした中央 |
| lv3_0_2.jpg | もっとズームした右上 |
| … | … |
| lv3_3_3.jpg | もっとズームした右下 |
なるほど。ズームのレベルに応じて3つのファイルに分けてるんですね。
というわけで、これを利用すれば別にiPhoneアプリ使わなくても産経新聞がPC上で読めるアプリも簡単に作れそうですね。
ウェブアプリとかも作れそうですね。
ここらへんもっとちゃんとガードされてるのかと思いましたが、意外に寛容でした。
まぁどう考えても著作権的にアウトなので、そんなことする人はいないと思ってるんでしょうね。
パスワードはないにしてもアプリによる正規のアクセスかどうか認証する*2ぐらいはすればいいのにという気はします。
まぁそういうのが一切ないので不正アクセス防止法とかにはひっかからないはず。
パケット解析のおもしろさがわかる(?)、産経新聞のiPhoneアプリはどういう仕組み?っていう話でした。
結局書いちゃった。
これでいいのか!産経さん!紙面データダダ漏れですよ!(PHPで紙面を得てみる) - konisimple log

産経新聞のiPhoneアプリのパケット解析してみた - konisimple logに書いたのはお遊びでした。
でも実は産経新聞は紙面データで金とってるそうです!→||| 産経NetView |||
産経さん、今の状態だと10行ぐらい*1コード書くだけで簡単に紙面見れちゃいますよ!
これでいいんですか!?
そんなわけないだろ、というひとのために実際にかいてみました。
例えばPHP使える環境があるなら下のファイルを置くだけで見れちゃう。
かなりセキュリティ甘いのではという気がするのですがどうなんでしょう。
しかも,過去のデータも見れちゃうんですね。どこまで古い奴までみれるかは調査してないけど、割と古いのも見れる。
こんな感じで普通に見れちゃいます。以下のファイルをsankei.phpとか名前をつけて保存するだけ。
しかも上の画像ではサムネだけだけど、実は原寸大で普通に読めるレベルの解像度です。
<?php $date=$_GET["date"]; if(strlen($date)==0 OR !checkdate($date[5].$date[6],$date[8].$date[9],$date[0].$date[1].$date[2].$date[3])){ $url1="http://www.sankei.co.jp/netview/iphone/current_edition.xml"; $xml1=simplexml_load_file($url1); $date=substr($xml1->attributes()->Root,0,10); } $url2="http://www.sankei.co.jp/netview/iphone/{$date}_i/{$date}_i.xml"; $xml2=simplexml_load_file($url2); foreach($xml2->Pages->Page as $item){ $html.="<h2 id='p{$item->attributes()->PageNumber}'>{$item->attributes()->PageNumber}面 ({$item->attributes()->Section})</h2><div>"; for($i=0;$i<=3;$i++){ for($j=0;$j<=3;$j++){ $url="http://www.sankei.co.jp/netview/iphone/{$date}_i/"; $url.="pages_images/".substr($item->attributes()->XMLLocation,10,22); $url.="/lv3_{$j}_{$i}.jpg"; $z=0.7; $w=372*$z; $h=502*$z; $html.="<img src='{$url}' width='{$w}' height='{$h}'>"; } $html.="<br>"; } $html.="</div>"; $thumb.= "<a href='#p{$item->attributes()->PageNumber}'><img src='http://www.sankei.co.jp/netview/iphone/{$date}_i/{$item->attributes()->ThumbnailURL}' width='182' height='252'></a>"; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"> body{margin:10px;} div{margin:0;} h2{margin:0 10px;border-bottom:1px dotted #000;padding:5px;} </style> <title>俺専用産経新聞</title> </head> <body> <h1>俺専用産経新聞 </h1> <form>日付指定(YYYY_MM_DD形式):<input type="text" value="<?=$date?>" name="date"><input type="submit" value="見る"></form> <h2><?=$date?>の目次</h2> <?=$thumb?> <?=$html?> <p><a href="http://d.hatena.ne.jp/konisimple/">konisimple log</a> <a href="http://twitter.com/koni">@koni</a> <p>2010/4/11 04:59ver </body> </html>
さすがにこのファイルを公開するのは怖いからしないけど、簡単に再現できちゃうはずです。
ソースの展開
$ mkdir hybrid_wl
$ cd hybrid_wl
$ tar xzf <ダウンロードしたパス>/hybrid-portsrc.tar.gz
コンパイル
$ make clean (初めて実行する際は不要)
$ make
もし b43-fwcutter をインストーしていたら削除
$ sudo apt-get remove b43-fwcutter
ドライバーモジュールをインストール
$ sudo make install
$ sudo echo "blacklist ssb" >> /etc/modprobe.d/blacklist.conf
$ sudo echo "blacklist b43" >> /etc/modprobe.d/blacklist.conf
$ sudo depmod -a
XPとLinuxのデュアルブートにすることに。選んだOSは最近何かと話題性のあるubuntu。何はともあれライブCDを作って、PCの下準備。
元々、うちのノートPCは二つのパーティションを作ってて、それぞれ20GBと30GB。うち、30GBのパーティションを管理ツール使って削除して空き容量を作りました。
そして、ライブCD突っ込んでBIOSからCDでブート。しばらくしたら、インストール画面が出てきます。ほとんどは、地域の設定とかだけなので淡々と選
んでいけばいいのですが、5番目くらいに出てくるインストール方法については、慎重に「最大の連続した空き領域を使う」の項目ををチェックします。普通に
インストールしてしまうと、XPが完全になくなってしまいます。