2011年06月24日

GUI 版「stone for Android」公開のお知らせ

はてなブックマークに登録

SSL 対応のパケットリピータ「stone」を Android 上で動かすことにはさまざまなメリットがあります。 以前このブログに次の記事を書きました。

  ・「パケットリピータ stone を Android へポーティング
  ・「Android 上のブラウザから SSL クライアント認証の必要なサーバへアクセスする方法


当時は Android NDK でビルドしたネイティブの stone バイナリとビルド用リソースの一式を公開しましたが、その後 GUI 版の開発を手がけ、「stone for Android」として Android マーケットへの登録を行いました。

これはいわゆる「普通の Android アプリ」ですから端末へのインストールも取りまわしもとても簡単です。 興味のある方はぜひご利用下さい。ソースコードも公開しています。


ブラウザから端末へ PUSH インストールの可能なページ


■ GUI 版 stone を作った理由?

もともと stone を Android で動かしたいと考えたのは「自分で使うため」だったため、ELF 実行形式を USB ケーブル経由で端末へ持ち込んでターミナルエミュレータ上で操作するというやり方にそれほど不満は感じていませんでした。 しかし、社内には私と同様に「Android のブラウザから SSL-VPN 経由で社内のイントラにアクセスしたい!」という向きが多い反面、やり方を説明すると技術系以外のメンバーは端末へケーブルをつなぐという手順の時点で急に及び腰になり結局そのまま、という状況が多く見られました。

それを見過ごすのも何だかしのびなく、ネイティブの stone バイナリを内蔵しそのラッパとして動作する簡単な GUI アプリを作り社内で配ってみたところ、ケーブルもターミナルソフトも要らないため楽だと喜ばれました。そして、それを見た別方面から「どうせならイントラ専用ツールではなく Android 用の stone として体裁を整え公開してはどうか?何だかんだ言っても GUI の方が便利だし」という意見が寄せられました。これが「stone for Android」を開発したきっかけです。


■ インストール方法

「stone for Android」は Android マーケットで公開しています。端末へのインストールにはこの記事の冒頭に記載の QR コードを利用するか、PC 上のブラウザから端末へ PUSH インストールの可能なページを利用して下さい。


■ 使い方 1: 概要

以下、本アプリの使い方を簡単に説明します。
インストール後にラウンチャアイコンをタップするとメインの画面が表示されます。最上段のフィールドに stone へのパラメータを記述し、「Run」ボタンを押下するとそのパラメータを使って stone プロセスがバックグラウンドで起動します。中段以下のエリアには stone がコンソール(stderr)出力したログメッセージがトレースされます。

初期状態では上段のフィールドに簡単なパラメータ記述例が示されています。これは「-dd www.gcd.org:80 localhost:1234」という内容で、localhost の 1234 番ポートへのアクセスを http://www.gcd.org/ (stone 公式ページを含むサイト)へ繋ぐ指定です。動作確認をかねてまずこのパラメータで stone を走らせてブラウザから「http://localhost:1234」へのアクセスを試してみるといいでしょう。

stone プロセスがバックグラウンドで稼動している間、端末のステータスバー(通知領域)には「石」のアイコンが表示されます。稼動中に「Stop」ボタンを押下するとユーザ確認を経て stone プロセスを終了します。 なお、本アプリは端末の BACK キーにより Exit しますが、stone プロセス稼動中に BACK キーを押下すると GUI のみを終了し stone はバックグラウンドで動作を継続します。再度本アプリを起動すれば GUI はふたたび stone プロセスと連携します。

デフォルトのサンプルパラメータで stone プロセスを起動し、ブラウザから「http://localhost:1234/」へアクセスを試して下さい。図の要領で「GCD's Homepage」が表示されれば stone は正しく動作しています。


■ 使い方 2: メニューの内容

本アプリのメニュー内容を以下に示します。「証明書のインストール」の項目は Android 2.x 以上の端末でのみ表示されます。証明書インストールについては次項で説明します。


■ 使い方 3: 証明書のインストールについて

本アプリは、Android 2.x 以上の端末において、Android キーストアへの証明書のインストールと参照に対応しています。[MENU] - [証明書のインストール] をタップして下さい。
下図左のメッセージが表示された場合は、Android の「認証情報ストレージ (Credential Storage)」の初期化が必要です。メッセージに添ってパスワードを設定後に再度本アプリでの操作を行って下さい。
下図右のパネルは認証情報ストレージがロック状態の場合に表示されます。端末の電源を投入した時点では認証情報ストレージはロックされています。設定ずみのパスワードでこれを解除して下さい。

