各プロセスがどのソケットと対応しているのか

1,109 views
Skip to first unread message

たお

unread,
Nov 23, 2011, 1:01:19 AM11/23/11
to 日本Androidの会
はじめまして。たおと申します。

netstatコマンドを使用すると通信している状態がわかるかと思います。
そこで、どのプロセスが、ESTABLISHEDやLISTEN(CLOSE_WAIT..)などと
いった状態なのかを確認する方法をご教授お願いしたく思います。
linuxでは「netstat -p」をすればPIDが表示されますが、androidではPIDが
表示されないのでしょうか。

宜しくお願い致します。

Yusuke Nomoto

unread,
Nov 23, 2011, 12:21:57 PM11/23/11
to android-g...@googlegroups.com
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....@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

たお

unread,
Nov 24, 2011, 6:19:13 AM11/24/11
to 日本Androidの会
Yusuke Nomoto 様


お世話になっております。たおです。

ご返答ありがとうございました。

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からこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

Yusuke Nomoto

unread,
Nov 24, 2011, 9:50:37 AM11/24/11
to android-g...@googlegroups.com
> 思います。busyboxをインストールしなければ、各プロセスとソケットとの対応を確認するのは
> 難しいのでしょうか。

難しいと思います。

http://www.usupi.org/sysad/110.html の話とか /proc のファイルの意味が理解できれば、
netstat を java で実装できると思います。

2011年11月24日20:19 たお <tko....@gmail.com>:

Yusuke Nomoto

unread,
Nov 24, 2011, 12:04:43 PM11/24/11
to android-g...@googlegroups.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>:

ohisamallc

unread,
Nov 24, 2011, 11:11:05 PM11/24/11
to android-g...@googlegroups.com
山形のohisamaです。
山形は、いまも雪です。
がんばろう、東北。

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)を確認するには特権が必須みたいで

たお

unread,
Nov 25, 2011, 6:14:35 AM11/25/11
to 日本Androidの会
Yusuke Nomoto 様、ohisama 様


お世話になっております。たおです。

ご調査して頂きましてありがとうございます。

> 結論としては、 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
> らこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

Reply all
Reply to author
Forward
0 new messages