"Después del juego es antes del juego"
Sepp Herberger

jueves, 28 de septiembre de 2017

Más Flash en los libros digitales: Editorial Santillana.

Ya hablamos del Flash en los libros digitales de Oxford. Esta semana me ha tocado lidiar con los libros digitales de francés de la Editorial Santillana: Parachute 1/2 y Lycée A1. Como no podía ser menos, Santillana (que viene a ser el brazo armado en educación del grupo Prisa - comentario a mala baba) también ha apostado por una novedosa tecnología de los 90 basada en Flash para sus libros.

Me llegan varios CD cuyo contenido es:
-rwxrwxr-x 1 root root 11183588 sep 26 10:50 a.out
-rw-r--r-- 1 root root       83 sep 26 10:21 autorun.inf
-rw-r--r-- 1 root root   292782 sep 26 10:21 browser.swf
drwxr-sr-x 4 root root    53248 sep 26 10:21 contenido
drwxr-sr-x 2 root root    36864 sep 26 10:21 curso
-rw-r--r-- 1 root root     1214 sep 26 10:21 exeBrowser.htm
-rwxr-xr-x 1 root root 11476637 sep 26 10:21 exeLinux
drwxr-sr-x 3 root root     4096 sep 26 10:21 exeMac.app
-rw-r--r-- 1 root root  5536668 sep 26 10:21 exeWin.exe
-rw-r--r-- 1 root root     1201 sep 26 10:21 lisez-moi.txt
drwxr-sr-x 2 root root     4096 sep 26 10:21 modulos
drwxr-sr-x 2 root root     4096 sep 26 10:21 recursos
drwxr-sr-x 2 root root     4096 sep 26 10:21 rr_moved
En negrita pongo lo interesante. Hay 4 opciones para lanzar la aplicación: exeLinux (para Linux), exeMac.app (para OSX), exeWin.exe (para Windows) y exeBrowser.htm (para navegadores web).

Después de copiar todo a una carpeta compartida de red (/home/..../dpto/Frances/Parachute_1) intento ejecutarlo de la forma normal, lanzando ./exeLinux. En un sistema de 32 bits se abre sin mayor problema y se ejecuta, pero en un sistema de 64 bits (y son la mayoría en nuestra red) sale esta pantalla en blanco:


Además, para ejecutarlo en 64 bits es necesario instalar antes el paquete libnss3:i386. Está claro que al ejecutable (con "file exeLinux" vemos que es de 32 bits) no le gusta nuestro sistema de 64 bits. Estuve investigando un rato si faltaba alguna librería de 32 bits en alguna ruta concreta o algo similar pero no encontré ninguna pista que me llevase a solucionarlo.

Un compañero me dijo que podía ejecutar la versión exeWin.exe mediante wine (simplemente haciendo wine /home/..../dpto/Frances/Parachute_1/exeWin.exe), ya que al parecer por esa vía funciona. Si no queda otra salida no me importa usar el maravilloso wine, pero prefiero probar otras opciones antes.

La única opción que me quedaba era la opción web, que se supone que es independiente del sistema operativo y de la arquitectura de 32/64 bits de éste. Con:
# firefox /home/..../dpto/Frances/Parachute_1/exeBrowser.htm
Se abre el navegador y se carga Flash, pero otra vez se muestra la página en blanco. Repasando notas vi el epílogo de esta entrada, en la cual comento que para ejecutar Flash con ficheros locales hay que dar permisos de forma explícita en dichas carpetas en la configuración de Flash Player.

Ya sabemos que Flash lleva dos o tres lustros teniendo problemas de seguridad y al final deben haber optado por la misma solución que Microsoft: si no podemos hacer un artefacto seguro al menos lo haremos paranoico.

¿Cómo configuramos esto?. Pues abriendo en un navegador Firefox la URL:
https://www.macromedia.com/support/documentation/es/flashplayer/help/settings_manager04.html
La cual nos carga una aplicación web que permite cambiar la configuración del Flash local de nuestro PC. Es un sistema raro de configuración pero así es como hacen las cosas los de Flash. Una vez allí, tal como contamos en la entrada anterior hacemos:

  • Primero, nos aseguramos de estar la pestaña en "Parámetros de seguridad global".
  • Marcamos "Permitir siempre".
  • Pinchamos en Editar--> Agregar--> Buscar carpeta. Le damos la ruta donde está instalado el Parachute y elegimos la carpeta. En mi caso la ruta es "/home/..../dpto/Frances).


