2013年6月7日金曜日

「G-Call 050」のSIP情報を抜く方法

「G-Call 050」のSIP情報の抽出に成功しました。これで「G-Call 050」を好きなSIPクライアントで使うことができるようになります。

これにより、専用アプリが弱い「G-Call 050」の弱点がすべてなくなりました。

これでやっと断言できます。
「スマホで使えるIP電話は、G-Call050が一番です。」

ここでは「G-Call050」からSIP情報を抜いて、「CSipSimple」を設定するまでを説明します。

「G-Call 050」については、この記事を参照してください。
スマホでIP電話「G-Call050」のすすめ



【SIP情報の抽出】

まずはroot化したスマホが必要になります。これが用意できないと、残念ながらどうにもなりません。
(root化スマホはないけど、どうしても使いたい方はこの記事の一番下をご覧ください。)

手順は次のとおりです。
  1. root化したスマホで「G-Call 050」のバックアップをとる。
  2. 抜き取った設定ファイルをPCに移動する。
  3. SQL形式の設定ファイルからSIP情報を読む。


では、順を追って説明していきます。


[スマホでの作業]

まずはルート化したAndroidに「G-Call050」をインストールします。

インストールした「G-Call050」にユーザIDとパスを入れて、使える状態にします。

アプリ「TitaniumBackup」を使い、「G-Call050」の設定ファイルごとバックアップします。

バックアップされた3つのファイルのうち、拡張子が「.tar.gz」のもの(APKじゃない方)をPCにコピーします。


[PCでの作業]

PCでデータベースを読むために「SQLite Database Browser」をインストールします。(SQL形式が読めれば何でも良い)

先程移動した「~.tar.gz」を解凍します。→「data」フォルダが出てきます。
(「.tar.gz」はフリーの解凍ソフトで簡単に解凍できます。)

「data」内の「SettingsAndTemplates」を「SQLite Database Browser」で開きます。

