Hacking Apple TV: mudanças entre as edições

De Área31 Hackerspace
Sem resumo de edição
Sem resumo de edição
(31 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 2: Linha 2:
  * [[Raphael Bastos - Coffnix|Raphael Bastos]]
  * [[Raphael Bastos - Coffnix|Raphael Bastos]]


[[Image:Apple-TV-3.png|thumb|200px]]
[[Image:Apple-TV-3.png|thumb|350px]]
__TOC__
__TOC__


Linha 9: Linha 9:
= Instalação do PLEX (media center) sem necessidade de jailbreak =
= Instalação do PLEX (media center) sem necessidade de jailbreak =


[[Image:Plex on atv3 01.jpg|235px]] [[Image:Plex on atv3 02.jpg|300px]] [[Image:Plex on atv3 03.jpg|300px]] [[Image:Plex on atv3 04.jpg|300px]]
[[Image:Plex on atv3 01.jpg|235px]] [[Image:Plex on atv3 02.jpg|300px]] [[Image:Plex on atv3 03.jpg|300px]] [[Image:Plex on atv3 04.jpg|300px]] [[Image:Plex on atv3 08.jpg|300px]] [[Image:Plex on atv3 09.jpg|300px]]




== Instalação do Plex Connect no Linux ==
== Instalação do Plex Connect no Linux ==
=== Obtenha o código fonte do Plex Connect ===
=== Obtenha o código fonte do Plex Connect ===
cd /opt ; git clone https://github.com/iBaa/PlexConnect.git
{{console|body=
###i## cd /opt ; git clone https://github.com/area31/PlexConnect
}}


=== Crie os certificados SSL para o DNS Fake ===
{{console|body=
###i## cd /opt/PlexConnect/assets/certificates/
###i## openssl req -new -nodes -newkey rsa:2048 -out trailers.pem -keyout trailers.key -x509 -days 365 -subj "/C=US/CN=trailers.apple.com"
###i## 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:
{{file|name=/etc/bind/named.conf|desc=bind config dns zone|body=
# 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:
{{console|body=
###i## vi /var/lib/named/master/trailers.apple.com.zone
}}
{{file|name=/var/lib/named/master/trailers.apple.com.zone|desc=arquivo fake dns zone|body=
$TTL 300
@              IN SOA  @  root (
                                42              ; serial (d. adams)
                                2D              ; refresh
                                4H              ; retry
                                6W              ; expiry
                                1W )            ; minimum


=== Crie os certificados SSL para o DNS Fake ===
                IN NS          @
cd /opt/PlexConnect
                IN A            192.168.100.254
}}
 
Corrija a permissão dos arquivos:
{{console|body=
###i## chown named. /var/lib/named/master/trailers.apple.com.zone ; cp -p /var/lib/named/master/noupdate.apple.com.zone
}}


openssl req -new -nodes -newkey rsa:2048 -out trailers.pem -keyout trailers.key -x509 -days 365 -subj "/C=US/CN=trailers.apple.com"
Confira se está corretamente configurado:
{{console|body=
###i## named-checkconf -z
}}


openssl x509 -in trailers.pem -outform der -out trailers.cer && cat trailers.key >> trailers.pem
Reinicie o serviço de DNS:
{{console|body=
###i## /etc/init.d/named restart
}}


mv trailers.* /opt/PlexConnect/assets/certificates/
Desative o DNS em python do PlexConnect:
{{console|body=
###i## sed -i s,'enable_dnsserver = True','enable_dnsserver = False',g /opt/PlexConnect/Settings.cfg
}}


=== Execute o Plex Connect ===
=== Execute o Plex Connect ===
cd /opt/PlexConnect && python2.7 PlexConnect.py
Altere a porta padrão do webserver em python para instalação do certificado:
{{console|body=
###i## sed -i s,'port_webserver = 80','port_webserver = 32480',g /opt/PlexConnect/Settings.cfg
###i## 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'''. ;)
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 ===
=== 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'''.
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'''.
[[Image:Plex on atv3 05.jpg|300px]]
[[Image:Plex on atv3 05.jpg|300px]]


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.


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.
[[Image:Plex on atv3 07.jpg|300px]]
[[Image:Plex on atv3 07.jpg|300px]]




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:
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
[[Image:Plex on atv3 06.jpg|300px]]
[[Image:Plex on atv3 06.jpg|300px]]




== Instale o Plex Media Center no Funtoo Linux (compatível 100% com Gentoo Linux) ==
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
echo app-portage/layman mercurial >>/etc/portage/package.use


emerge layman


= Instale o Plex Media Center no Funtoo Linux (compatível 100% com Gentoo Linux) =
{{console|body=
###i## echo app-portage/layman mercurial >>/etc/portage/package.use
###i## emerge layman
}}


Adicione no arquivo de configuração o repositório megacoffee conforme exemplo abaixo:
Adicione no arquivo de configuração o repositório megacoffee conforme exemplo abaixo:
vi /etc/layman/layman.cfg
{{console|body=
###i## vi /etc/layman/layman.cfg
}}


<pre>
{{file|name=/etc/layman/layman.cfg|body=
overlays  : http://www.gentoo.org/proj/en/overlays/repositories.xml
overlays  : http://www.gentoo.org/proj/en/overlays/repositories.xml
             http://gentoo-overlay.megacoffee.net/repositories.xml
             http://gentoo-overlay.megacoffee.net/repositories.xml
}}
Atualize os repositórios:
{{console|body=
###i## layman -f
}}
Após atualizar, adicione o overlay "MegaCoffee":
{{console|body=
###i## layman -a megacoffee
}}
== Atualize seu '''/etc/make.conf''' ==
=== Adicione o overlay ===
{{file|name=/etc/make.conf|desc=megacofee overlay|body=
PORTDIR_OVERLAY="
/var/lib/layman/megacoffee
"
}}
== Instale o Plex Media Server ==
{{console|body=
###i## emerge plex-media-server
}}
== Execute o Plex Media Server ==
{{console|body=
###i## /etc/init.d/plex-media-server start
}}
== Adicione o Plex ao boot do Funtoo ==
{{console|body=
###i## 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:
{{console|body=
###i## vi /etc/init.d/plex-media-server
}}
{{file|name=/etc/init.d/plex-media-server|desc=init plex|body=
#!/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):
{{console|body=
###i## vi /opt/PlexConnect/PlexConnect.py
}}
{{console|body=
#!/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


#-----------------------------------------------------------
[[Image:Plex on pc search01.png|300px]] [[Image:Plex on pc search02.png|300px]] [[Image:Plex on pc search03.png|300px]]
</pre>




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 ===
{{console|body=
#!/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) =
= Linux on Apple TV first generation (based on x86) =
http://www.mythic-beasts.com/resources/appletv/walk-through.html
http://www.mythic-beasts.com/resources/appletv/walk-through.html




= Jailbreak Apple TV 3rd Gen =
= Jailbreak Apple TV 3rd Gen =
Estamos tentando fazer jailbreak na Apple TV terceira geração, porém ainda não saiu nada oficial:
Estamos tentando fazer jailbreak na Apple TV terceira geração, porém ainda não saiu nada oficial:
http://snow3rd.com
 
http://snow3rd.com




== Outras opções de Jailbreak da Apple TV ==
== Outras opções de Jailbreak da Apple TV ==
http://ijailbrk.com
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:
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
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/


[[Categoria:Projetos]]
[[Categoria:Hacking Projects]]
[[Categoria:SoftwareOpensource]]
[[Categoria:SoftwareOpensource]]

Edição das 18h33min de 12 de fevereiro de 2019

Responsável:
* Raphael Bastos

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


Instalação do Plex Connect no Linux

Obtenha o código fonte do Plex Connect

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

Crie os certificados SSL para o DNS Fake

root # cd /opt/PlexConnect/assets/certificates/
root # openssl req -new -nodes -newkey rsa:2048 -out trailers.pem -keyout trailers.key -x509 -days 365 -subj "/C=US/CN=trailers.apple.com"
root # 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:

   /etc/bind/named.conf - bind config dns zone
# 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:

root # vi /var/lib/named/master/trailers.apple.com.zone
   /var/lib/named/master/trailers.apple.com.zone - arquivo fake dns 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:

root # 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:

root # named-checkconf -z

Reinicie o serviço de DNS:

root # /etc/init.d/named restart

Desative o DNS em python do PlexConnect:

root # 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:

root # sed -i s,'port_webserver = 80','port_webserver = 32480',g /opt/PlexConnect/Settings.cfg
root # 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.

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.


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


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)

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

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

root # vi /etc/layman/layman.cfg
   /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:

root # layman -f

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

root # layman -a megacoffee

Atualize seu /etc/make.conf

Adicione o overlay

   /etc/make.conf - megacofee overlay
PORTDIR_OVERLAY="
/var/lib/layman/megacoffee
"


Instale o Plex Media Server

root # emerge plex-media-server

Execute o Plex Media Server

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

Adicione o Plex ao boot do Funtoo

root # 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:

root # vi /etc/init.d/plex-media-server


   /etc/init.d/plex-media-server - init plex
#!/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):

root # vi /opt/PlexConnect/PlexConnect.py
root #!/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


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

root #!/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/

Cookies nos ajudam a entregar nossos serviços. Ao usar nossos serviços, você concorda com o uso de cookies.