アンタイ・フォレンジック妖怪の独り言

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

Google Geolocation

WiFiアクセスポイントを使って位置情報を取得する WPS(Wi-Fi Positioning System)を Google も提供してて、Android 携帯などでも使われている?みたいですね。
他にも WPS としては iPhone で利用されている Skyhook Wirelessess のサービスがあったりしますし、国内でサービスを展開している会社もありますね。
とはいえ、GoogleWPS で使う WiFi アクセスポイントの収集方法やカバー範囲に関する情報を記載しているページがみあたず、どうやって情報を収集しているのかちょっとわかりません。
API 的には GeolocationAPI を利用することで可能だそうで、Wifi-Id data elements の項目で Google 側に送信するデータについて記載があります。

GeolocationAPI
http://code.google.com/p/gears/wiki/GeolocationAPI

Google Gears のサンプルページとしては、Cirius Lab さんの Web とかで試すことができます。Google Gears のインストールが必要ですが、WiFi のアクセスポイントのデータを利用して位置情報を確認できます。*1

GearsClientLocationAPITest
http://lab.cirius.co.jp/index.php?GearsClientLocationAPITest

XML 形式でデータ送信がされるみたいですので、試しに手元のアクセスポイントのデータがどう扱われているのかを、Fiddler を使って HTTPS の内容を確認してみたところ、以下のデータが Google に送信されていることが確認できました(MAC 値などは適当に変更しています)。ちなみに、ym21browser を使ってアクセスしたらクラッシュしちゃいました(笑)

"wifi_towers" : [
{ "mac_address" : "00-11-22-33-44-55",
"signal_strength" : -70, "ssid" : "port139" }

んー、何故に SSID を送信しているんですかねぇ...API の記載では Required は No になっていますが、分かる場合(PCがアクセスポイントに接続済みの場合とか?)には自動的に送信しちゃうってことですかね。
SSID は AP 側の設定で隠しているつもりだったりするんですが、この辺りを調べるのは興味のある人にお任せするということで。
そもそも GoogleSSID 情報を収集して何に使おうというのか謎ですが、とりあえず送っちゃうみたいですねぇ...ユーザー側では止められないみたいだし。

さて、WiFi アクセスポイントの MAC アドレスを送信すれば、位置情報を返してくれるわけですが、GoogleWPS では Google 独自のデータベースを使っているのか、それとも Skyhook のような別会社のを使っているのか興味あるところです。
Skyhook はパーサープログラムで任意の MAC アドレスから位置情報を引っ張れるのですが、Google Gears 用のはない*2ので、かなり適当にテストした感じだと、以下のような雰囲気で、Google と Skyhook では異なるデータベースを使っているみたいです。

一つの MAC アドレスを Skyhook に送信して得られる位置情報と、Google Gears から得られた位置情報を比較すると、位置情報が一致しない。
Skyhookでは位置情報が戻らない MAC アドレスでも Google Gearsでは位置情報が戻る場合がある

他の会社のを使っている可能性もありますが、Google Grars で示すポイントが道路とかになるのを勝手に妄想*3すると、ストリートビューの撮影時に一緒に集めているんですかねぇ(根拠なし)。

*1:WiFiの情報がない場合には、IPアドレスベースでの位置情報を戻してくるみたいですが

*2:どなたか作ったらぜひ教えてください

*3:そもそも他のも収集方法から考えると道路になるんぢゃね?