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

jueves, 30 de julio de 2020

Configuración de bloqueo de aplicaciones para Tablets Android.

Necesitabamos una aplicación para bloquear el Escritorio (también conocido como Launcher) de las tablets que nos enviaron al centro, para evitar en todo lo posible las manipulaciones de alumnos avispados. La idea era limitar la entrada en Configuración y en ciertas aplicaciones seleccionadas, dentro de todo el proceso de puesta en funcionamiento para uso compartido de las tablets.

Tras probar varias, la mas adecuada que encontramos el año pasado fue Smart AppLock Libre El problema de esta aplicación es que con el tiempo ha ido creciendo y añadiendo puñetas inútiles que ocultan la finalidad inicial: que si ahorrador de batería, que si limpiador de memoria, que si optimizador de aplicaciones,... vamos, enredos. Tocaba buscar otra aplicación y encontré esta AppLock Inteligente / Lock App - Smart App Locker. Como tenía buenas críticas, es gratis y no tiene publicidad, decidí instalarla.

Al abrir la aplicación tenemos una pantalla de resumen de funcionalidades:


Damos a "Comenzar":


Nos pregunta que bloqueo de acceso a las aplicaciones vamos a usar: PIN, patrón o "error" (que sería una contraseña normal y corriente alfanumérica, no sé por qué lo han traducido así). En mi caso selecciono PIN. Como siempre nos pide el PIN dos veces:


Una vez definido el patrón, podemos seleccionar las aplicaciones a bloquear:


En mi caso bloqueo esta lista:


En la parte superior derecha podemos entrar en ajustes, que como vemos son bastante sencillos:


Volvemos a la pantalla anterior y activamos la aplicación pulsando sobre "App Locker no se está ejecutando. Toca aquí para iniciar" :


Nos lleva a Configuración->Accesibilidad->Servicios Descargados y activamos el App Locker.



Nos pedirá el PIN definido anteriormente y se activará:


Y ya está. Cada vez que intentemos entrar en las aplicaciones bloqueadas nos saltará el PIN:


App Locker se arranca al iniciar Android y bloquea sin problema. Simple y sencillo, mucho más que el Smart AppLock que usábamos hasta ahora.

jueves, 23 de julio de 2020

Backup de homes a Google Drive usando rclone

Gracias al acuerdo con Google, disponemos de GSuite para toda la comunidad educativa, lo cual nos ha venido de perillas para continuar las clases durante el tiempo del confinamiento en la primera ola de COVID-19.

Una de sus ventajas es el espacio ilimitado en las cuentas de Google Drive, lo cual nos permite usarlas para hacer backups de datos contenidos en los servidores del centro y tenerlos disponibles fuera. Por ejemplo, podemos hacer un backup de nuestro home personal para tener los datos en la nube.

Para Linux no hay ningún cliente gratuito de Google Drive, pero rclone funciona bastante bien dentro de sus limitaciones. Es una aplicación multisistema, que soporta muchos tipos de nubes. La instalación se hace con los comandos:
# curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
# unzip rclone-current-linux-amd64.zip
# cd rclone-*-linux-amd64
# cp rclone /usr/bin/
# chown root:root /usr/bin/rclone
# chmod 755 /usr/bin/rclone
# mkdir -p /usr/local/share/man/man1
# cp rclone.1 /usr/local/share/man/man1/
# mandb 
Para configurarlo haremos:
# rclone config
La configuración es bastante farragosa ya que son varios pasos para conseguir las credenciales en un fichero .json que permitan a nuestro rclone acceder a nuestra cuenta de Google del dominio GSuite desde línea de comandos. Algo parecido hicimos al configurar CUPS son Google Cloud Print en una entrada anterior.

Finalizado todo el proceso, ya tenemos rclone listo para acceder a la carpeta designada de nuestra nube de drive. Hay muchos comandos disponibles, pero a mi solo me interesa "sync", que sincroniza (ojo, de forma unidireccional, solo se modifica el destino) una carpeta local con una carpeta del drive. Eso me servirá para hacer backups:
# rclone sync -P  --exclude '.*{/**,}' /home/usuario/carpeta drive:/backup
El comando subiría la carpeta /home/usuario/carpeta a la carpeta backup de Google Drive, modificando/borrando los ficheros que hubiesen cambiado desde la última ejecución del comando. El --exclude hace que se ignoren las carpetas y ficheros que comiencen por ".", que son los archivos ocultos en Unix. De esos ficheros no me interesa hacer backups.

