Teknik^tDR
Versió 3.x!

Mac

Algunes notes més sobre usuaris a l’Apple TV

 
per teknik el 23 agost 2011 | Informàtica, Mac, Seguretat, Sistemes

A un post anterior vaig explicar com crear un usuari que no fos frontrow. En aquest post explicaré algunes millores més que es poden aplicar per poder fer servir de manera més còmoda el nostre nou usuari.

Sudoers

Per permetre poder fer servir sudo amb el nou usuari (en el meu cas teknik) cal afegir-lo al grup admin. Per fer-ho, entrem com a root i l’afegim:

login frontrow                                          # de moment cal fer-ho com a "frontrow" ;)
sudo niutil -appendprop / /groups/admin users teknik
sudo niutil -read . /groups/admin  # comprovem que efectivament  l'usuari està al grup

Cal recordar desconnectar de l’Apple TV perquè els canvis siguin efectius.

“Clon” de l’usuari frontrow

Igual que a l’anterior post vem crear un usuari alternatiu a frontrow però amb el seu propi UID i GID, també podem crear un usuari alternatiu a frontrow, amb el mateix UID i GID però amb un altre password. Per crear el password cal veure el post anterior, o be podem fer servidor el mateix password que amb l’anterior usuari amb el següent:

sudo niutil -read . /users/teknik

i fent servir el password als següents passos, a on posa (hash):

sudo niutil -create / /users/frontrowx # Creem l'usuari "frontrowx"
sudo niutil -createprop / /users/frontrowx uid 501 # Li donem un UID = 501 (el mateix que l'usuari frontrow)
sudo niutil -createprop / /users/frontrowx gid 501 # Li donem un GID = 501, que creem després
sudo niutil -createprop / /users/frontrowx home /Users/frontrow # Li assignem el home a l'usuari
sudo niutil -createprop / /users/frontrowx shell /bin/bash # Li assignem el shell a l'usuari
sudo niutil -createprop . /users/frontrowx passwd (hash)
sudo niutil -createprop . /users/frontrowx authentication_authority ";basic;"
sudo niutil -read . /users/frontrowx
sudo niutil -appendprop / /groups/admin users frontrowx

També aprofito per incloure’l al grup admin.

Crear un usuari a l’Apple TV per a major seguretat

 
per teknik el 18 febrer 2011 | Informàtica, Mac, Seguretat, Sistemes

Fa uns dies vaig començar a donar-li voltes al tema de que el meu Apple TV li tinc posat el SSH (entre d’altres coses!) i que accedint per SSH l’usuari i password són trivials (frontrow/frontrow). Com que m’agrada tenir les coses una mica en condicions vaig decidir que, encara que tingui el dispositiu a la xarxa de casa sense tenir-lo exposat al mon exterior, m’agradaria no tenir-lo amb usuari i password coneguts. Així que vaig decidir investigar opcions.

AVIS: el que es descriu en aquest article pot provocar problemes en el teu Apple TV, així que si no saps molt be el que fas millor no ho provis. O en qualsevol cas, JO NO ME’N FAIG RESPONSABLE.

La opció més directa, la de canviar-li el password a l’usuari frontrow, sembla ser que no és molt recomenable, ja que pot donar problemes amb part del software instal·lat al dispositiu.

Després d’això, vaig veure que es suggeria la possibilitat de forçar l’autentificació per clau pública/privada. Tot i que és una bona opció, i força més segura que el típic usuari i password, a mi no em resulta convenient.

Finalment vaig veure una tercera opció, que és desactivar el login a través d’SSH de frontrow, mantenint la contrassenya, i crear un nou usuari amb el qual poder logar-me sense problemes. I aquí és un va començar la part interessant…

Primer vaig buscar com crear usuaris. Resulta que els Apple TV de primera generació utilitzen una versió modificada de Mac OS X 10.4 “Tiger”. I modificada vol dir, entre altres coses, retallada. Per tant, per la base de dades d’usuaris utilitzen NetInfo, que és una base de dades binaria. Els fitxers tradicionals d’Unix com /etc/passwd només s’utilitzen en mode single user. Apart, vaig comprovar que al sistema no hi havia el binari passwd. Actualment no tinc accés a cap sistema amb Tiger, l’únic que tenia va ser actualitzat fa temps a Snow Leopard. I resulta que NetInfo va desaparèixer a Leopard. Per tant, no podia passar el binari des de cap sistema (ja deixant de banda els problemes de dependències que havia llegit que hi havia). Calia trobar una altra solució…

