Elmord's Magic Valley

Software, lingüística e rock'n'roll. Sometimes in English.

Kindle hacks

2012-11-08 02:44 -0200. Tags: comp, unix, kindle

Comprei um Kindle 3 Wi-Fi usado. Assim como o seu celular, seu terminal de banco e sua cafeteira, o Kindle roda um GNU/Linux, o que torna o dispositivo (depois de rooteado) bastante versátil.

[Foto de um Kindle mostrando uma sessão X remota por VNC]
Dizem que ele até lê eBooks!

Rooteando a criança

Tudo o que você precisa saber para rootear o Kindle pode ser encontrado neste artigo totalmente excelente e posts do fórum MobileRead linkados pelo mesmo. Segue um resumo das instruções para o Kindle 3 (para o Kindle 4 as coisas são um pouco diferentes, aparentemente).

O INEVITÁVEL DISCLAIMER: Obviamente ninguém (além de você) se responsabiliza por qualquer dano causado ao Kindle caso alguma coisa dê errado ao seguir estas instruções. Use por sua conta e risco. Em todo caso, o procedimento parece seguro. (Funcionou para mim sem nenhum evento inesperado, pelo menos. Eu inclusive tentei instalar os hacks na ordem errada e o procedimento simplesmente falhou sem qualquer dano ao funcionamento do dispositivo. Mas a gente nunca sabe.)

Instale o Jailbreak Hack

  1. Baixe o kindle-jailbreak-0.11.N.zip.
  2. Dentro do zip há diversos arquivos com nomes do tipo update_jailbreak_0.11.N_k3w_install.bin, onde k3w é um identificador da versão do firmware do Kindle (no caso, k3w é o Kindle 3 Wi-Fi). Conecte o Kindle na USB e copie o arquivo apropriado para o raiz da unidade do Kindle.
  3. Desmonte/ejete a unidade do Kindle e ligue a criança.
  4. Pressione Menu, escolha Settings, pressione Menu novamente, selecione Update Your Kindle. O dispositivo reiniciará.

Pronto! Na verdade tudo o que esse "hack" faz é adicionar uma chave na lista de chaves que o Kindle aceita como válidas na hora de instalar updates. Feito isso, você poderá instalar os hacks que fazem alguma coisa útil. Para mais informações, dê uma olhada no fórum do MobileRead.

Instale o Launchpad

O Launchpad é um aplicativo que permite associar certas seqüências de teclas a comandos no Kindle. Como a interface padrão do Kindle não provê nenhum meio de executar programas de terceiros, é necessário instalar algum programa que permita chamar esses outros programas.

O procedimento de instalação é análogo. Baixe o zip com o Launchpad, ache o arquivo apropriado dentro do zip (e.g., update_launchpad_0.0.1c_k3w_install.bin), copie-o para o raiz do Kindle e use a opção Update Your Kindle.

Após a instalação, haverá no raiz da unidade do Kindle um diretório launchpad, com diversos arquivos *.ini. Esses arquivos configuram, entre outras coisas, as associações de teclas a comandos. Instruções quanto ao formato desses arquivos podem ser encontradas no arquivo README nesse diretório, ou nos comentários do launchpad.ini.

Instale o usbNetwork (opcional)

O usbNetwork é um hack que faz com que o Kindle se comporte como um dispositivo de rede USB, ao invés de um dispositivo de armazenamento. (Essa funcionalidade existe builtin no Kindle 2, mas foi removida no Kindle 3.) Além disso, o pacote vem com o Dropbear (um servidor SSH), entre outras coisas. Além de permitir acessar o sistema que roda no Kindle por SSH, isso também permite copiar arquivos de/para o Kindle por scp/sftp/sshfs, tanto pela USB quanto por Wi-Fi.

Para fazer a instalação (guess what), baixe o zip com o usbNetwork e proceda de maneira análoga aos outros pacotes.

Feito isso, é necessário ativar o usbNetwork. Para tal, a partir da tela inicial do Kindle, pressione Del (para abrir o campo de pesquisa), e dê os comandos (i.e., "pesquise" pelas seguintes strings):

Feito isso, ao ser conectado em uma máquina com GNU/Linux, o Kindle se apresentará como a interface de rede usb0. Dê um ifconfig usb0 192.168.2.1/24 (como root). O Kindle deverá estar acessível com o IP 192.168.2.2 (experimente dar um ping para ver se tudo está funcionando). Agora você pode dar um ssh 192.168.2.2 e divertir-se nos internals do seu Kindle.

Para fazer com que o Kindle volte a se comportar como um dispositivo de armazenamento, basta executar o comando ~usbNetwork novamente (em modo debug).

Para convencer o Dropbear do usbNetwork a aceitar conexões por Wi-Fi, você deverá ajustar a opção K3_WIFI para "true" no arquivo usbnet/etc/config na unidade do Kindle, e reiniciar o usbNetwork. Quando o acesso é feito por Wi-Fi, o Dropbear requisita autenticação (por chave pública ou senha). Para alterar a senha de root do Kindle (recomendável), dê os seguintes comandos em um terminal:

mntroot rw
passwd
mntroot ro

Se você quer brincar de chave pública, consulte o artigo linkado no início deste post.

E agora?

