Ikeda->Weblog();

Ikedaの徒然雑記。

[思考メモ] スマフォのキャリアがどこの国かを判断する

| 0件のコメント

[] スマフォのキャリアがどこの国かを判断する備忘録というより思考メモ。

しかもあくまで推測という、ブログエントリには甚だ相応しくない内容で申し訳ない。

お題目「どこの国で使われているのか判断したい。」

しかも「できるだけ偽装しづらい方法で」。

 

ikedaの思考の流れ (-ω-)

  • 日本だとDoCoMoやau、SoftBankなどの通信キャリアがあり、これはUSER_AGENTで判断できる。しかしUSER_AGENTは簡単に偽装可能。 (´ε`;)うーん
  • ネイティブアプリであれば、そのスマフォのSIMに焼き込まれた情報にアクセスできる。 (-ω-)ふむ
  • SIMにある「Operator ID」がキャリアごとに割り当てられた世界共通のID。 (・∀・)お?
  • これで判断できるんじゃね? ワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ
 

Operator IDってのは

International Mobile Subscriber Identify(IMSI)の一部らしい。Wikipediaによると、

International Mobile Subscriber Identity(IMSI、「イムズィ」と発音)は、GSMおよびW-CDMAの全ての携帯電話ユーザーに割り当てられている一意な識別番号。携帯電話内のSIMカードに格納されており、その電話からネットワークに送信される。
(中略)
IMSIは通常15桁だが、もっと短い場合もある(例えば、南アフリカのMTNではかつて14桁のIMSIを使っており、その頃の携帯電話が今も使われている)。最初の3桁は Mobile Country Code (MCC) で国を表し、それに事業者を表す Mobile Network Code (MNC) が続く。MNCは北アメリカでは3桁、ヨーロッパや日本では2桁である。

おおおお、まさにドンピシャなコードが!ということで、MCCについてGoogle先生にお伺い。

すると、ITU(International Telecommunication Union/国際電気通信連合:電気通信に関する国際標準の策定を目的とする国際連合の下位機関)の資料に「LIST OF MOBILE COUNTRY OR GEOGRAPHICAL AREA CODES」なるPDFが!

この中に


438 Turkmenistan
440 Japan
441 Japan
450 Korea (Republic of)
452 Viet Nam (Socialist Republic of)
454 Hong Kong, China
455 Macao, China

あった━━━━(゚∀゚)━━━━!!

 

ついでにMCCの取得

AndroidであればTelephonyManagerにgetSimOperator()という、そのものズバリなメソッドが。コイツはMCC+MNCの5~6桁なコードを返却するので、これの先頭3文字を切り出してやればOKじゃないかと。

で・・・・iOSはどうなんだろう。。。SIM情報なんかにアクセスしてるとREJECTされそうな気がするけど^^;;;

コメントを残す