Investigant vaig veure que la utilitat per manipular la BBDD de NetInfo si que es trobava al sistema: niutil. Després de mirar a diversos llocs, vaig crear un usuari de la següent manera (el texte subratllat és el que caldria canviar per crear-ne un de diferent).

sudo niutil -create / /users/teknik              # Creem l'usuari "teknik"
sudo niutil -createprop / /users/teknik uid 502  # Li donem un UID = 502 (l'usuari frontrow te el 501)
sudo niutil -createprop / /users/teknik gid 502  # Li donem un GID = 502, que creem després
sudo niutil -create / /groups/teknik             # Creem el grup "teknik"
sudo niutil -createprop / /groups/teknik gid 502 # Li donem un GID = 502 (igual que el de l'usuari, clar)
sudo mkdir /Users/teknik                         # Creem el home
sudo chown -R teknik:teknik /Users/teknik        # Li donem permisos a l'usuari i el grup
sudo niutil -createprop / /users/teknik home /Users/teknik # Li assignem el home a l'usuari
sudo niutil -createprop / /users/teknik shell /bin/bash    # Li assignem el shell a l'usuari

Amb això ja tenim l’usuari creat amb el seu home directory. Ara ens falta assignar-li una contrasenya. Però la qüestió és que no tenim la utilitat passwd al sistema. Una de les formes de crear-la la he trobat posteriorment a aquesta discussió, a on diu que per generar el hash de la nostre contrasenya podem fer servir OpenSSL des d’una altra màquina. En concret, si volem que la nostra contrasenya sigui “cheese” fariem el següent:

$ openssl passwd cheese
2bbFk0yBBCLC.  # Això no serà el que obtindràs, mira el comentari sobre la sal.

El hash obtingut el posariem a la base de dades de NetInfo com veurem després. Aquest mètode serveix per qualsevol sistema a on tinguem accés a OpenSSL, sigui Mac OS X, Linux o Windows. Cal dir que aquest mètode no l’he provat, i tampoc puc comparar simplement els valors dels hash amb els del següent mètode ja que tenen sal.

Ja vaig fer servir un altre mètode (que vaig esbrinar per prova i error) que serveix per màquines amb OS X. En el meu cas ho vaig fer amb un Snow Leopard, però hauria de servir perfectament un Leopard o un Tiger, o probablement versions anteriors.

Primer vaig copiar el fitxer /etc/master.passwd al meu home. D’aquesta forma els següents passos els podré fer sobre aquest fitxer sense malmetre l’original. Això és prou important si no volem arriscar-nos a tenir problemes amb el sistema posteriorment. Un cop feta la còpia, vaig fer servir una sintaxi de passwd a OS X que em permet especificar-li el tipus de base de dades a utilitzar (en aquest cas tipus file, per fer servir un fitxer de texte pla tipus Unix) i a on trobar-la (./master.passwd.tmp). Per tant, des del meu home i com a usuari normal, vaig fer el següent:

sudo cp /etc/master.passwd ./master.passwd.tmp
sudo passwd -i file -l ./master.passwd.tmp root
sudo more ./master.passwd.tmp
sudo rm ./master.passwd.tmp

Cal notar que vaig fent sudo perquè el master.passwd te com a propietari root i com a permisos 600 (només l’usuari root el pot llegir). Inclús si ho canviem, a l’executar passwd es resetejarà. Així que compte amb teclejar-ho tot exactament com ho he posat.

Fixeu-vos que l’usuari al qual li canvi la contrasenya és l’usuari root, però tenint en compte que no és el root del sistema, sinó de la nostra còpia del fitxer master.passwd. Perquè això? Perquè el fitxer només es fa servir en mode single user, i per tant no és una còpia actualitzada dels usuaris del sistema. I perquè passwd només permet canviar la contrasenya d’usuaris presents al fitxer, i root hi és. I finalment perquè només ens interessa el hash, i per tant és indiferent sobre quin usuari fem aquesta operació. Amb l’última ordre tindrem un llistat del fitxer. Buscarem el hash de l’usuari root i el copiarem, per fer-lo servir al següent pas.

sudo niutil -createprop . /users/teknik passwd (hash)
sudo niutil -createprop . /users/teknik authentication_authority ";basic;"
sudo niutil -read . /users/teknik

