我只能存取 *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
。在此網路上定義了兩個位址(兩端各一個),其他位址可能不起作用。