*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를 제공합니다. localhost에서 포트를 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 휴대폰이 연결을 공유하는 또 다른 호스트라고 가정하고 내 *nix 상자가 인터넷에 액세스할 수 있도록 내 컴퓨터에 서브넷 IP를 할당합니다.
그래서 내 질문은: 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 주소는 하나만 입력해야 합니다(127.0.0.24 아님). (127개의 주소는 Linux 시스템 내에서 내부 전환을 위해 예약되어 있습니다.)
여기에는 슬라이싱 같은 것이 없습니다. Android는 아마도 네트워크를 생성합니다 192.168.32.0/24
. 이 네트워크에는 두 개의 주소가 정의되어 있습니다(양쪽에 하나씩). 다른 주소는 작동하지 않을 수 있습니다.