29 may. 2010

Conectarse a internet por medio de un celular con android (AziLink)

A diferencia de las aplicaciones que usan http proxy AziLink permite conectarse por celular usando openvpn.

La página del proyecto AziLink lo puedes conseguir en este enlace.

El enlace para bajar openvpn es openvpn.net. En Debian y Ubuntu con ejecutar un aptitude es suficiente:

aptitude install openvpn-blacklist openvpn

Los pasos son los siguientes:
1. Habilitar el modo depuración del USB en el teléfono. En el home de las apliaciones del celular ir a Configuración->Aplicaciones->Desarrollo->USB debugging.

2. Instale el SDK de Android, el procedimiento lo consigue en este enlace.
3. Instalar AziLink desde el market del celular.
4. En el computador hacer el redireccionamiento de puertos:

adb forward tcp:41927 tcp:41927

5. En el celular ejecutar AziLink y verificar que su servicio esté activo.
6. Bajar y descomprimir azilink.zip donde se encuentra el archivo de configuración.
La configuración de openvpn es la siguiente:
#Define tun como dispositivo
dev tun
#Define la IP y puerto remoto, el que se configuro en la redirección con adb
remote 127.0.0.1 41927 tcp-client
#Define la IP punto a punto de la conexión openvpn
ifconfig 192.168.56.2 192.168.56.1
#Define rutas
route 0.0.0.0 128.0.0.0
route 128.0.0.0 128.0.0.0
#Define flags del socket.
socket-flags TCP_NODELAY
#keepalive 10 30
ping 10
#Define el DNS por medio de las opciones de dhcp
dhcp-option DNS 192.168.56.1

7. Agregar en /etc/resolv.conf el siguiente DNS:
nameserver 192.168.56.1

8. Iniciar openvpn con el archivo de configuración:
sudo openvpn --config azilink.ovpn

Sat May 29 23:28:18 2010 OpenVPN 2.1.0 i486-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [MH] [PF_INET6] [eurephia] built on Apr 10 2010
Sat May 29 23:28:18 2010 WARNING: --ping should normally be used with --ping-restart or --ping-exit
Sat May 29 23:28:18 2010 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Sat May 29 23:28:18 2010 ******* WARNING *******: all encryption and authentication features disabled -- all data will be tunnelled as cleartext
Sat May 29 23:28:18 2010 TUN/TAP device tun0 opened
Sat May 29 23:28:18 2010 /sbin/ifconfig tun0 192.168.56.2 pointopoint 192.168.56.1 mtu 1500
Sat May 29 23:28:18 2010 Attempting to establish TCP connection with [AF_INET]127.0.0.1:41927 [nonblock]
Sat May 29 23:28:18 2010 TCP connection established with [AF_INET]127.0.0.1:41927
Sat May 29 23:28:18 2010 TCPv4_CLIENT link local: [undef]
Sat May 29 23:28:18 2010 TCPv4_CLIENT link remote: [AF_INET]127.0.0.1:41927
Sat May 29 23:28:21 2010 Peer Connection Initiated with [AF_INET]127.0.0.1:41927
Sat May 29 23:28:22 2010 Initialization Sequence Completed

Al revisar en whatismyip.com la IP que se está usando es la siguiente 201.239.27.224.

Personalmente prefiero está opción que usar http proxy, el archivo de configuración de openvpn se puede mejorar como permitir que copie el archivo de resolv.conf al momento de levantar el vpn y colocar el archivo anterior al detener el vpn.

Conectarse a Internet por medio de un celular con android (proxoid)

Como mencioné en el artículo anterior iniciaré una serie de artículos sobre distintas aplicaciones para conectarse a internet desde el celular.

La primera aplicación se llama proxoid, es un proxy http y el sitio de la aplicación lo pueden encontrar en el siguiente enlace.


La guía de instalación general lo pueden conseguir aquí y la dedicada a Linux aquí.

1. Lo primero que hay que hacer es bajar el programa proxoid desde el market de Android.
2. Al tener instalado el programa y tener configurado el udev en Linux y bajar el SDK para usar adb como se explicó en este artículo.
3. Crear el tunel. Se ejecuta adb para reenviar los paquetes, el comando es el siguiente:
adb forward tcp:8080 tcp:8080
4. Configurar el navegador para usar el proxy.
Abra las preferencias de firefox como lo muestra la figura (la pestaña red 
darle clip al botón configuración):