A la primera linia posarem el hash a la base de dades. Però amb això únicament no n’hi ha prou. Vaig intentar logar-me i em va ser impossible. La segona linia és necessaria per que Apple TV ens reconegui la contrassenya. Finalment l’última linia ens permet comprovar que tot està correcte. El resultat el podem comparar amb el de l’usuari frontrow per veure que tot és correcte. Faltarà alguna propietat, però amb les que hem posat és més que suficient per treballar amb l’usuari amb normalitat.

Per rematar-ho, provem que podem logar-nos amb normalitat amb l’usuari nou:

ssh teknik@appletv.local

Un cop ho haguem comprovat, podem procedir a bloquejar l’usuari frontrow a l’SSH modificant /etc/sshd_config de la següent manera, i finalment reiniciant l’Apple TV.

sudo bash
echo "DenyUsers frontrow" >> /etc/sshd_config
reboot

Per tant, a partir d’aleshores ens haurem de logar amb el nou usuari, ja que si ho intentem amb el frontrow obtindrem un error:

ssh frontrow@appletv.local.
frontrow@appletv.local.'s password: ****
Permission denied, please try again.
frontrow@appletv.local.'s password: (ctrl-c per sortir)

Ah! I el detall final és que no tenim su per canviar d’usuari, però si que tenim login. Així que si volem passar a l’usuari frontrow un cop logats amb el nou usuari, podem fer:

login frontrow

des de dins de l’Apple TV.

Espero que us sigui útil!

Patchstick per Apple TV “Take Three” (3.0.2)

 
per teknik el 8 abril 2010 | Hacking, Mac

Recentment vaig actualitzar el software del meu Apple TV, amb el que em vaig quedar amb un 3.0.2. Fins aleshores havia tingut un “1.0+“, que és com al seu moment se li va dir a la versió 1.0 amb les millores de la 1.1 (p.ex. YouTube) aplicades de manera manual. Per que es feia això? Doncs perquè la versió 1.0 era un Mac OS X bastant poc “retallat”, la 1.1 eliminava moltes coses (p.ex. suport al kernel per muntar volums SMB), i tornar-les a tenir implicava prou més feina que el obtenir les millores de la 1.1 de manera manual.

Be, aleshores tornem a la nova versió. Per crear el nou patchstick cal anar a la pàgina de l’atvusb-creator. Des d’allà es pot descarregar la versió de Mac OS X (atvusb-creator) i la de Windows (atv-win). En principi em vaig trobar amb alguns problemes amb la versió d’OS X (crec que finalment era únicament el problema amb els discs USB, ho veiem més endevant), per això al final vaig fer el patchstick amb la versió de Windows.

Un cop instal·lat permet sel·leccionar la versió del firmware instal·lat a l’Apple TV, de forma que es baixa els fitxers necessaris per crear el patchstick. Amb la versió actual només apareix la versió 3.0.1 de firmware. Per poder-ho fer servir amb la 3.0.2 cal baixar el fitxer DMG, o be donar-li la URL. Aquesta la podem trobar a Featured downloads, al link Show All. A dins trobarem un fitxer anomenat latest_ATV_dmg.xml i dins aquest la URL per descarregar l’últim firmware (en forma de DMG). Per la 3.0.2 la URL és http://mesu.apple.com/data/OS/061-7495.20100210.TAVfr/2Z694-6013-013.dmg .

Per crear el patchstick activarem les opcions de SSH i de Launcher. Per últim clickarem a Create Patchstick. Ens demanarà a on guardar la imatge, que després farem servir amb la utilitat USBIt per, definitivament, crear el patchsitck. Detalls importants: cal fer servir el mode de dispositiu (Device), no el de volum. I haurem de fer servir el botó de Restore i proporcionar-li la imatge que hem creat a l’anterior pas.

Per aplicar el patchstick cal connectar-lo a la part del darrera de l’Apple TV i reiniciar-lo mantenint pulsats els botons Menu i fins que es reinicii.

Important: A mi em va caldre provar-ho amb tres discs USB fins que un d’ells em va funcionar: un Kinston de 16 GB (en teoria el límit màxim de capacitat acceptable), un EMC de 8 GB, i finalment un SanDisk de 2 GB amb funcionament dual com a lector de tarjes MicroSD. Amb aquest últim no hi tenia moltes esperances, però resulta que és el que va funcionar!

La guia completa la tenim aquí (en anglès).

Altres trucs:

