私がアクセスできるのは *nix システムだけです。NetBSD または Linux ベースの OS のいずれかです。
したがって、私の質問は、すべてのプラットフォームで広く利用できるわけではないという事実から来ておりADB
、もし利用できるとしても、インストールまたは入手が非常に困難です (インターネットにアクセスしたり、スーパーユーザー アクセスを取得したりする必要があるなど)。
いずれにせよ、RNDIS
ほぼすべての Android デバイスで既に機能が提供されています。電話を「ルーター」にできるようにすると、netcat を使用するオプションが提供されます。なぜなら、「サーバー」をセットアップするだけで、介入することなく双方向でファイルを取得/受信できるからですADB
。
このような:
NetBSD
dhcpcd -n urndis0
Linux
udhcpd -i usb0
これにより、Android によって設定されたサブネット内の IP が提供されます。次のようになります。192.168.32.225/24
つまり、本質的には電話がルーターとして機能し、電話自体によって設定されたサブネットに属する IP を *nix コンピューターに提供します。ローカルホストでポートを開いて、ファイルを転送するだけ127.0.0.1
にしたいと思いますnetcat
。
このようなもの:
On Android device:
busybox nc -v -w3 -l -p 3838
On *nix system (Linux in the example below):
nc -v -w3 **(upper higher loopdevice outside subnetted network) 127.0.0.24** 3838
また、Android 独自のローカル ネットワーク内にすでに存在する「上位」ネットワーク/ループ デバイスにアクセスできるようになります。
Android フォンが接続を共有する別のホストであり、サブネット IP を私のコンピューターに割り当てて、*nix ボックスがインターネットにアクセスできると仮定します。
私の質問は、Android フォンの RNDIS インターフェースによって提供される IP (サブネット内) を使用して、*nix の標準ツールだけでフォン自体のローカル ネットワークにアクセスできるかということです。
解決 @Frédéric Loyer どうもありがとうございます!
素晴らしいですね。この方法を使えば、使用している各コンピューターにアクセスする必要がなくadb
、ほとんどの場合、busybox nc
およびまたはをssh
取得できます。これは完璧です。これを使用すると、電話自体でアクティブな接続を必要とせずに Android に SSH 接続することもできます。素晴らしいと思いませんか?
私がやったことは次のとおりです。
# This makes my computer to request an IP to my phone.
$sudo udhcpc -i usb0
# Since I got access to busybox-only most of the time, this gives me the IP from the "router" which is the phone.
$route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.42.129 0.0.0.0 UG 0 0 0 usb0
127.0.0.1 * 255.255.255.255 UH 0 0 0 lo
192.168.42.0 * 255.255.255.0 U 0 0 0 usb0
# ifconfig output shows me the new IP assigned to usb0 on my computer.
後は、携帯電話に ssh で接続するか、Termux でポートを開くだけです。すごいですね! :)
答え1
Android スマートフォンで次のように入力しました:
busybox nc -v -w3 -l -p 3838
これは大丈夫そうです。
Linux では、 と入力しますip route
。次のような出力が表示されます。
default via 37.59.40.254 dev enp1s0 onlink
37.59.40.0/24 dev enp1s0 proto kernel scope link src 37.59.40.118
ルートの行はdefault
ルーターのアドレスを示しています。(ここ37.59.40.254
)。nc
これは RNDIS サブネット上の Android アドレスなので、Linux からこのルーター アドレスを入力するようにしてください。IP アドレスは 1 つだけ入力してください。127.0.0.24 は入力しないでください。(127 個のアドレスは Linux システム内の内部交換用に予約されています)。
ここではスライスのようなものは存在しません。Android はおそらくネットワークを作成します192.168.32.0/24
。このネットワークでは 2 つのアドレスが定義されており (両端に 1 つずつ)、他のアドレスは機能しない可能性があります。