我只能访问 *nix 系统。 NetBSD 和/或基于 Linux 的裸操作系统。
所以我的问题来自于这样一个事实:它ADB
并非在所有平台上都广泛可用,如果是的话,则很难安装或获取(访问互联网、获得超级用户访问权限等)。
无论如何,RNDIS
几乎所有 Android 设备都已经提供了该功能。允许手机成为“路由器”将使我可以选择使用 netcat,因为我只需设置一个“服务器”并双向获取/接收文件,而无需参与ADB
。
像这样:
NetBSD
dhcpcd -n urndis0
Linux
udhcpd -i usb0
这将为我提供 Android 设置的子网内的 IP。就像是:192.168.32.225/24
因此,本质上,电话充当路由器,为我的 *nix 计算机提供属于电话本身设置的子网的 IP。我想在本地主机上打开一个端口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
and or ssh
。这是完美的,有了这个我什至可以 ssh 进入我的 Android,甚至不需要手机本身的活动连接,是不是很神奇!
这就是我所做的。
# 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
在 Linux 中输入此路由器地址,因为它是 RNDIS 子网上的 Android 地址。您应该只输入一个 IP 地址:no 127.0.0.24。 (127 个地址保留用于 Linux 系统内的内部交换)。
这里不存在切片之类的东西:Android 创建了一个网络,这可能是192.168.32.0/24
。在此网络上定义了两个地址(两端各一个),其他地址可能不起作用。