Hacking Apple TV

De Area31 Hackerspace
Responsável:
* Raphael Bastos
Apple-TV-3.png

O hackerspace possui hoje uma Apple TV de terceira geração disponível para hack. :D

Instalação do PLEX (media center) sem necessidade de jailbreak

Plex on atv3 01.jpg Plex on atv3 02.jpg Plex on atv3 03.jpg Plex on atv3 04.jpg Plex on atv3 08.jpg Plex on atv3 09.jpg


Instalação do Plex Connect no Linux

Obtenha o código fonte do Plex Connect

cd /opt ; git clone https://github.com/area31/PlexConnect


Crie os certificados SSL para o DNS Fake

cd /opt/PlexConnect/assets/certificates/
openssl req -new -nodes -newkey rsa:2048 -out trailers.pem -keyout trailers.key -x509 -days 365 -subj "/C=US/CN=trailers.apple.com"
openssl x509 -in trailers.pem -outform der -out trailers.cer && cat trailers.key >> trailers.pem


Configure um fake DNS usando o BIND (opcional)

Recomendo usar o bind pela estabilidade oferecida. Segue uma configuração a ser realizada no arquivo named.conf:

####################################################################################################
# Plex on AppleTV

zone "trailers.apple.com" IN {
    type master;
    file "master/trailers.apple.com.zone";
};


# Previne update da AppleTV

zone "mesu.apple.com" IN { type master; file "master/noupdate.apple.com.zone"; };
zone "appldnld.apple.com" IN { type master; file "master/noupdate.apple.com.zone"; };
zone "appldnld.apple.com.edgesuite.net" IN { type master; file "master/noupdate.apple.com.zone"; };

####################################################################################################


Crie o arquivo de zona:

vi /var/lib/named/master/trailers.apple.com.zone
$TTL 300
@               IN SOA  @   root (
                                42              ; serial (d. adams)
                                2D              ; refresh
                                4H              ; retry
                                6W              ; expiry
                                1W )            ; minimum

                IN NS           @
                IN A            192.168.100.254

Corrija a permissão dos arquivos:

chown named. /var/lib/named/master/trailers.apple.com.zone ; cp -p /var/lib/named/master/noupdate.apple.com.zone

Confira se está corretamente configurado:

named-checkconf -z

Reinicie o serviço de DNS:

/etc/init.d/named restart


Desative o DNS em python do PlexConnect:

sed -i s,'enable_dnsserver = True','enable_dnsserver = False',g /opt/PlexConnect/Settings.cfg


Execute o Plex Connect

Altere a porta padrão do webserver em python para instalação do certificado:

sed -i s,'port_webserver = 80','port_webserver = 32480',g /opt/PlexConnect/Settings.cfg


cd /opt/PlexConnect && python2.7 PlexConnect.py

Caso não tenha nenhum serviço nas portas 80, 443 e 53 tudo será executado sem problemas. Deixe o processo rodando, pode ser em nohup. ;)


Instale os certificados SSL na Apple TV

Acesse as configurações da Apple TV de rede, e configure o DNS apontando para o IP do Linux ao qual está sendo executado o PlexConnect.py.

Plex on atv3 05.jpg

Acesse o menu principal dos ajustes, e na opção "Enviar dados a Apple" selecione NÃO. Após isso, pare sobre a opção sem clicar, e pressione o botão PLAY.

Plex on atv3 07.jpg


Surgirá uma tela para criação do perfil. Selecione que deseja criar um perfil, e preencha o endereço conforme abaixo, supondo que o IP do Linux é o 192.168.100.254:

Digite conforme imagem abaixo o endereço:

http://192.168.100.254:32480/trailers.cer

Plex on atv3 06.jpg


Após isso, reinicie sua Apple TV (pressione os botões "Menu+direcional para baixo" durante 6s). Após o reboot, acesse no menu principal o ícone "Trailers". voilá! Você está dentro do Plex. :D


Instale o Plex Media Center no Funtoo Linux (compatível 100% com Gentoo Linux)

echo app-portage/layman mercurial >>/etc/portage/package.use
emerge layman


Adicione no arquivo de configuração o repositório megacoffee conforme exemplo abaixo:

vi /etc/layman/layman.cfg
overlays  : http://www.gentoo.org/proj/en/overlays/repositories.xml
            http://gentoo-overlay.megacoffee.net/repositories.xml

#-----------------------------------------------------------


Atualize os repositórios:

layman -f


Após atualizar, adicione o overlay "MegaCoffee":