Al presionar configurar se agregará el proxy como localhost y puerto 8080 como
lo muestra la siguiente figura:
5. Iniciar proxoid en el celular. Simplemente ejecutan proxoid y luego le dan start
6. Al visitar whatismyip.com se mostrará que la IP que usa el navegador para internet
es 201.240.16.229 y el equipo tiene un IP distinto al que muestra el navegador.


Probando cliente blogger

Esta es una prueba de un cliente blogger para android

Comandos básicos de adb (Android Debug Bridge) para acceder al motorola milestone A853

En el artículo anterior se explico como instalar el SDK de Android en Debian, a continuación se explicará el comando que permite dar acceso al celular como ver la microsd, instalar aplicaciones en el celular desde el computador entre otras cosas.

Cambiarse al directorio tools del SDK de Android.

cd android-sdk_r06-linux_86/tools

Crear un enlace de la aplicación adb a /usr/bin .

sudo ln -s /home/ernesto/android-sdk-linux_86/tools/adb /usr/bin/adb

ls -l /usr/bin/adb
lrwxrwxrwx 1 root root 44 may 27 20:12 /usr/bin/adb -> /home/ernesto/android-sdk-linux_86/tools/adb

Crear el archivo 50-android.rules en el directorio /etc/udev/rules.d

vim /etc/udev/rules.d/50-android.rules

Agregar el siguiente contenido al archivo:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0c02", GROUP="androiddev", SYMLINK+="android%n"

Se crea el grupo androiddev.

sudo addgroup --system androiddev

Se cambia los permisos del archivo y se recarga las reglas udev.

sudo chmod a+rx /etc/udev/rules.d/50-android.rules
sudo /etc/init.d/udev reload

En el celular asegurarse que está en modo depuración de la conexión USB. Esto es:
Ajustes->Aplicaciones->Desarrollo.

Iniciar adb como servidor:

sudo ./adb start-server


Luego se verifica que se tiene acceso al celular con el comando adb devices.

adb devices
* daemon not running. starting it now *
* daemon started successfully *
List of devices attached
0403725B09015010 device

Cuando aparece está información y no caracteres raros o ??? o no aparece nada es que ya se tiene conectado el celular al computador.

El comando adb shell nos crea un shell desde el celular y se ejecuta el comando ls -l:

$ ls -l
drwxrwxrwt root root 2010-05-29 08:01 tmp
drwxrwxr-x system system 2010-02-23 07:41 pds
drwxrwxrwt root root 2010-05-29 13:21 sqlite_stmt_journals
dr-x------ root root 2010-05-29 08:00 config
drwxrwx--- system cache 2010-05-27 11:00 cache
d---rwxr-x system sdcard_rw 2010-05-29 08:01 sdcard
lrwxrwxrwx root root 2010-05-29 08:00 d -> /sys/kernel/debug
lrwxrwxrwx root root 2010-05-29 08:00 etc -> /system/etc
drwxr-xr-x root root 2010-01-06 09:29 system
drwxr-xr-x root root 1969-12-31 20:00 sys
drwxr-x--- root root 1969-12-31 20:00 sbin
dr-xr-xr-x root root 1969-12-31 20:00 proc
-rwxr-x--- root root 453 1969-12-31 20:00 init_prep_keypad.sh
-rwxr-x--- root root 13218 1969-12-31 20:00 init.rc
-rwxr-x--- root root 14824 1969-12-31 20:00 init.mapphone_umts.rc
-rwxr-x--- root root 6840 1969-12-31 20:00 init.mapphone_cdma.rc
-rwxr-x--- root root 1677 1969-12-31 20:00 init.goldfish.rc
-rwxr-x--- root root 104324 1969-12-31 20:00 init
-rw-r--r-- root root 118 1969-12-31 20:00 default.prop
drwxrwx--x system system 2010-05-29 08:01 data
drwx------ root root 2009-11-19 15:42 root
drwxr-xr-x root root 2010-05-29 08:01 dev

Este comando muestra los archivos y directorios que se tienen en el celular. Noten que son comandos unix/Linux así que si se cambian de directorio al system y luego app en el encontrarán los paquetes apk que se encuentran instalados en el celular.