A partir de agora, a princípio, você não precisará mais instalar updates para instalar programas no Kindle; basta copiar os programas para a unidade do Kindle (ou para o /mnt/us do sistema de arquivos do Kindle, caso você o esteja acessando diretamente por ssh/scp/sftp/sshfs, e não como dispositivo de armazenamento). Até o momento eu instalei dois aplicativos no Kindle: o myts (um emulador de terminal) e o kindlevncviewer (um cliente de VNC).

myts

Para instalar o myts, basta descompactar o zip com o binário diretamente na unidade do Kindle (i.e., os diretórios myts e launchpad do zip devem ser copiados diretamente para o raiz da unidade; o conteúdo do diretório launchpad deve ir parar dentro do diretório launchpad que já existe no Kindle).

Feito isso, vá para a tela inicial do Kindle e digite Shift, Shift, Espaço (cada tecla deve ser pressionada individualmente). Isso atualizará as configurações do Launchpad; uma mensagem de Success deve ser exibida na parte inferior da tela. Agora você pode digitar Shift, T, T para abrir um terminal.

O terminal utiliza combinações bizarras das teclas Menu e Back com letras para permitir a digitação dos caracteres que não existem no teclado do Kindle (e.g., Back+v = /). Para ver uma tabela com as combinações, mantenha pressionada uma das teclas modificadoras e pressione o botão volta-página da esquerda. A tecla Aa funciona como Ctrl, e a tecla volta-página da esquerda sozinha sai do terminal.

kindlevncviewer

A instalação do kindlevncviewer é similar (eis o zip). Com as configurações padrão (vide launchpad/kindlevncviewer.ini), a seqüência Shift, V, U inicia uma sessão VNC usando a tela 1 (porta 5901) da máquina 192.168.2.1.

Quanto ao servidor VNC, você pode usar um servidor como o tightvncserver e iniciar uma sessão X independente (com um comando do tipo Xvnc :1), ou usar o x11vnc e tornar sua sessão X atual remotamente acessível (com um comando do tipo x11vnc -rfbport 5901). Note que ambos os comandos iniciam servidores VNC remotamente acessíveis sem senha; configurar uma senha de acesso é sugerido como exercício para o leitor (até eu possivelmente atualizar este post, em um momento de maior disposição).

Escaping Amazon

Uma precaução tomada pelo autor do artigo linkado é desabilitar as atualizações automáticas de firmware da Amazon. Para isso, basta abrir um shell (por SSH ou usando o emulador de terminal) e executar:

mv /etc/uks /etc/uks.disabled

Isso remove as chaves da própria Amazon do conjunto de chaves conhecidas, o que faz com que o Kindle rejeite as atualizações. Um comando grep http /opt/amazon/ebook/config/framework.fiona.conf também revela diversas URLs que o software do Kindle usa para contactar a Amazon, em particular para obter as TodoLists que instruem o dispositivo a baixar atualizações de firmware (ou apagar seus livros). Você pode se divertir alterando essas URLs (possivelmente apontando-as para uma outra máquina para analisar as requisições que o Kindle faz).

(Ainda não tive a oportunidade de analisar o tráfego gerado pelo Kindle, embora eu desconfie de que o meu Kindle não esteja tentando baixar atualizações, pois eu nunca registrei o dispositivo.)

[Update (1/1/2013): Mesmo com essas configurações, o Kindle continua se comunicando com a Amazon. Uma solução para evitar isso é proibir no iptables qualquer conexão de saída que não tenha sido explicitamente habilitada. Para isso, você pode substituir o arquivo /etc/sysconfig/iptables do Kindle pelo conteúdo deste arquivo. Infelizmente, para que o sistema de conexão por wireless do Kindle funcione corretamente, é necessário deixar o DNS desbloqueado (caso contrário ele considera que a conexão wireless não foi estabelecida), o que deixa passar as requisições de DNS perguntando por servidores da Amazon (que o Kindle aparentemente emite a cada dois segundos enquanto não consegue se conectar com a Amazon). Fora o tráfego extra, essas requisições são a princípio inofensivas. Se alguém souber um meio de bloquear essas requisições sem impedir o funcionamento da wireless, queira deixar um comentário.]

E assim termina a saga.

Comentários

Main menu

Posts recentes

Comentários recentes

Tags

comp (114) prog (51) life (44) unix (32) random (27) lang (27) about (24) mind (22) mundane (21) pldesign (20) in-english (19) lisp (17) web (17) ramble (15) img (13) rant (12) privacy (10) scheme (8) freedom (8) lash (7) music (7) esperanto (7) bash (7) academia (7) home (6) mestrado (6) shell (6) conlang (5) copyright (5) misc (5) worldly (4) book (4) php (4) latex (4) editor (4) politics (4) etymology (3) wrong (3) android (3) film (3) tour-de-scheme (3) kbd (3) c (3) security (3) emacs (3) network (3) poem (2) cook (2) physics (2) comic (2) llvm (2) treta (2) lows (2) audio (1) wm (1) philosophy (1) kindle (1) pointless (1) perl (1)

Elsewhere

Quod vide


Copyright © 2010-2018 Vítor De Araújo
O conteúdo deste blog, a menos que de outra forma especificado, pode ser utilizado segundo os termos da licença Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.

Powered by Blognir.