layman -a megacoffee


Atualize seu /etc/make.conf

Adicione o overlay

PORTDIR_OVERLAY="
/var/lib/layman/megacoffee
"


Adicione as flags globais

USE='gtk utils X'


Instale o Plex Media Server

emerge plex-media-server


Execute o Plex Media Server

/etc/init.d/plex-media-server start


Adicione o Plex ao boot do Funtoo

rc-update add plex-media-server default


Personalize o boot, caso seja o mesmo servidor de Plex Media Center e Plex Connect

Personalize seu script de init do Plex conforme abaixo:

vi /etc/init.d/plex-media-server
#!/sbin/runscript

depend() {
        need netif.eth1
        need avahi-daemon
}

start() {
        ebegin "Starting Plex Media Server"
        start-stop-daemon -S -m -p /var/run/plex-connect.pid -1 /var/log/pms/plex-connect.log -2 /var/log/pms/err-plex-connect.log --quiet -u root -N -5 -b --exec /opt/PlexConnect/PlexConnect.py

        start-stop-daemon -S -m -p /var/run/plex-media-server.pid -1 /var/log/pms/out.log -2 /var/log/pms/err.log --quiet -u plex -N -5 -b --exec /usr/sbin/start_pms
        eend $?
}

stop() {
        ebegin "Stopping Plex Media Server"
        start-stop-daemon --stop --pidfile /var/run/plex-media-server.pid --quiet --exec /usr/sbin/start_pms
        #kill -- -`cat /var/run/plex-media-server.pid`
        kill -- -`cat /var/run/plex-connect.pid`
        killall -9 -u plex
        eend $?
}

restart() {
        stop
        sleep 3
        start
}


PS: Lembre-se de alterar o cabeçalho do script python caso seu python default do sistema não seja a versão 2.7 conforme exemplo abaixo (a minha versão do python default é a 3.3):

vi /opt/PlexConnect/PlexConnect.py
#!/usr/bin/env python2.7


Acesse via Browser e personalize seu sistema

É possível criar bibliotecas novas de filmes, músicas e outros. Acesse via browser:

http://192.168.100.254:32400/manage

Plex on pc search01.png Plex on pc search02.png Plex on pc search03.png


Após isso, basta acessar via Apple TV seu media center. \o/

É possível criar bibliotecas via rede, usando NFS, DRBD. CIFS... use sua imaginação. ;)


PLEX para arquitetura ARM

http://plexrpms.markwalker.dk/arm/

PLEX on Raspberry Pi

#!/bin/sh
cd ~/pms
export PLEX_MEDIA_SERVER_MAX_PLUGIN_PROCS=6
export PLEX_MEDIA_SERVER_HOME=`pwd`
export PLEX_MEDIA_SERVER_MAX_STACK_SIZE=3000
export PLEX_MEDIA_SERVER_TMPDIR=/tmp
export 'PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR="`pwd`/Library/Application\ Support"
export LD_LIBRARY_PATH=`pwd`
export TMPDIR=/tmp
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
ulimit -n 4096
ulimit -l 3000
ulimit -s 8192
'./Plex Media Server'

Acesso:

http://<ip rasp>:32400/web/index.html


Linux on Apple TV first generation (based on x86)

http://www.mythic-beasts.com/resources/appletv/walk-through.html


Jailbreak Apple TV 3rd Gen

Estamos tentando fazer jailbreak na Apple TV terceira geração, porém ainda não saiu nada oficial:

http://snow3rd.com


Outras opções de Jailbreak da Apple TV

http://ijailbrk.com



Caso você tenha atualizado o iOS da Apple TV

http://9to5mac.com/2013/07/22/plex-ios-app-updated-with-more-responsive-browser-other-performance-improvements/

https://langui.sh/2013/08/27/appletv-ssl-plexconnect/

http://9to5mac.com/2013/08/28/workaround-restores-plexconnect-after-apple-tv-update-broke-it/

http://9to5mac.com/2013/08/27/apple-broke-plexconnect-apple-tv-hack-with-this-mornings-update/

https://forums.plex.tv/index.php/topic/83700-exact-way-to-get-plex-on-apple-tv-3/

Referências:

http://samkear.com/software/linux/install-plex-media-server-funtoo-linux
https://github.com/iBaa/PlexConnect/wiki/OSX-and-ATV-with-5.2-firmware-and-ethernet-internet-connection-installation-guide
https://forums.plex.tv/index.php/topic/54447-raspberry-pi-plex-media-server/