$cd /system/app
pwd
$pwd
/system/app
$ls -l
-rw-r--r-- root root 1500786 2010-01-06 09:28 MotoID.apk
-rw-r--r-- root root 433280 2010-01-06 09:28 MovilnetContainer.apk
-rw-r--r-- root root 2624470 2010-01-06 09:28 Maps.apk
-rw-r--r-- root root 677433 2010-01-06 09:28 Talk.apk
-rw-r--r-- root root 50410 2010-01-06 09:28 GoogleContactsSyncAdapter.apk
-rw-r--r-- root root 327750 2010-01-06 09:28 MediaUploader.apk
-rw-r--r-- root root 1310501 2010-01-06 09:28 Vending.apk
-rw-r--r-- root root 735409 2010-01-06 09:28 Gmail.apk
-rw-r--r-- root root 380550 2010-01-06 09:28 GoogleApps.apk
-rw-r--r-- root root 778098 2010-01-06 09:28 SetupWizard.apk
-rw-r--r-- root root 53777 2010-01-06 09:28 TalkProvider.apk

Estos son algunos programas que se tienen instalados en el celular.

Los comandos que se pueden utilizar en el shell son los siguientes:
  • ls Lista los directorios y carpetas existentes en la ruta que estemos.
  • reboot Reinicia el terminal
  • rm Borra un archivo
  • rmdir Borra un directorio
  • cd Cambia de directorio
  • mkdir Crea un directorio
  • mkswapp Crea un sistema de intercambio
  • mount Monta una unidad o partición
  • umount Desmonta una unidad
  • mv Mueve o renombra un archivo
Se puede ejecutar un ls dentro del sdcard/Videos y se muestra lo siguiente:

$adb shell ls /sdcard/Videos/
How.I.Met.Your.Mother.S05E21.HDTV.XviD-LOL.[VTV].avi
The.Big.Bang.Theory.S03E20.The.Spaghetti.Catalyst.HDTV.XviD-FQM.avi

Para Borrar los archivos se ejecuta adb shell rm y luego se vuelve a ejecutar el ls para demostrar que se han borrado los archivos de la tarjeta sd del celular:

ernesto@jewel:~$ adb shell rm sdcard/Videos/*.avi
ernesto@jewel:~$ adb shell ls sdcard/Videos
ernesto@jewel:~$

También se puede instalar aplicaciones en el celular desde el computador con el comando adb install rutapaquete.apk:

A continuación se instala una aplicación de Sudoku desde el computador al celular.

ernesto@jewel:~$ adb install /home/ernesto/Descargas/OpenSudoku-1.1.1-02.apk
603 KB/s (223640 bytes in 0.361s)
pkg: /data/local/tmp/OpenSudoku-1.1.1-02.apk
Success

También se puede copiar archivos del celular al computador y del computador al celular:

ernesto@jewel:~$ adb push /home/ernesto/varios.mp3 /sdcard/mp3z/
1944 KB/s (7768607 bytes in 3.901s)

En este ejemplo se coloca un archivo mp3 del computador al celular.

ernesto@jewel:~$ adb pull /sdcard/python_scripts_r0.zip ./
52 KB/s (4280 bytes in 0.078s)

Este comando se trae un archivo de la memoria sdcard del celular al computador.

EL próximo artículo explicará como conectarse a internet desde un celular con android.


27 may. 2010

Instalación del SDK de Android en Linux

Para poder acceder desde Debian en el celular con Android lo primero que se tiene que hacer es bajar el SDK de Android desde el siguiente enlace.

Luego hay que descomprimir el android-sdk_r06-linux_86.tgz.

tar -xvzf android-sdk_r06-linux_86.tgz

Luego cambiarse al directorio android-sdk_r06-linux_86 y al directorio tools.
cd android-sdk_r06-linux_86/tools
Ejecutar android.
./android

Aparecerá la siguiente ventana. Se selecciona los paquetes a instalar.

Luego se acepta la licencia de todos los paquetes y empieza el proceso de instalación como lo muestra la figura.

Al terminar el proceso de instalación de APIs y librerías del SDK se selecciona Dispositivos virtuales.
Se crea uno como lo muestra la figura.
Al darle crear se mostrará una ventana con los resultados de la creación del dispositivo virtual al darle Aceptar el dispositivo aparecerá en la lista de dispositivos.

Al darle al botón start se abre una ventana que muestra opciones para lanzar el disposititvo virtual.




Al darle al botón Launch se iniciará una virtualización de un celular con Android como lo muestra la siguiente figura.

En el siguiente post se explicará el uso de adb el cual permite acceder al celular real.

AddThis