Table:「PROFILE_SETTINGS」に設定情報が書いてあるので、これをメモします。
必要な情報は次のとおりです。
  • Profile/Account/Domain
  • Profile/Account/UserId
  • Profile/Account/Password
  • Profile/Account/Proxy

    上から順にこのような値です。
    sip.g-call.com
    xxxxxxxxxxxxxxxxxxxx(たぶん20桁)
    xxxxxxxxxxxx(たぶん12桁)
    basix-proxy.brastel.ne.jp
    (「UserId」と「Password」以外は共通です。)

    以上で抜き取りは完了です。これで9割は終了です。



    【CSipSimpleの設定】

    抜き取ったSIP情報を使い、CSipSimpleを設定します。

    サーバ:sip.g-call.com(ポート番号は書かない)
    ユーザ名:xxxxxxxxxxxxxxxxxxxx
    パスワード:xxxxxxxxxxxx
    プロキシ:basix-proxy.brastel.ne.jp:5060

    あとはすべてデフォルトです。
    (設定の最適化は後ほど考えます。)



    【コーデックの選択】

    「G-Call050」の対応コーデックは豊富です。
    次の音声コーデックに対応していることを確認しました。
  • PCMU
  • GSM
  • SILK
  • G.729a
  • speex

    この中から好みのコーデックを選択します。

    これらのコーデックはそれぞれ特徴があり、この場だけでは説明し切れません。
    後ほど「G-Call050の音声コーデック比較」的なものを新規記事で書こうと思います。

    コーデックはスマホのスペックや回線速度によって、どれが適しているかが異なるため、色々と試してみることをお勧めします。

    私はしばらくSILKを使ってみます。



    [6/9追記]

    すみません。対応コーデック間違えました。
    設定ファイル上には「speex」の記載があったのですが、本日録音検証をしていたところ「speex」には対応していないことがわかりました。
    「PCMu・GSM・SILK」では録音までできました。

    しかし、音質に差が出ず再検証中です。
    たぶん、「CSipSimple」の設定によるものかと思っています。

    検証が完了したら、各種コーデックによる音質比較を記事にする予定です。


    [6/21追記]

    「G.729a」に対応していることを確認しました。

    「Acrobits Softphone」を使って音声データを録音したのですが、アプリの質が悪く比較になりませんでした。
    いつか「CsipSimple」で検証したいと思いますが、コーデックG.729aのライセンス料が高いため、躊躇しています。


    [7/30追記]

    「CsipSimple」を使った「G.729a」での検証を行いました。
    スマホでIP電話「各社の音質比較」編(Part2)


    【余談】

    そもそもこの話は2chの「【Skype】Android VoIP/SIP総合 Part3【Viber】」で、ぽっと出た話によるものです。

    「G-Call050」のSIP情報が抜けたというのです。
    唯一の弱点である「専用SIPクライアント」が、これで克服できるのです。

    (余談の余談ですが)これに質問するためだけに、モリタポ2000円分を買おうかと思ってしまったぐらい、私にとっては衝撃的でした。(結局、質問は代行に頼んで書き込んでもらいました。)

    結果、SIP情報の抽出に成功し、「G-Call050」が劇的に使いやすくなりました。

    情報をくれた485氏ありがとうございます。



    【root端末が用意できない人】

    諦めるしかありません。

    しかし、それではあまりに辛いので、root端末を持っている友人を探してください。

    それでもどうにもならない人は、私でよければお手伝いしますので、右メニュー「連絡フォーム」からご連絡ください。(見ず知らずの私にアカウント情報を預ける勇気のある人限定(^_^;) )



    [7/30追記]

    root化端末を使わずに「G-Call050」のSIP情報を取得する方法>を掲載しました。
  • 22 件のコメント :

    1. Jailbreak iPhoneからも抜けました。
      App内のLibrary/Prefenences/com.gap.GCall.plist
      に書いてありました。

      返信削除
      返信
      1. コメントありがとうございます。
        そして、貴重な情報ありがとうございます!

        iOSで優秀なSIPクライアントとなるとAcrobitsでしょうか。

        iPhoneはIP電話について非常に優れているイメージがあるので、試してみたくてウズウズします(+_+)

        iPhone版の情報抜きは、私の知る限り本田さんが初です。
        本当に貴重な情報提供ありがとうございました。

        削除
    2. acrobitsにどうしても設定できません。
      設定をお教え願えないでしょうか?
      csipsimpleはなにもしなくてもdefaultで設定できました。
      どうしても違い発見できません。

      返信削除
      返信
      1. Android版ですが、下記設定だけでつながっています。
        DomainやProxyにポート番号を付けてしまっているとかはありませんか。

        Title:適当
        Username:ooooo
        Password:xxxxxxxx
        Domain:sip.g-call.com
        Proxy:basix-proxy.brastel.ne.jp
        Codecs:適切に選択

        削除
      2. ありがとうございました。portを入れてましたのでそれを外しましたが、ダメでした。
        あれこれやってみると「安全な通話」->SDESを不可にしたら使えるようになりました。
        繋がってみるとすごいです。アプリを終了してもPUSHで着信してくれます。
        050plusなんかよりずっといいです。

        削除
      3. iPhoneは多分、(今のところ)Acrobits以上に良いSIPクライアントはないと思います。

        「G-Call050」最高ですよね。
        本当にケータイを解約しても良いと思えるほどです。

        なお、AcrobitsのAndroid版でのSDES初期設定は
        着信:許可
        発信:禁止
        となっていました。

        削除
    3. 追伸です。
      PanasonicのSIP固定電話KX-UT123でもG-Call050は使えました。
      Ethernetなのでものすごく音質が良くて、遅延がまったくありません。
      イエデンワに最適かと。

      返信削除
      返信
      1. SIP固定電話の発想は面白いですね。
        主要IP電話サービスの中で、G-Call050は抜群のSIPサーバ性能です。

        これならば、確かにイエデンとしても申し分ないです。
        (これは、使い方次第で超便利に化けるかも・・・)

        たぶん、ハード対応のSIPクライアントでの成功例も本田さんが初でしょう。

        本田さんの人柱魂大好きです(笑)
        これからもよろしくお願いします。

        削除
    4. ちょっと面倒ですが、Androidのroot化をせずに、SIP情報を調べることが出来ましたのでご報告します。以下手順概略です。

      1.Google Chromeブラウザの拡張機能、APK Downloader を導入して、Google PlayからG-call050アプリをダウンロードします。

      2.Android SDKを導入し、SDKに含まれる、EclipseでAndroidエミュレータ(Android仮想デバイス・マネージャー)を起動し、エミュレータに、上記アプリをインストールします。

      3.エミュレーター上で、G-call050アプリを起動し、G-call050にログインします。なお、エミュレータ上でG-call050にログインする前に、実際の端末上のG-call050アプリは、一端「認証データを消去」した上で、アプリを終了させておきます。同時に2つの端末からの認証は受け付けないためです。エミュレーターの動きはPCの性能にもよりますが、ものすごく遅いので、トイレに行くなり、タバコを吸うなりして待ってちょうど良いレベルです(もっとかかったかもしれません)。

      4.EclipseのDDMSで、ファイル・エクスプローラーを使って、先ほどG-call050アプリを走らせたエミュレーター(デバイス)を参照すると、「SettingsAndTemplates」まで辿ることができます。直接保存できるので、「TitaniumBackup」を使わなくてもOKです。

      5.エミュレーター上のG-call050アプリの「認証データを消去」して、エミュレーターを終了。

      6.あとは、wertさんの説明通り、「SQLite Database Browser」で設定情報を読み取ります。

      返信削除
      返信
      1. これはすごい!
        これでroot端末を所持していない方も、G-Call050のSIP情報が抜けるようになります。

        簡単に…というわけには行かなそうなので、誰もができるようGoさんの発見を記事にしたいのですが、よろしいでしょうか?(私がわかればですが…)


        貴重な情報ありがとうございました!

        削除
      2. もちろんです!!記事にしちゃってください。

        私が紹介したやり方が簡単かどうかは分かりませんが、私はむしろ、Androidのroot化に挫折しました。ファームウェアのバージョンとか・・

        エミュレーターの方は、PCさえあれば無料で出来るし、root化作業の失敗で文鎮をつくるリスクも無いところがいいですね。

        G-call050については、wertさんの記事をいずれ私のHPでも紹介したいです!

        削除
      3. Goさん

        SPメール以外の通信を遮断すべく、文鎮覚悟でAcroをroot化したのを思い出します。
        それが今になって大活躍です(笑)

        記事化のご快諾ありがとうございます。
        まずは私が理解するところから始めるので、公開はまだ先になると思いますが、これだけ有益な情報なので、極力早めの公開を目指します。

        記事の紹介の件、光栄です。ありがとうございます!

        削除
      4. このコメントは投稿者によって削除されました。

        削除
      5. WeitさんGoさん、おはようございます。
        # ちょっと修正したので前のコメントを削除しましたすみません。

        私、この記事を読んでどうしてもipad-mini, ipodでg-call050を使いたくなったけど、Root化した端末など手元にないので、一か八かemulator経由でやってみることにしました。

        ・g-call050に昨晩登録し、
        ・g-call050アプリを動かすためにAndroid SDKを初めてダウンロード、インストール
        ・Android携帯のDevice IDを知るためAndroid Device IDをインストール
        ・Android Emulatorをどう動かすのか分からず試行錯誤、
        ・APKをダウンロードするためにChromeをインストール
        ・APKダウンローダを入れても、端末をお持ちではないようですと言われて、検索。どうやって解消したのか覚えていない。
        ・APKを落とした後は、どうやってEmulatorに入れて良いのかまた検索、
        ・g-call050アプリを動かした後で、g-callから来たメールでUIDとpasswordを入力して、サーバに接続。これが初接続。
        ・DDMSって何なのか分からなくってまた検索、
        ・Emulator実行中にDDMSを動かさないといけないことに気づくのに試行錯誤
        ・uid/passwd情報を消した後でDDMS動かしてたから、DBファイルが見つからず、
        ・それでも、FileExplorerでSettingsAndTemplatesがどこにあるか分からず、虱潰しに探索、
        ・PC上でEmulatorからSettingsAndTemplatesをコピーして
        ・SQLite DBを見るために、FirefoxにSQLite Managerを再インストール(これだけは経験があった)
        ・必要な項目をコピーして
        ・Ipad-miniでacrobitsを1100円かと少しビビッて購入。動かなかったら。。
        ・UIDなどを設定するも、サーバ接続中のままくるくる回ってる。
        ・設定をメールでipadに送り付けて、乗法をカット&ペーストで入れなおしたら、、、

        自分の携帯に電話できた。。。。。

        本当にありがとうございます。

        ほとんどが未知の作業で困難な道でしたが、成功したのはこのブログのおかげです。
        LinuxとWindowsPCの操作だけは知ってるんですが、それ以外Androidについて何をしなければならないのか全く知らないド初心者としてお役にたつことがあれば協力いたします。
        実働4時間ぐらいで動くとは思っていませんでした。

        削除
      6. kmnkさん

        ipad-mini及びipodでの成功報告ありがとうございます。

        kmnkさんと同じことをしようとしている人もいるはずです。
        そのため、このように報告をして頂けるだけで、十分に協力してくれています。ありがとうございます!

        私もChromeとAndroidSDKで情報取得はできました。(Goさんに感謝です)
        ただ、PCに向かう時間がほとんどなく、記事化できていません。

        今週中には記事にしたいと思います。
        (先の話ですが)間違いがあったら指摘して頂けると助かります。

        削除
      7. wertさん、kmnkさん、こんばんは。

        私のアバウトな説明にもかかわらず、無事に情報取得できて良かったです。
        kmnkさんのコメントを読んで、Android Device IDの取得について説明が抜けていたことに気がつきました。

        ところで、iPhone等のiOS端末をお使いの方など、Android端末をお持ちで無い方は、以下の方法でAndroid Device IDを取得できます。

        1.BlueStacks というAndroidアプリのエミュレーターをインストール

        2.BlueStacks 上でGoogleアカウントにログインし、BlueStacks上でPlayストアからDevice IDを取得するアプリ(「Android Device ID」など)をダウンロードしてインストール

        3.BlueStacks上で、2で取得したアプリを実行してDevice IDを調べる。(このBlueStacks自体が、AndroidのDevice IDを持っている)

        ※BlueStacksの作業はここまで。

        4.取得したAndroidのDevice IDで、Apkダウンローダーを設定する。

        注意点としては、BlueStacksに設定するGoogleアカウントは、普段お使いのアカウントと別にした方が良いかもしれません。BlueStacksの仮想端末(私の場合はT-Mobileでした)が、Googleアカウントに紐づけられてしまいます。

        実は当初BlueStacksでG-Call050アプリを走らせて、wertさんの説明にあるTitaniumBackupをつかったやり方が出来るか試そうとしたのですが、残念ながらBlueStacksの環境ではうまくいきませんでした。(BlueStacksは非root状態かつ外部通信が出来ないのか、G-call050アプリの認証も通りませんでした。)

        ただ、AndroidのDevice IDの取得には使えるかと思いますのでご参考までに。

        削除
    5. Goさんおはようございます。
      実は、BlueStackは、「端末をお持ちではないようです」と言われてAPKを落とせなかったときに、解決法を検索してとき、引っかかったので闇雲に入れてみました。インストール後、確かにGcall050の認証を通りませんでした。
      ちょっと、いま試してみたのですが、flippbx.brastel.ne.jpとの間での通信はしてるみたいです。https(443)でパケットが行き来しています。でも認証通らないですね。
      注意点と言うほどではないですが、GooglePlayから通常使用のアカウントでダウンロードすると、そのアカウントにTmobileの端末が紐付されます。調べた範囲だと、一度紐付された端末は外せないらしいので、気になる人は違うアカウントを作ってからアプリインストールした方が良いかもしれません。
      私は、これを知る前にやったので、Tmobile Sumsung GT-I1900と言う端末を持っていることになっています。

      返信削除
      返信
      1. kmnkさん

        コメントありがとうございます。
        kmnkさんとGoさんの情報提供を基に、BlueStacks関連を記事に追記させて頂きます。

        色々と情報を頂き、ありがとうございます!

        削除
    6. wertさん

      こんにちは

      sip情報 iphoneから脱獄なしで抜けましたよ。ご存知かもしれませんが、

      i-FunBox
      http://i-funbox.softonic.jp/

      エクスプローラ風に中身が見えます。


      本田さんのご指摘通り
      //Library/Preferences/com.gap.GCall.plist
      こちらに書いてありました。
      メモ帳で開いたら、の後に
      12ケタと10ケタの番号があたので、これですね。きっと。

      これで
      頂上アプリ
      Acrobits Softphone 挑戦してみたいと思います。

      返信削除
      返信
      1. hikaruさん

        貴重な情報ありがとうございます。

        iPhoneが脱獄なしで中身が見られることも知りませんでした。
        iPhoneは本当に触り始めたばかりで、全くのド素人です(^_^;)

        やってみました。
        「何これ?こんな簡単に抜けていいの?」というぐらい簡単にSIP情報抜けます・・・。
        iPhoneユーザはこの方法が一番安全で簡単ですね。

        これはiPhone用として記事にさせて頂こうと思います。
        重ね重ね、貴重な情報をありがとうございました。

        基となる情報を提供して頂いた本田さんにも多謝です。


        >頂上アプリ
        >Acrobits Softphone 挑戦してみたいと思います。

        記事を読んで頂いてありがとうございます。
        これはキャリア解約を検討している人へ、とどめを刺せる使用感です(笑)

        削除
    7. 今更ですがwertさんの記事、紹介させていただきました~!

      Outlookの連絡先からIP電話をかける方法

      http://outlook.aptrust.net/outlook-ipphone

      恥ずかしながら、コメント投稿でDISQUSにログインするやり方がよくわからなくて、ちょっと苦労しました。(笑)

      返信削除
    8. Goさん


      記事紹介の件、ありがとうございます。
      いつまで旧バージョンで認証できるかはわかりませんが、apkはとっといたほうが無難ですね。


      コメントシステムの突然の変更すみません。
      本ブログ(Blogger)のコメントシステムに限界を感じました(>_<)




      Goさんのサイトを眺めていたら、家電にSIP電話をいれたくなってきました・・・。

      返信削除