netstatコマンドを使用すると通信している状態がわかるかと思います。
そこで、どのプロセスが、ESTABLISHEDやLISTEN(CLOSE_WAIT..)などと
いった状態なのかを確認する方法をご教授お願いしたく思います。
linuxでは「netstat -p」をすればPIDが表示されますが、androidではPIDが
表示されないのでしょうか。
宜しくお願い致します。
http://techon.nikkeibp.co.jp/article/NEWS/20081022/159959/?P=5
busybox の netstat なら -p で PID も見れますよ。
# /data/busybox netstat -p
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address
State PID/Program name
tcp 0 0 10.0.2.15:5555 10.0.2.2:59334
ESTABLISHED 41/adbd
tcp 0 0 10.0.2.15:40471 74.125.31.105:80
ESTABLISHED 292/com.android.bro
tcp 0 0 10.0.2.15:47747 74.125.235.74:80
ESTABLISHED 292/com.android.bro
busybox はエミュレータとか大抵のスマフォにはインストールされていないので、
どこからか持ってくるか、 http://media.st/blog/2011/05/build-android-busybox/
とか参考にしながら、ソースからコンパイルしてインストールする必要があります。
2011年11月23日15:01 たお <tko....@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>
お世話になっております。たおです。
ご返答ありがとうございました。
busyboxでの確認方法、承知いたしました。
実装する場合においては、どのようにしたらよろしいのでしょうか。
現在、busyboxを考慮しない方法で以下のように実装をしております。
private void sample() {
try {
String[] s1 = {"netstat"};
Process process = Runtime.getRuntime().exec(s1);
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new
InputStreamReader(is));
String line = "";
String txt = "";
while ((line = br.readLine()) != null) {
txt = txt + line + "\n";
}
Log.d("netstat_cmd", txt);
} catch (Exception e) {
e.printStackTrace();
}
}
結果は次のようになります。
Proto Recv-Q Send-Q Local Address Foreign Address
State
tcp 0 0 127.0.0.1:25000 0.0.0.0:*
LISTEN
tcp 0 0 192.168.0.2:5001 0.0.0.0:*
LISTEN
udp 0 0 0.0.0.0:1024 0.0.0.0:*
CLOSE
udp 0 0 192.168.0.2:52874 0.0.0.0:*
CLOSE
udp 0 0 239.255.255.250:1900 0.0.0.0:*
CLOSE
tcp6 0 0 ::ffff:127.0.0.1:10007 :::*
LISTEN
tcp6 0 0 ::ffff:192.168.0.2:43063 ::ffff:72.14.203.188:5228
ESTABLISHED
実装4行目の{"netstat"} を {"netstat", "-p"} にしても結果は同じです。
Yusuke Nomoto様のご指摘のように大抵のスマフォにはbusyboxはインストールしていないかと
思います。busyboxをインストールしなければ、各プロセスとソケットとの対応を確認するのは
難しいのでしょうか。
On 11月24日, 午前2:21, Yusuke Nomoto <yusuke.nom...@gmail.com> wrote:
> android 標準の netstat は toolbox というコマンドのシンボリックリンクで、
> 機能が貧弱なので、 PID を表示する方法が無いのだと思います。
>
> http://techon.nikkeibp.co.jp/article/NEWS/20081022/159959/?P=5
>
> busybox の netstat なら -p で PID も見れますよ。
>
> # /data/busybox netstat -p
> Active Internet connections (w/o servers)
> Proto Recv-Q Send-Q Local Address Foreign Address
> State PID/Program name
> tcp 0 0 10.0.2.15:5555 10.0.2.2:59334
> ESTABLISHED 41/adbd
> tcp 0 0 10.0.2.15:40471 74.125.31.105:80
> ESTABLISHED 292/com.android.bro
> tcp 0 0 10.0.2.15:47747 74.125.235.74:80
> ESTABLISHED 292/com.android.bro
>
> busybox はエミュレータとか大抵のスマフォにはインストールされていないので、
> どこからか持ってくるか、http://media.st/blog/2011/05/build-android-busybox/
> とか参考にしながら、ソースからコンパイルしてインストールする必要があります。
>
> 2011年11月23日15:01 たお <tko.f...@gmail.com>:
>
>
>
> > はじめまして。たおと申します。
>
> > netstatコマンドを使用すると通信している状態がわかるかと思います。
> > そこで、どのプロセスが、ESTABLISHEDやLISTEN(CLOSE_WAIT..)などと
> > いった状態なのかを確認する方法をご教授お願いしたく思います。
> > linuxでは「netstat -p」をすればPIDが表示されますが、androidではPIDが
> > 表示されないのでしょうか。
>
> > 宜しくお願い致します。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
難しいと思います。
http://www.usupi.org/sysad/110.html の話とか /proc のファイルの意味が理解できれば、
netstat を java で実装できると思います。
2011年11月24日20:19 たお <tko....@gmail.com>:
busybox netstat ですべてのプロセス(or PID)を確認するには特権が必須みたいです。
# su app_37
$ ./busybox netstat -p
netstat: showing only processes with your user ID
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address
State PID/Program name
tcp 0 0 10.0.2.15:5555 10.0.2.2:41606
ESTABLISHED -
"-" となっているとおり、該当のプロセスを実行していないユーザの権限では閲
覧できていません。
恐らく、/proc/PID/fd の情報を読めないことに起因しているのだと思います。
よって、 root 権限を取得できなければ、どのようなプログラムでも目的を達
成できないと思います。
結論としては、 root 権限を奪取して、busybox をマーケットからインストール
して netstat を使うのが簡単じゃないでしょうか。
2011年11月24日23:50 Yusuke Nomoto <yusuke...@gmail.com>:
androidセキュリティに関わらないで、
別のアプローチして見ました。
稼動中のサービスでインターネットにアクセス
しそうなやつをpid付きで列挙します。
野良アプリです。
http://yumeblog.dip.jp/test/1111251243.htm
> -----Original Message-----
> From: android-g...@googlegroups.com
> [mailto:android-g...@googlegroups.com]On Behalf Of Yusuke Nomoto
> Sent: Friday, November 25, 2011 2:05 AM
> To: android-g...@googlegroups.com
> Subject: [work] Re: [android-group-japan: 15406] Re: 各プロセスがどのソ
> ケットと対応しているのか
>
>
> 追記です。
>
> busybox netstat ですべてのプロセス(or PID)を確認するには特権が必須みたいで
お世話になっております。たおです。
ご調査して頂きましてありがとうございます。
> 結論としては、 root 権限を奪取して、busybox をマーケットからインストール
> して netstat を使うのが簡単じゃないでしょうか。
承知致しました。通常の方法での netstat ではプロセスが確認できないのですね。
ポートや inode からプロセスを確認できないかについても検討したいと思います。
お忙しいところありがとうございました。
> > 2011年11月24日23:50 Yusuke Nomoto <yusuke.nom...@gmail.com>:
> > >> 思います。busyboxをインストールしなければ、各プロセスとソケットとの対応
> > を確認するのは
> > >> 難しいのでしょうか。
>
> > > 難しいと思います。
>
> > >http://www.usupi.org/sysad/110.htmlの話とか /proc のファイルの意味が理
> 解
> > できれば、
> > > netstat を java で実装できると思います。
>
> > > 2011年11月24日20:19 たお <tko.f...@gmail.com>:
> 詳細については、http://groups.google.com/group/android-group-japan?hl=jaか
> らこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -- 引用テキストを表示しない -
>
> - 引用テキストを表示 -