Con esto ya podemos abrir la aplicación por web y ver que carga y ejecuta sin problema, ya que Flash tiene permiso para acceder a la ruta local donde está ubicada. Para facilitar el trabajo al usuario pongo este acceso directo en su escritorio:
# cat Parachute_1.desktop 

#!/usr/bin/env xdg-open

[Desktop Entry]
Name=Parachute 1
Version=4.1.0.0
Type=Application
Terminal=false
StartupNotify=true
Exec=firefox /home/.../dpto/Frances/ParaChute1/exeBrowser.htm
Categories=Education
Icon=/home/.../dpto/Frances/ParaChute1/recursos/intro01.jpg

Usándolo lanzamos el Firefox con la página local y con Flash ya configurado para confiar en dicha ubicación. Ahora si funciona tanto en 32 como en 64 bits.

Ya llegados aquí, estaba intrigado por averiguar dónde guarda Flash esta configuración que se edita de una manera tan rara con la URL externa https://www.macromedia.com/support/documentation/es/flashplayer/help/settings_manager04.html. No está muy documentado, pero la ruta donde se guarda esta configuración es:
~/.macromedia/Flash_Player/macromedia.com/support/flashplayer/sys/settings.sol
El fichero settings.sol está en un formato binario propio de Flash, aunque podemos husmear por encima usando la utilidad strings (ya que cat muestra un galimatías ASCII):
# strings settings.sol
Si queremos editar dicho fichero existen también herramientas que permiten leer un fichero .sol y editarlo, mirar dentro y exportarlo/importarlo a un .json. Una de ellas es Minerva, una aplicación online hecha en Flash que pinta así:


Ya para acabar, si queremos propagar esta configuración guardada de Flash a más usuarios simplemente hay que copiar el fichero settings.sol en la ruta indicada en todos sus homes, sin necesidad de ir configurando manualmente uno a uno. Hasta me ha resultado más cómodo comprimir el directorio ~/.macromedia en un .tar.gz y descomprimirlo tal cual en cada home, de tal forma que se crea el árbol de directorios de .macromedia de forma completa.

Bueno, pues hasta aquí hemos llegado con esto. Nos vemos en la siguiente aventura.

domingo, 10 de septiembre de 2017

Activar un usuario de Windows deshabilitado usando chntpw

Por imperativo legal he tenido que instalar un Windows 7 en una máquina algo antigua. Durante la instalación te pide un nombre de usuario que convertirá en el administrador de la máquina y será con el que por defecto se trabajará. El usuario por defecto es administrador, que te voy a contar...

Bueno, pues despues de hacer esto lo primero es despojar a ese usuario de trabajo de sus permisos de administrador, sacándole del grupo de "Administradores". Tras eso, en dicho grupo solo permanece el usuario "Administrador" que es creado de forma silenciosa durante la instalación. También hay que cambiar la contraseña al usuario "Administrador" por la que queramos que tenga.

Tras esto reiniciamos, vamos a la pantalla de login y vemos ambos usuarios. Pero si intentas acceder con el usuario Administrador te dice que "está deshabilitado". Agarrate: el Windows 7 te permite quedar el sistema sin un administrador válido sin avisarte de ello. ¿Ahora cómo habilito el usuario?.

Bueno, pues la solución está en arrancar con un CD/USB Live de Linux que tenga la herramienta chntpw, ya sea el CD propio o alguno que lo contenga (tipo SystemRescueCD o Ubuntu). Una vez arrancado, montamos la particion de Windows en /mnt (o equivalente) con:
# mount /dev/sda2 /mnt
Normalmente el sistema Windows a partir de su versión 7 está en la partición sda2 o sda3, siendo la sda1 una pequeña partición reservada para hacer el mal a través de UEFI o similar.

Una vez montada, hacemos una copia de seguridad del fichero de configuración de usarios (por si metemos la pata poder restaurar):
# cd /mnt/WINDOWS/System32/config
# cp SAM SAM.backup
Avisamos que alguno de los nombres anteriores podría estar en mayúscula/minúscula, en función del Windows usado.

Una vez hecha la copia de seguridad miramos el fichero con chntpw:
# chntpw /mnt/WINDOWS/System32/config/SAM
chntpw version 0.99.6 110511 , (c) Petter N Hagen

Hive  name (from header): <\SystemRoot\System32\Config\SAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c 
File size 65536 [10000] bytes, containing 5 pages (+ 1 headerpage)
Used for data: 298/27544 blocks/bytes, unused: 42/9160 blocks/bytes.