認証情報ストレージを利用できる状態になると、SD カード上に存在する証明書ファイルが一覧表示されます。インストール対象とする証明書ファイル名をタップすると処理が始まります。証明書パスワードの問い合わせに対し正しいパスワードを投入すると証明書ファイルから情報が抽出され、最後に識別用の名前の問い合わせが行われます。特に理由がなければデフォルトのままで良いでしょう。

証明書のインストールが正常に終了すると、その証明書を指定したパラメータ記述例がパラメータフィールドに提示されます。ホスト名その他の指定を適宜変更して利用して下さい。なお、「History」ボタンの押下により表示されるパラメータ履歴のリストには以前のパラメータも保持されています。


■ 最後に

長くなったので今回はアプリの紹介と使い方の話題にとどめますが、後日あらためて処理内容についても記事を書きたいと考えています。


■ ライセンスに関する情報

Copyright (C) 2011 KLab Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

本ソフトウェアは、オープンソースソフトウェアです。本ソフトウェアのソースコードは https://github.com/mkttanabe/stone-for-Android で公開しています。

本ソフトウェアは、パケットリピーター 「stone」 の著作権者である仙石浩明 (Hiroaki Sengoku) 氏との特別な合意に基づき CUI 版 stone の実行形式バイナリファイルを含んでいます。 この実行形式ファイルは本ソフトウェアプロジェクトの成果物ではありません。 stone のソースファイルは http://sourceforge.jp/cvs/view/stone/stone/ (revision 2.3.3.13) で公開されています。 ただし、本ソフトウェアが保持しているビルド以外の stone を本ソフトウェアとともに配布することは許されません。 また、改変した stone バイナリを含む本ソフトウェアを配布することもできません。