He estado haciendo varias pruebas y aunque la primera subida se demora bastante, ya que si tenemos varias decenas o centenas de GB el proceso es lento, puedo asegurar que en las restantes ejecuciones (las que hacen la verdadera sincronización) son bastante mas rápidas. Ideal por si de repente nos confinan de nuevo poder tener los datos importantes accesibles...

Por último, no olvidar que esta sincronización se podría hacer cada cierto tiempo de forma automática usando un crontab.

miércoles, 22 de julio de 2020

Pendrive multiboot simple con ventoy

Desde hace mucho tiempo tengo un pendrive con un montón de distribuciones y herramientas Linux instaladas, como por ejemplo Manjaro, SystemRescueCD, Clonezilla, Boot-Repair-Disk, Xubuntu, etc... listo para arrancar con él y realizar mis tareas.

Hay varias utilidades para almacenar múltiples ISO en un pendrive de tal manera que salga un menú al arrancar y se pueda elegir la que queramos. Yo hasta ahora usaba multisystem. El problema es que tiene un interface de gestión bastante confuso, que no es compatible con muchas ISO y la instalación de las mismas en el pendrive es un proceso un poco lento.

Había intentado probar otras alternativas, con escaso éxito hasta que hace poco leí sobre ventoy. Al instalar ventoy en un pendrive mediante un sencillo scrip destruimos su contenido anterior, ya que crea 2 particiones: una pequeña con el software de arranque y otra con el resto del disco. En dicha partición copiaremos las ISO con las que queremos arrancar y con eso basta. El arranque desde dicho pendrive luce así:


Así de sencillo: al arrancar con el pendrive el software de arranque mira la partición con las ISOS y construye sobre la marcha un menú con todo lo que encuentra allí. He estado probando con diferentes ISO y he visto que arranca todo tipo de cosas:

  • Imágenes ISO de Linux normales: Ubuntu, Debian, Manjaro, Elementary...
  • Imágenes ISO de utilidades: Clonezilla, SystemRescueCD, Boot-Repair-Disk,...
  • Imágenes ISO de Windows (alucina vecina): Windows 10, Windows 7, GandalfPE,..

Evidentemente, no arranca todo. He podido encontrar cosas que no van (DSL Linux, ReactOS, PhoenixOS,...) pero son minoría. Y no se excluye que se añada soporte para ellas en el futuro.

¿Cómo se instala?, pues descargamos la última versión .tar.gz para Linux de aquí , haciendo luego:
# tar xfvz ventoy-1.0.15-linux.tar.gz 
# cd ventoy-1.0.15/
# ./Ventoy2Disk.sh  -I /dev/sdX
Sustituyendo /dev/sdX por la ruta del pendrive donde queremos hacer la instalación. Los datos de ese pendrive se pierden y se crea una partición en formato exFAT donde guardaremos las ISOs tal cual. Y ya está.


Existe un plugin para activar en algunas ISOs de Linux el almacenamiento persistente, pero es algo que no me interesa en este momento.

Por supuesto, la partición de las ISOs puede usarse para guardar cualquier otro tipo de ficheros mientras haya espacio, no será un pendrive que quede exclusivamente para Ventoy.

lunes, 20 de julio de 2020

Instalar DNIe español en Manjaro/Arch

Pasada mi penúltima pelea con los certificados digitales y recibiendo una sorpresa más al comprobar, en otra escaramuza posterior, que para solicitar el certificado digital por vez primera la FNMT también te obliga a usar Firefox 68 o Internet Explorer (no Edge) en el cual además el usuario raso debe configurar zonas a mano (la configuración automática no funciona las veces que he probado), me propuse ver si hacía funcionar el certificado digital del DNIe en Manjaro, usando el lector USB correspondiente. Es una tarea que he intentado varias veces en los últimos años casi siempre con mala fortuna.

Veo en AUR que hay varios paquetes con "dnie" en su nombre y que además parecen actualizados y mantenidos por sus respectivos héroes.

Los instalo con pamac:
$ pamac install ca-certificates-dnie
$ pamac install libpkcs11-dnie

Nota: el paquete libpkcs11-dnie de AUR es una adaptación del paquete Ubuntu_libpkcs11-dnie_1.5.3_amd64.deb para Ubuntu que el DNIe publica en su página de software para Linux. Entiendo que casi todos los pasos que aquí damos pueden realizarse de forma similar para Debian/Ubuntu.

