2006年11月27日
バグ無しWILLCOM端末用CSID取得鯖
最近プログラミング関係のネタが多いのですが、今日は特別濃いです。
WILLCOMの基地局ID(CSID)を集めるのが一部で流行っています。
やり方は主に2種類あって、一つはPC,PDAなどと繋いで AT@K20 コマンドで取得します。W-ZERO3 などでは便利な方法ですが、京ぽんにPCを繋いで・・・となると大掛かりになってしまいます。
もう一つは京ぽん単体で取得するもの。好都合なことに、古い京ぽんではバグがあって、CSIDがダダ漏れなので取得しやすくなってます。
バグが無い今の端末でも、プロキシをゴニョゴニョすることでCSIDを取得出来ちゃいます。
詳しくは 電測スレなどを参照のこと。
さて、ボクは京ぽん2を使っていて、プロキシをゴニョゴニョしているんですが、はっきり言って面倒くさい。電測するときと、フツーにネットサーフィン(死語)するときとで設定を変えなきゃいけないのは面倒。どうにかならねーものか。
原理的にはプロキシを制限無くワールドワイドにアクセス可能なようにしてしまえば端末側で設定変更する手間が無くなる。だが、多くの電測erの方々のトラフィックを1台のプロキシでさばくのは無理があるだろう。そのためか、電測以外のサイトに接続しようとすると認証画面が出るようになっている。(おそらく、鯖を立てた本人だけは認証を通して楽しているものと思われる。)
なんか抜け道無いかなぁ? と、いろいろとググって仕組みを調べてじっくり考えてみた。
もしかして、DNSを騙して何とかなら無いかな?
キモは loc.clubh.ne.jp である。やることは3つ。
・loc.clubh.ne.jp のフリをするウソ鯖をでっち上げる。
・loc.clubh.ne.jp を引いた時だけ、ウソ鯖のIPを答えるDNS鯖を立てる。
・端末のDNSサーバの設定に、ウソDNS鯖を指定する。
幸いなことに、京ぽん2のダイヤルアップ設定の中にはDNSサーバを指定するところがある。
コレを普段のネットサーフィン(死語)に常用されると、DNS鯖に負荷が掛かるわけだが、プロキシに比べたら屁の河童(死語)だろう。
ホンモノの loc.clubh.ne.jp がやっていることは端末が送ってきたCSIDから緯度経度に変換することである。だが、ウソ鯖でそれをやるのは無理だ。知らないCSIDは 0.00.00.000 で返しちゃえ。ホンモノでもそうなる場合があるので、それが原因で端末側が暴走することは無い。たまたま知っているCSIDなら緯度経度を返してやろう。これで、自分の行動範囲(電測されている範囲)では地図サイトなども利用可能だ。
もちろん、そのついでにCSIDを横取りする。
CSID(HTTP_X_CS_INFO)の値の受け渡しをどうしようか悩んだが、http://location.request/dummy.cgi?my=〜 のパラメータに $HTTP_X_CS_INFO があったらそこを置き換えるようにしてみた。変ちくりんだけど、まあいいや。
そして完成したのがコチラ
当然、PCからでは正しく動作しないので注意。WILLCOMで試す場合は、DNSサーバに 61.197.193.30 を指定すること。
このエントリーのトラックバックURL:
http://weblog.rukihena.com/mt/mt-tb.cgi/617