本ソフトウェアは、既存の以下のオープンソースソフトウェア資産を使用しています。

  • Android の「CertInstaller」ならびに関連するソースコード   著作権者: The Android Open Source Project   ライセンス: Apache License, Version 2.0   ウェブサイト: http://source.android.com/   本ソフトウェアで使用しているソースコードの一覧:    frameworks/base/keystore/java/android/security/ [NOTICE]      - Credentials.java      - KeyStore.java    packages/apps/CertInstaller/src/com/android/certinstaller/ [NOTICE]      - CertFile.java      - CertFileList.java      - CertInstaller.java      - CertInstallerMain.java      - CredentialHelper.java      - Util.java      - ViewHelper.java    packages/apps/Settings/src/com/android/settings/ [NOTICE]      - CredentialInstaller.java
  • これらのソースファイルは、改変箇所にコメントを加えた上でオリジナルの「NOTICE」ファイルとともに前述のリポジトリに配置しています。

    素晴らしいソフトウェアを公開されている各氏に深謝するとともに、私たちは本ソフトウェアがあなたにとって有用であることを願っています。


    (tanabe)
    * Cryptographic Software Notice *

    This software uses cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.

    The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this distribution makes it eligible for export under the License Exception Technology Software Unrestricted (TSU) for both object code and source code. (see the BIS Export Administration Regulations, Section 740.13)

    klab_gijutsu2 at 17:55│Comments(13)TrackBack(0)Android | win

    トラックバックURL

    この記事へのコメント

    1. Posted by hayakawa   2011年08月10日 13:21
    5 早速(というには少し遅いかも)使わせてもらっています。
    2. Posted by tanabe   2011年08月10日 13:44
    hayakawa さん、CUI 版以来のご利用ありがとうございます。GUI 版のリリースに気づかれたかどうか気になっていたのでちょっと安心しました
    3. Posted by sage   2011年10月26日 11:28
    It will be great if i can directly download APK file from web server;i dont want to get google account.
    4. Posted by tanabe   2011年10月26日 11:55
    Hi sage, try following URL.
    http://dsas.blog.klab.org/data/stoneforandroid/jp.klab.stone.apk
    This URL is valid only for a few days. Thank you.
    5. Posted by sage   2011年10月26日 21:37
    Hi tanabe,
    Thank you for uploading apk file :)

    -dd 20.zzz.10.ooo:5354/tcp localhost:53/udp

    But I can't execute this command on Android(works fine on Windows).
    Maybe Android can't repeat dns packet.

    Again,thank you for upload!
    6. Posted by tanabe   2011年10月27日 09:27
    I'm glad I could help.
    > But I can't execute this command on Android(works fine on Windows).
    > Maybe Android can't repeat dns packet.
    I've not tried such operation. But, at least, root privilege is required for your command. Since port 53 is a well-known port. Is your Android device rooted? If so, you can try CUI version of "stone version 2.3e for Android" on terminal emulator after "su" command.
    http://dsas.blog.klab.org/archives/51813490.html
    7. Posted by sage(報告です   2011年11月10日 21:38
    ご返信ありがとうございます。
    完全に(ROMレベルで)root化済です。
    「su」コマンドでも失敗しました。

    >6. 端末のターミナルアプリ上で stone を実行

    $ export PATH=...(etc
    $ su
    #
    # cd data/local/tmp
    # ./stone
    Nov 10 ...(etc...)
    # ./stone -dd 20.zzz.10.ooo:5354/tcp localhost:53/udp
    Nov 10...(etc
    Nov 10...(etc
    Nov 10 (Time) stone 12: Can't bind 127.0.0.1:domain err=0
    #

    (*) 20.zzz.10.ooo = My Server IP
    8. Posted by tanabe   2011年11月11日 12:23
    なるほど、投稿元のホストが jp ドメインでコメントの印象にもあまり文化的な距離感がないなぁと思っていたらやはり日本のかただったようですね(笑)。それはともかく、CUI 版のほうはいろいろ融通が利きますからいろいろ実験なさって下さい。何かの形でお役に立つことを祈ります。
    9. Posted by 無理した初心者。   2011年12月31日 23:11
    4 11月まで、T-01Cをイオンsim運用でAirStation WHR-HP-GNに
    VPN接続して使っていました。(050plusを使うため。)

    12月からF-12Cに買い替えsimもイオンsimからイーモバイルsimに
    切り替えました。

    イーモバイルの契約プランがデータプランBのため
    イオンsimで使えたVPNが使えません。

    いろいろ調べてみたところ、stoneならHTTP / HTTPS プロトコルさえ
    利用可能であればほぼすべての TCP/IP 上で動作するプロトコルを用いた
    通信が可能だと思うのですが、間違ってますでしょうか?
    stone for AndroidでGUI版となり敷居が
    少しだけ下がったので勉強して使いたいと思ってます。

    目指すは、制限で使えない(VOIP)を使うことです。

    10. Posted by bichir   2013年05月09日 17:23
    5 stone for Android を中国内のネット規制を回避するために利用させてもらっています。大変便利です。ありがとうございます。
    以下、不具合報告になります。
    携帯端末のAPNのプロキシ設定部にプロキシ情報を設定していますが、この設定項目にはユーザ認証がないため、stoneでのリクエスト追加機能を使っています。
    パラメタBOX内にて、
    hogehoge.com/proxy 8080 'Proxy-Authorization: Basic 〜'
    と指定した時、このパラメタを括るシングルクォートまで送信されているようです。
    以下ダンプをとったサンプルです:
    May 8 16:16:35.845985 3 4>5 'Proxy-Authorization: Basic 〜'<0d><0a>
    となり、'まで一緒に送信されています。squidのログの方でもしっかりTCP_DENIEDが返却されます。
    現在は、設定ファイルの方にパラメタを記述し、-Cで設定ファイルを指定する形で回避しています。
    設定ファイルでの指定では正常動作しています。
    回避方法があるのでいいのですが、今後もし何かのタイミングでクライアントアプリをアップデートされることがあれば、対応を検討していただければありがたいです。
    11. Posted by tanabe   2013年05月09日 17:32
    bichirさん、コメントを拝見しました。状況を確認の上おって対応を検討したいと思います。フィードバックを頂きありがとうございます。
    12. Posted by tanabe   2013年05月20日 19:18
    本日 stone for Android バージョン 1.0.1 を公開しました。bichir さん、テスト版動作確認へのご協力をありがとうございました。
    13. Posted by tanabe   2016年02月21日 08:14
    本日、Android 6.x への対応を加えた stone for Android 1.0.3 を公開しました。
    https://play.google.com/store/apps/details?id=jp.klab.stone
    テスト版の動作確認にご協力頂いた<匿名希望>様に謹んで御礼申し上げます。
    http://dsas.blog.klab.org/archives/52211448.html#comments

    この記事にコメントする

    名前:
    URL:
      情報を記憶: 評価: 顔   
     
     
     
    Blog内検索
    Archives
    このブログについて
    DSASとは、KLab が構築し運用しているコンテンツサービス用のLinuxベースのインフラです。現在5ヶ所のデータセンタにて構築し、運用していますが、我々はDSASをより使いやすく、より安全に、そしてより省力で運用できることを目指して、日々改良に勤しんでいます。
    このブログでは、そんな DSAS で使っている技術の紹介や、実験してみた結果の報告、トラブルに巻き込まれた時の経験談など、広く深く、色々な話題を織りまぜて紹介していきたいと思います。
    最新コメント