Si ens apareix un error 3 a la utilitat USBIt, o si volem reformatejar el disc USB de nou per fer-lo servir a Windows, haurem de fer servir la utilitat diskpart. Per fer-ho cal que obrim una línia de comandes fent Menú de Inicio > Ejecutar… > cmd i, des d’allà, cridant a diskpart. Si estem a Windows Vista i tenim UAC ens demanarà permís per elevar privilegis. Un cop a dins, haurem de buscar el pendrive fent un “list disk” i després haurem de sel·leccionar-lo fent un “select disk=X“, a on X és el número del disc que hem vist al pas anterior. Per últim fem un “clean disk” i un “exit” per sortir. Un cop fet tot això, expulsem el disc USB de manera segura, el tornarem a connectar i el formatarem de manera normal.

Si ens apareix un error 32 a la utilitat USBIt. (disc ocupat) el més fàcil és que l’expulsem i el tornem a connectar. Ens assegurem que no hi ha cap finestra de l’Explorador de Windows oberta al disc USB i que tampoc tenim la finestreta de l’AutoPlay oberta, fem un “Refresh” a USBIt i ho tornem a intentar.

Per finalitzar, dir que en un altre article explicaré com instal·lar XBMC, Boxee i NitoTV. És prou senzill, però no està de més posar-ho tot en un article! :D

Veure pel·lícules en xarxa amb l’Apple TV

 
per teknik el 7 abril 2010 | Hacking, Mac

Aquest article ha estat com a esborrany al blog durant força temps (crec que uns 6 mesos!). Crec recordar que no l’havia publicat perquè abans volia publicar un sobre com aplicar un patchstick per poder obtenir accés al dispositiu (per exemple amb SSH!), o per poder muntar unitats de xarxa amb AFP o SMB. També faltaria explicar com muntar les unitats de xarxa…

Com que ara tinc l’Apple TV actualitzat a “Take Three” (concretament 3.0.2) i en breu vull publicar un article sobre com aplicar el patchstick, el publicaré tal qual. Comencem!


Un cop fet això ens podem topar amb un problema, i és que si fem servir la Wi-Fi per accedir a les carpetes compartides ens trobem que en escenes amb una mica de moviment el vídeo es quedi “clavat”. Això és degut a dos factors:

  • quan hi ha molt moviment, o molt detall a l’escena, el codificador necessita utilitzar més ample de banda per codificar les imatges, o sigui, més bytes,
  • la configuració de xarxa no és precisament òptima, i per tant no es pot transmetre el màxim d’informació esperat.

Al combinar-los tenim que quan hi ha molt moviment augmenta l’ample de banda a transmetre, i com la xarxa no rendeix prou be es col·lapsa, deixant al reproductor sense informació que reproduir. Això es podria solucionar de tres formes:

  • fent que el reproductor fos conscient que està fent servir la xarxa per passar les dades, o sigui, fent streaming,
  • reduint el tamany de les dades (idealment recodificant al vol, possiblement a bitrate constant),
  • o be, senzillament millorant l’eficiència de la xarxa, cosa que vaig trobar com fer-ho a l’Apple TV al següent enllaç: Optimize network throughput on your Apple TV.

Bàsicament, el que veiem a l’últim punt és que hem de crear un fitxer sysctl.conf amb el següent contingut:

kern.ipc.somaxconn=512
net.inet.tcp.mssdflt=1460
net.inet.tcp.sendspace=98304
net.inet.tcp.recvspace=98304
kern.ipc.maxsockbuf=1048576
net.inet.udp.maxdgram=57344
net.inet.udp.recvspace=42080
net.local.stream.sendspace=98304
net.local.stream.recvspace=98304
net.inet.tcp.delayed_ack=0
net.inet.tcp.rfc1323=1
net.inet.tcp.rfc1644=1
net.inet.tcp.newreno=1

i aleshores el pujem amb scp a l’Apple TV (lògicament hem d’haver habilitat SSH a l’Apple TV!). L’hem de posar a /etc/sysctl.conf. Per finalitzar, reiniciem l’Apple TV, o be apagant-lo o be des de la pròpia consola amb SSH amb sudo reboot.

Com instal·lar iLife ’09 a qualsevol Mac

 
per teknik el 9 agost 2009 | Informàtica, Mac

Volia instal·lar iLife ’09 a un MacBook amb iLife ’08 de serie. Uns amics em van deixar un DVD d’instal·lació original d’un iMac del 2009 per instal·lar-ho, i quan vaig anar-ho a fer… m’apareix un missatge dient bàsicament que aquell DVD estava fet per ser instal·lat en un altre hardware, o sigui, el iMac del model dels meus amics. Total, que buscant una mica a la web vaig trobar les següents instruccions, que si be són per instal·lar un iLife ’08 en una versió diferent de OS X, també em van servir per el cas.