* SAM policy limits:
Failed logins before lockout is: 0
Minimum password length        : 0
Password history count         : 0
| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrador                  | ADMIN  | dis/lock |
| 01f7 | DefaultAccount                 |        | dis/lock |
| 01f5 | Invitado                       |        | dis/lock |
| 03ea | Usuario                        |        | *BLANK*  |
...
...
Como se ve, el usario Administrador está bloqueado. Para cambiar esa situación (o para borrar la contraseña si no la conocemos o la hemos olvidado), usamos el parámetro "-i" (pongo en negrita la parte interactiva):
# chntpw +i /mnt/WINDOWS/System32/config/SAM
chntpw version 0.99.6 110511 , (c) Petter N Hagen
Hive  name (from header): <\SystemRoot\System32\Config\SAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c 
File size 65536 [10000] bytes, containing 5 pages (+ 1 headerpage)
Used for data: 298/27544 blocks/bytes, unused: 42/9160 blocks/bytes.

* SAM policy limits:
Failed logins before lockout is: 0
Minimum password length        : 0
Password history count         : 0

<>========<> chntpw Main Interactive Menu <>========<>

Loaded hives: 

  1 - Edit user data and passwords
      - - -
  9 - Registry editor, now with full write support!
  q - Quit (you will be asked if there is something to save)

What to do? [1] -> 1

===== chntpw Edit User Info & Passwords ====

| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrador                  | ADMIN  | dis/lock |
| 01f7 | DefaultAccount                 |        | dis/lock |
| 01f5 | Invitado                       |        | dis/lock |
| 03ea | Usuario                        |        | *BLANK*  |

Select: ! - quit, . - list users, 0x - User with RID (hex)
or simply enter the username to change: [Administrador] ---pulso Enter---

RID     : 0500 [01f4]
Username: Administrador
fullname: 
comment : Cuenta integrada para la administracion del equipo o dominio
homedir : 

User is member of 1 groups:
00000220 = Administradores (which has 2 members)

Account bits: 0x0211 =
[X] Disabled        | [ ] Homedir req.    | [ ] Passwd not req. | 
[ ] Temp. duplicate | [X] Normal account  | [ ] NMS account     | 
[ ] Domain trust ac | [ ] Wks trust act.  | [ ] Srv trust act   | 
[X] Pwd don't expir | [ ] Auto lockout    | [ ] (unknown 0x08)  | 
[ ] (unknown 0x10)  | [ ] (unknown 0x20)  | [ ] (unknown 0x40)  | 

Failed login count: 0, while max tries is: 0
Total  login count: 1

- - - - User Edit Menu:
 1 - Clear (blank) user password
 2 - Edit (set new) user password (careful with this on XP or Vista)
 3 - Promote user (make user an administrator)
 4 - Unlock and enable user account [probably locked now]
 q - Quit editing user, back to user select
Select: [q] > 4
Unlocked!

Select: ! - quit, . - list users, 0x - User with RID (hex)
or simply enter the username to change: [Administrador] !

<>========<> chntpw Main Interactive Menu <>========<>

Loaded hives: 

  1 - Edit user data and passwords
      - - -
  9 - Registry editor, now with full write support!
  q - Quit (you will be asked if there is something to save)


What to do? [1] -> q

Hives that have changed:
 #  Name
 0  
Write hive files? (y/n) [n] : y
 0   - OK
Y ya podemos ver que está desbloqueado:
# chntpw /mnt/WINDOWS/System32/config/SAM
chntpw version 0.99.6 110511 , (c) Petter N Hagen

Hive  name (from header): <\SystemRoot\System32\Config\SAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c 
File size 65536 [10000] bytes, containing 5 pages (+ 1 headerpage)
Used for data: 298/27544 blocks/bytes, unused: 42/9160 blocks/bytes.


* SAM policy limits:
Failed logins before lockout is: 0
Minimum password length        : 0
Password history count         : 0
| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrador                  | ADMIN  |          |
| 01f7 | DefaultAccount                 |        | dis/lock |
| 01f5 | Invitado                       |        | dis/lock |
| 03ea | Usuario                        |        | *BLANK*  |
...
...
Si nos hemos fijado en un momento dado nos ha ofrecido la siguiente gama de acciones para realizar sobre el usuario:
 1 - Clear (blank) user password
 2 - Edit (set new) user password (careful with this on XP or Vista)
 3 - Promote user (make user an administrator)
 4 - Unlock and enable user account [probably locked now]
 q - Quit editing user, back to user select
Lo cual nos da una idea de la potencia del comando. Incluye incluso una opción de edición de registro que parece bastante peligrosa y de la que ya habĺe en su día para otra cosa.

Bueno, pues con el entuerto arreglado...¡feliz fin del verano!.