Sólo tengo acceso a sistemas *nix. Ya sea NetBSD y/o sistema operativo basado en Linux.
Entonces mi pregunta surge del hecho de que ADB
no está ampliamente disponible en todas las plataformas, de ser así es muy difícil de instalar u obtener (tener acceso a Internet, obtener acceso de superusuario, etc.).
De todos modos, RNDIS
la funcionalidad ya la ofrecen casi todos los dispositivos Android. Permitir que el teléfono se convierta en un "enrutador" me dará la opción de usar netcat porque puedo configurar un "servidor" y obtener/recibir archivos bidireccionalmente, sin necesidad de involucrarme ADB
.
Como esto:
NetBSD
dhcpcd -n urndis0
Linux
udhcpd -i usb0
Eso me dará una IP dentro de una subred configurada por Android. Algo como:192.168.32.225/24
Entonces, esencialmente el teléfono actúa como un enrutador, dándole a mi computadora *nix una IP que pertenece a una subred configurada por el propio teléfono. Me gustaría simplemente abrir un puerto en mi host local 127.0.0.1
y netcat
simplemente transferir archivos.
Algo como esto:
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
Y poder acceder a la red/dispositivo de bucle "superior" que ya existe dentro de la propia red local de Android.
Supongamos que el teléfono Android es otro host que comparte su conexión y asigna una IP de subred a mi computadora para que mi *nix box pueda acceder a Internet:
Entonces mi pregunta es: ¿Puedo usar la IP (que está dentro de una subred) proporcionada por la interfaz RNDIS del teléfono Android para acceder a la red local del teléfono con solo herramientas estándar en *nix?
Solución @Frédéric Loyer ¡Muchas gracias!
Maravilloso, con este método no es necesario acceder adb
a cada computadora en la que estoy, la mayoría de las veces lo que obtengo es busybox nc
and or ssh
. Esto es perfecto, con esto incluso puedo acceder a mi Android mediante ssh sin siquiera necesitar una conexión activa en el teléfono, ¿no es sorprendente?
Aquí esta lo que hice.
# 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.
Después de esto, solo es cuestión de conectarme a mi teléfono o abrir puertos con Termux. ¡Asombroso! :)
Respuesta1
En el teléfono Android, has escrito:
busybox nc -v -w3 -l -p 3838
Esto parece estar bien.
En Linux, escriba ip route
. Deberías tener algo como esto :
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
La línea con la default
ruta indica la dirección del enrutador. (Aquí 37.59.40.254
). Debería intentar escribir nc
desde Linux con esta dirección de enrutador, ya que es la dirección de Android en la subred RNDIS. Debe escribir solo una dirección IP: no 127.0.0.24. (127 direcciones están reservadas para intercambios internos dentro de su sistema Linux).
Aquí no existe el corte: Android crea una red que tal vez 192.168.32.0/24
. En esta red hay dos direcciones definidas (una para ambos extremos), es posible que otras direcciones no funcionen.