El paquete ca-certificates-dnie trae todos los certificados raiz necesarios para tratar con el DNIe, mientras que libpkcs11-dnie trae las librerias de acceso al dispositivo. Al finalizar la instalación del paquete nos da unas directrices para completar la instalación a mano:
Instalando libpkcs11-dnie (1.5.3-1)...                                     [1/1]
Configurando libpkcs11-dnie...
    >>>
    >>> Installation:
    >>>
    >>> 1) If you don't already have it, enable and start pcscd: systemctl enable --now pcscd.service
    >>> 2) Connect your smartcard reader without any smartcard in it and run: pcsc_scan
    >>> 3) It should show info about your smartcard and tell you that there isn't any in it. Now insert your DNIe and it
    >>> should show info about it. Now you know that your DNIe can be read by your smartcard reader.
    >>> 4) To use your DNIe on Firefox, search for dnietif in your desktop environment applications launcher, run it
    >>> and follow instructions
    >>>
Hacemos lo que nos dice y seguimos los pasos: habilitamos y arrancamos pcscd.service...
# systemctl enable --now pcscd.service
Conectamos el lector de DNIe y hacemos pcsc_scan a ver si de detecta el dispositivo:

$ pcsc_scan 
Using reader plug'n play mechanism
Scanning present readers...
0: SCM Microsystems Inc. SCR 3310 [CCID Interface] 00 00
 
Mon Jul 20 19:46:10 2020
 Reader 0: SCM Microsystems Inc. SCR 3310 [CCID Interface] 00 00
  Event number: 0
  Card state: Card removed, 
  ....
Insertamos el DNIe con el chís y vemos como se detecta:
Mon Jul 20 19:47:14 2020
 Reader 0: SCM Microsystems Inc. SCR 3310 [CCID Interface] 00 00
  Event number: 1
  Card state: Card inserted, 
  ATR: 3B 7F 38 00 00 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00

ATR: 3B 7F 38 00 00 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00
+ TS = 3B --> Direct Convention
+ T0 = 7F, Y(1): 0111, K: 15 (historical bytes)
  TA(1) = 38 --> Fi=744, Di=12, 62 cycles/ETU
    64516 bits/s at 4 MHz, fMax for Fi = 8 MHz => 129032 bits/s
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = 00 --> Extra guard time: 0
+ Historical bytes: 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00
  Category indicator byte: 00 (compact TLV data object)
    Tag: 6, len: A (pre-issuing data)
      Data: 44 4E 49 65 20 02 4C 34 01 13
    Mandatory status indicator (3 last bytes)
      LCS (life card cycle): 03 (Initialisation state)
      SW: 9000 (Normal processing.)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 7F 38 00 00 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00
3B 7F 38 00 00 00 6A 44 4E 49 65 [12]0 02 4C 34 01 13 03 90 00
 DNI electronico (Spanish electronic ID card)
 http://www.dnielectronico.es
....
Buscamos el programa dnietif para configurar el Firefox y usarlo con el DNIe:


En el menú de aplicaciones "dnietif" aparece como "Registrar módulo PKCS#11 dnie (1.5.3)" y en realidad es un lanzador al ejecutable "/usr/share/libpkcs11-dnie/launch.pl". Este ejecutable no hace nada especial, simplemente nos abre una página web (/usr/share/libpkcs11-dnie/launch.html) con más instrucciones a realizar manualmente:


Los pasos descritos se realizarán sobre Firefox:
  • Instalación del DNI Electrónico. Para usar el DNI electrónico se requiere:
    • Instalar el Módulo de Seguridad PKCS#11
    • Para instalar el módulo PCKS#11 debe ir a Editar/Preferencias/Avanzado/Cifrado/Dispositivos de seguridad
    • Seleccione "Cargar"
    • Dele un nombre al módulo. (Por ejemplo "DNIe Modulo PKCS # 11")
    • Indique manualmente la ruta del módulo: /usr/lib/libpkcs11-dnie.so
    • Pulse el botón "Aceptar"
  • Instalar el Certificado Raíz de la Autoridad de Certificación del DNIe
    • Para instalar el certificado raíz ir a Editar/Preferencias/Avanzado/Cifrado/Ver certificados
    • Seleccione "Importar".
    • Indique manualmente la ruta del certificado raíz: /usr/share/libpkcs11-dnie/ac_raiz_dnie.crt
    • El asistente le pedirá que establezca la confianza para el certificado.
    • Marque las tres casillas de confianza.
    • Pulse el botón "Aceptar".

Una vez hecho esto, reiniciamos el navegador, vamos a "Visualizar certificados" en las Preferencias para ver el DNIe y nos pedirá el correspondiente PIN para acceder:


Y ahí está el certificado del DNIe junto con los que ya tenía antes de la FNMT:


No son pasos triviales, pero sorprendentemente y por primera vez en mucho tiempo funcionan a la primera sin mayor complicación, lo cual es todo un avance. Eso si: me preocupa que la parte de configuración del Firefox no pueda automatizarse de alguna manera... En fin, para una vez que funciona algo relacionado con la firma digital no vamos a quejarnos.

domingo, 19 de julio de 2020

Mejora de calidad en documentos escaneados

Con el asunto de la pandemia de Covid-19 muchos procesos de admisión de documentación se están realizando por medios telemáticos. La gente manda por correo o una aplicación web fotos de sus documentos realizadas con escasa pericia, usando la cámara del móvil con encuadres poco afortunados, que hacen que el documento sea ilegible y al imprimirlo gastemos tinta o tóner en cantidades vergonzosas.

La solución ideal sería escanear los documentos con un escáner auténtico o bien usar una aplicación de Android que mejore las fotos de los mismos, tipo CamScanner o JotNot, pero no es normal que los usuarios lo hagan así.

Para mejorar un poco esta situación sin tener que hacer un curso de retoque fotográfico hay varias herramientas y servicios que nos hacen un apaño, siempre que los que manejan las fotos estén interesados en guardarlas o imprimirlas con mejor calidad.

Para probar he cogido esta foto de una factura eléctrica (he quitado datos personales):


Como se puede apreciar, esta bastante mal encuadrada e iluminada.

La solución mas rápida es buscar servicios online que lo hagan. He estado usando dos:

  • IMGonline.com.ua:es una web ucraniana (eso da un poco de yuyu, pero no he visto nada raro) donde subimos la foto y se hace un procesado para limpiar la misma. Hay varios controles para ajustar el proceso, pero la verdad es que no los he usado. El resultado no está nada mal:

  • ScanWritr: es una herramienta mas completa, ya que permite además escribir encima o destacar con "rotulador fosforito virtual" el documento escaneado.


    Permite seleccionar el fragmento de imagen a procesar para quitar los bordes (incluso si está en perspectiva permite seleccionar un area con forma trapezoidal con la opción "Crop") y luego mejora el documento con la opción "Contrast". La imagen resultante podemos descargarla directamente o como PDF (le añade una marca de agua a no ser que nos suscribamos al servicio).


La otra opción es usar una aplicación de escritorio más o menos sencilla que lo haga. He encontrado dos: ScanTailor y ScanTailor-Advanced, que se supone es una mejora de la primera.

ScanTailor se puede instalar como paquete en cualquier Debian/Ubuntu, viene en los repositorios.

ScanTailor Advanced en cambio no está en los repositorios oficiales. En Manjaro si se puede instalar por AUR, pero en Ubuntu tenemos que instalar mediante un paquete snap con

# sudo snap install scantailor-advanced

El problema de los paquetes snap es que falla la ejecución si nuestros homes de usuario están en un servidor NFS (que es la forma habitual de trabajo en nuestros centros). Es un contratiempo que no acaban de arreglar los programadores del sistema de empaquetado snap.

La otra opción es descargar el paquete .deb realizado por un voluntario desde su PPA: https://notesalexp.org/. Enlace directo por si no queremos añadir el PPA.

Ambos programas tienen un entorno y manejo muy parecido, solo que el Advanced es mas atractivo visualmente y tiene mas opciones de ajuste fino. En mis pruebas rápidas no he notado diferencia apreciable entre uno y otro.

Al abrir la aplicación debemos elegir Nuevo Proyecto y luego indicar el directorio donde están las imágenes a procesar, seleccionando a continuación las que nos queramos tratar.


Despúes se van siguiendo los pasos de la izquierda (Corregir Orientación, Dividir, etc) hasta llegar a Salida, donde se procesa y muestra la imagen final:


La salida se guarda en el directorio "out" del directorio de trabajo:


Como se ve, el resultado final es más o menos el mismo para todas las herramientas probadas. Si nuestro objetivo es limpiar los documentos, que ocupen poco y que sean mas legibles e imprimibles cualquier solución nos valdrá. Para mejoras y ajustes mas finos habrá que mirar más a fondo cada solución hasta encontrar la más adecuada.

Otra opción que barajé es usar la aplicación noteshrink, que es muy potente. Tras varias pruebas me dí cuenta de que no sirve para este caso: la aplicación noteshrink tiene de entrada un documento escaneado de buena calidad y lo convierte en uno de calidad excelente, es decir: mejora lo bueno. Sobre un documento de baja calidad no hace nada destacable. Una pena.

Una vez resuelto todo, el verdadero reto es convencer a la persona que tiene que manejar los documentos para que haga el postproceso y no las guarde en formato fotocutre. Eso es otra guerra.