Use o Android com o Linux
As distribuições Linux e o Android são mais do que sistemas
operacionais relacionados, eles possuem um núcleo(Kernel) em um nível
baixo bastante semelhantes. No Android é possível usar maior parte
dos comandos do Linux, você pode instalar o Bash, criar scripts e até
mesmo executar servidores remotos. Instalando um cliente SSH em seu
dispositivo, você poderá controlar servidores apenas com seu Android,
e até usar o Rsync para sincronizar arquivos.
ADB
ADB é a ferramenta favorita dos usuários avançados do Android, as
siglas significam Android Debug Bridge, e funciona como um sistema de
gerenciamento de smartphones com o computador. O ADB permite que você
execute e instale aplicações, mova arquivos do dispositivo para outro
e execute um monte de outras tarefas. Para utilizar o ADB no Windows,
você precisa instalar os drivers e reinicar sua máquina, no caso do
Linux não é necessário muito esforço. No seu dispositivo Android,
habilite a opção de Depuração USB(Configurações > Opções do
Desenvolvedor) e no seu Linux instale o pacote adb:
# Ubuntu/Debian/Mint
$ sudo apt-get install adb
# Arch Linux
$ sudo pacman -S android-tools android-udev
Após a instalação, você precisa conectar o smartphone no seu
computador e executar os seguintes comandos:
Obtendo a lista de dispositivos conectados:
$ adb devices
Instalando em APK anexado:
$ adb install [Link]
Copiar um arquivo para o dispositivo:
$ adb push [Link] /sdcard/
Baixar um arquivo do dispositivo:
$ adb pull /sdcard/DCIM/Camera/[Link] [Link]
Fazer uma captura de tela e baixar no seu computador:
$ adb shell screencap /sdcard/[Link]
$ adb pull /sdcard/[Link]
$ adb shell rm /sdcard/[Link]
Usando função do botão liga/desliga:
$ adb shell input keyevent 26
O ADB também pode ser usado para acessar a linha de comando(shell) do
seu smartphone:
$ adb shell
É importante notar que o ADB pode funcionar não apenas no USB, mas
também no Wi-Fi, mas isso requer privilégios de root no dispositivo e
no aplicativo WiFi ADB. Inicie o aplicativo, ative o wireless e
conecte-se ao smartphone com endereço IP mostrado pelo aplicativo:
$ adb connect IP-[Link]
Adb-sync
O ADB também pode ser usado para sincronizar arquivos entre
dispositivos(existe até uma opção para isso)
$ sync
Porém é mais conveniente usarmos o script adb-sync. Por exemplo, você
pode sincronizar música em seu dispositivo e em seu computador:
$ adb-sync ~/Music/ /sdcard/Music
E então, execute a mesma sincronização, mas com a remoção de arquivos
que foram excluídos no computador:
$ adb-sync --delete ~/Music/ /sdcard/Music
Uma maneira fácil de baixar arquivos no computador(sincronização
reversa):
$ adb-sync --reverse /sdcard/Download/ ~/Downloads
Adbfs
Outra maneira interessante de acessar arquivos no dispositivo com ADB
é usar adbfs, um pseudo FS(File System), que permite que você monte o
dispositivo como se fosse uma unidade flash USB ou qualquer outra
unidade.
A maneira mais fácil de instalar adbfs está no Arch Linux. Aqui está
no AUR, o comando para instalar é o seguinte:
$ yaourt -S adbfs-rootless-git
No Ubuntu/Debian e outros sistemas, o adbfs será de ser baixado
manualmente:
$ sudo apt-get install libfuse-dev android-tools-adb
$ git clone git://[Link]/spion/[Link]
$ cd adbfs-rootless
$ make
Agora você pode conectar o sistema de arquivos:
$ mkdir ~/Android
$ adbfs ~/Android
Para desativar:
$ fusermount -u ~/Android
Go-mtpfs
Outra maneira de conectar o dispositivo como um sistema de arquivos é
go-mtpfs, um sistema de arquivos que permite transferir dados através
do protocolo MTP. Este protocolo é usado em smartphones sem cartão de
memória.
No Arch Linux, é muito fácil instalar o go-mtpfs:
$ yaourt -S go-mtpfs
Em outras distribuições a instalação é a seguinte:
$ sudo apt-get install golang-go libusb1-devel
$ mkdir /tmp/go
$ export GOPATH=/tmp/go
$ go get [Link]/hanwen/go-mtpfs
$ go install [Link]/hanwen/go-mtpfs
Mais tudo elementar como com o adbfs:
$ mkdir ~/Android
$ go-mtpfs ~/Android
Para desativar:
$ fusermount -u ~/Android
SSH
A idéia de usar o ADB para se comunicar com o dispositivo pode
parecer estranha, o Android possui diversos servidores SSH que não
requerem acesso root. Assim em muitos casos, o SSH será mais
conveniente e eficaz. Como uma implementação do servidor, eu
recomendo escolher SimpleSSHD, uma aplicação gratuita e simples para
um servidor DropBear SSH testado no tempo para sistemas embarcados.
Se você tem root, então eu recomendo também instalar o BusyBox On
Rails, um conjunto de utilitários de linha de comando mais próximos
das distribuições Linux.
É muito fácil usar SimpleSSHD. Execute, pressione START e conecte-se
ao endereço IP especificado(usaremos a porta 2222):
$ ssh [Link] -p 2222
No momento da conexão uma senha única será exibida na tela, que deve
ser especificada no cliente. Esta não é uma maneira muito conveniente
de autenticar, mas você pode configurar autenticação por chaves.
Basta mudar o nome da sua chave pública
~/.ssh/id_rsa.pub
em
authorized_keys
e coloque-o no diretório ssh no cartão de memória do smartphone.
Bash, tmux, mc
O servidor SSH no próprio smartphone oferece ótimas oportunidades,
mas podem ser ainda maiores se você instalar ferramentas clássicas
como bash, tmux e mc no seu smartphone. O mc(midnight commander)
também permite que você navegue confortavelmente pelo cartão de
memória.
Iremos instalar o bash, tmux, mc e nano, preste atenção nas etapas e
será necessário der privilégios de usuário root no smartphone.
Então, baixe o Terminal IDE, renomeie o pacote APK em ZIP,
descompacte e encontre o arquivo
assets/[Link].mp3
renomeie, remova a extensão mp3 e descompacta. Dentro haverá muitos
diretórios e arquivos, dos quais só estamos interessados no
system/bin
e
system/etc/terminfo
O primeiro contém os utilitários que precisamos, copie aqueles que
você precisa para um diretório separado. O segundo é necessário para
o funcionamento correto dos utilitários. Selecione os utilitários e o
diretório terminfo para enviar no cartão de memória. Em seguida,
conecte-se a ele via SSH e insira os seguintes comandos para
habilitar a modificação do diretório do sistema:
$ su
# mount -o remount,rw /system
Em seguida, copie todas as utilidades necessárias para
/system/xbin/
e defina o código de permissão para eles:
# cp bash /system/xbin/
# chmod 755 /system/xbin/bash
Em seguida, crie um arquivo
/sdcard/ssh/.bashrc
e coloque as seguintes linhas nele:
export TERMINFO=/sdcard/terminfo
export TMPDIR=/data/local/tmp
export PS1="\u@\h:\w \$ "
Abra as configurações do SimpleSSHD e especifique a opção Login Shell
para
/system/xbin/bash
Pare e reinicie o servidor. Na próxima vez que você fizer login no
SSH, o bash será aberto e os utilitários que você copiou estarão
disponíveis.
Para garantir o funcionamento correto do Vim e do mc, copie para o
cartão de memória também os diretórios
etc/mc
e
etc/vim
E no arquivo
/sdcard/ssh/.bashrc
adicione as linhas:
export MC_DATADIR=/sdcard/mc
export VIMRUNTIME=/sdcard/vim
Rsync
O servidor SSH nos permite usar o rsync, um poderoso utilitário para
arquivos de sincronização e backup. Rsync permite que você execute
rápido uma sincronização bidirecional de arquivos entre duas
máquinas(em nosso caso numa máquina e um smartphone) com o
bombeamento de arquivos novos e modificados e a possibilidade de
retomar a sincronização interrompida.
O exemplo mais simples de usar o rsync em conjunto com um smartphone:
$ rsync --update --progress -e 'ssh -p 2222' -azv
[Link]:/sdcard/DCIM/Camera ~/Photos
Este comando copiará todas as fotos do smartphone para o diretório
~/Photos
Sobre as opções do pacote
-azv
neste caso significa que o diretório deve ser transferido como está
com todos os seus subdiretórios e direitos de acesso(opção -a).
-z
realiza uma compressão dos dados e a -v é modo verboso.
Comando reverso, copie dados da máquina para o smartphone:
$ rsync --delete --progress -e 'ssh -p 2222' -azv ~/Books
[Link]:/sdcard/Books
Aqui usamos a opção --delete para excluir arquivos que foram
excluídos do diretório local ~/Books.
Por padrão, se a conexão for encerrada, o rsync eliminará os arquivos
parcialmente transferidos. Para evitar isso, você pode usar a opção
--partial o que fará com que o rsync guarde os arquivos não entregues
e retome os carregamentos na próxima vez que o comando for executado.
SSHButton
Ok, nós nos conectamos ao smartphone, os arquivos foram
sincronizados, mas e se precisarmos de uma conexão SSH reversa do
smartphone para o computador? Neste caso, qualquer uma das dezenas de
clientes SSH para Android(ConnectBot por exemplo), funcionará se,
claro, você estiver pronto para inserir comandos no teclado de tela
sensível e pequena.
Se você não estiver pronto, sua escolha é o aplicativo do SSHButton,
que permite que você execute o comando desejado na máquina desejada
com o botão de um comando. A interface do SSHButton pode não ser tão
bela, mas o aplicativo funciona bem. Basta iniciar o SSHButton,
depois Menu > Adicionar e digite o comando desejado, o endereço do
servidor SSH, o login e a senha.
Links para os utilitários do artigo:
WiFi ADB: [Link]
id=[Link]
ADB-sync: [Link]
adbfs: [Link]
Go-mptfs: [Link]
SimpleSSHD: [Link]
id=[Link]
BusyBox: [Link]
id=[Link]
Terminal IDE: [Link]
ide/[Link]
Rsync: [Link]
ConnectBot: [Link]
id=[Link]
SSHButton: [Link]
id=[Link]
Hacking Brasil
por Ryoon Ivo