Bàsicament el tema consisteix en buscar la comprovació del hardware. Per fer-ho cal:

  • Mostrar els fitxers ocults,
  • Copiar del DVD a una carpeta del disc dur el fitxer “Install Bundled Software.mpkg” i la carpeta “System”,
  • Mostrar els continguts de “Install Bundled Software.mpkg” (fent click amb el botó dret) i buscar el fitxer “Install Bundled Software.dist”, editar-lo amb el TextEdit mateix,
  • Buscar la funció: hwbeModelCheck() i afegir la linia “return true;” al principi, i guardar. Hauria de quedar així:
function hwbeModelCheck() {

    return true;

    try {
        var modelProp = system.sysctl('hw.model');
    }
    catch(e) {
        system.log('hwbeInstallCheck threw exception ' + e);
    }

    var machineCount = hwbeSupportedMachines.length;

    for ( var i = 0; i < machineCount; i++ ) {
        if ( modelProp == hwbeSupportedMachines[i] ) {
            return true;
        }
    }

    return false;

}

Amb això ja podem instal·lar el paquet (des de la còpia del disc dur!). Ah! I cal recordar tornar a ocultar els fitxers ocults seguint les instruccions al post a on posa com mostrar-los!

Apple TV powned!

 
per teknik el 24 setembre 2007 | Mac

Després d’investigar una mica, ha trobat la forma d’accedir a l’Apple TV sense haver d’obrir-lo… Buscant vaig arribat a la pàgina de “Hacking the Apple TV“. Aquí s’expliquen les diverses opcions. Si disposes d’accés a qualsevol Intel Mac, el millor és utilitzar el patchstick de la gent d’AwkwardTV.org. Per utilitzar-lo cal baixar l’actualització del software d’Apple TV i seguir les instruccions per crear un pendrive que, conectat a l’Apple TV, al reiniciar-lo en mode de servei parxejarà l’Apple TV. El pendrive necessari ha de ser de, com a mínim, 128 Mb (justament en tenia un vell per casa d’exactament 128 Mb!).

Per entrar en mode de servei només cal mantenir pulsats al comandament els botons de “-” i “Menú” durant 6 segons. Un cop el patchstick inicii la seva feina, veurem una pantalla en mode de texte que ens va indicant el que va fent. Apareixeran alguns errors que podem ignorar tranquilament, i al final reiniciarà l’Apple TV (avisa amb un missatge a la part inferior de la pantalla que diu que es reiniciarà en 30 segons, 20…). Aleshores, just en l’instant que la pantalla “salta”, podem treure el pendrive, ja que si no torna a iniciar el procés (sense efectes adversos…).

Després del parxeig, com em entrat en mode de servei, ens torna a demanar l’idioma i la ressolució de pantalla, així com si volem reiniciar, executar uns diagnòstics o retornar als valors de fàbrica. Lògicament hem de sel·leccionar la primera opció (a menys que volguem executar els diagnòstics), ja que l’última desfaria la feina que acabem de fer…

Per cert, un parell de coses a destacar: si a la màquina des d’on construim el patchstick hi ha Perian (códecs per QuickTime) aquest també s’instal·la durant el procés de parxeig i ja podrem veure qualsevol vídeo. I segon, per poder fer cosetes interessants caldrà anar al menú d’Awkward TV i activar el SSH…

Properament us explicaré com actualitzar el soft d’Apple TV 1.0 a “1.0+”, això és, amb les millores del software 1.1 però sense perdre algunes funcionalitats de la versió 1.0 que han tret a la 1.1…

Apple TV

 
per teknik el 7 setembre 2007 | Mac

Per el meu aniversari aquest any m’han regalat un Apple TV! :D Be, el cas és que un cop instal·lat, veus el que probablement sigui la seva carència més gran… no reprodueix qualsevol contingut!

He començat a investigar per poder posar-li códecs adicionals. De moment això fa una miqueta de “yuyu”, ja que a la major part de pàgines et diuen que cal obrir-lo per conectar el disc dur a un Mac i poder activar el SSH! A més, per obrir-lo cal desenganxar la base de goma, el que de per si ja dona força “mal rollito”. :P

Més informació en breu!