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

miércoles, 21 de octubre de 2020

Cuelgues en el arranque de Google Chrome

Por algún motivo desconocido nos sucede que el Google Chrome se queda a veces colgado en el arranque sin abrirse y aunque matemos todos los procesos "chrome" y empecemos de nuevo, vuelve a suceder una y otra vez.

Las sospechas se dirigen a un cierre abrupto de la sesión con Chrome abierto que ha dejado algo corrupto en su configuración o archivos temporales. También podría tener que ver que nuestros usuarios muchas veces inician sesión en distintas máquinas con un mismo home (ya que este reside en el servidor NFS) y eso provoca que compartan la configuración varias versiones de Chrome. Esta sospecha está sostenida en este problema se da más en unos usuarios que en otros.

Sabemos que hay algo mal en el perfil del usuario, pero no hemos encontrado que es. No nos queda otra que tirar de brocha gorda y borrar toda la configuración, haciendo antes backup de los marcadores pero eliminando todo lo demás. El script base es cortesía de mi compañero Julio, que es el que se ha currado el trabajo:
# cat cleanChrome.sh
#!/bin/bash
killall -9 chrome
cp  $HOME/.config/google-chrome/Default/Bookmarks /tmp/Bookmarks
rm -Rf $HOME/.cache/google-chrome
rm -Rf $HOME/.config/google-chrome
mkdir -p $HOME/.config/google-chrome/Default
cp -f /tmp/Bookmarks $HOME/.config/google-chrome/Default/Bookmarks
zenity --width 350 --info --text "Finalizado. Borrada configuración del google-chrome. Ahora puedes abrirlo."
exit 0
Con poner este script en todas las máquinas y un fichero .desktop que lo lance en el escritorio de los usuarios, tendremos una vía de salida para cuando el problema se presente, al menos mientras no encontremos una solución mas quirúrgica para eliminar aquello que provoca el cuelgue.


Hace unas horas la mision OSIRIS-REx le ha dado un piquito al asteroide Bennu y pronto estará de vuelta con las muestras: No es la primera vez que pasa esto, pero cualquier aterrizaje en un cuerpo alienígina es una proeza a tener en cuenta. Esperemos que entre las muestras no venga protomolécula.

viernes, 16 de octubre de 2020

De donde no hay no se puede sacar.

Un problema recurrente que tenemos es que algunos usuarios siguen intentado que hagamos funcionar equipos muy obsoletos con la web moderna. Por hacer una prueba real y escribir este post he cogido un portátil MSI L1350D de los que nos llegaron en 2010. Le he metido un Windows XP Home, que es un sistema operativo de 2001 que me garantiza que por si solo no va a asfixiar el ordenador. He actualizado además el XP y todos su drivers a la última versión.

Es decir vamos usar un sistema operativo de hace 19 años en un hardware de hace 10 años (que por tanto puede moverlo de sobra) para visitar la web que se usa actualmente en los centros educativos. A ver que pasa.
El ordenador tiene una CPU Intel Atom N455 (un único núcleo) con 2GB de RAM. Como vemos con el sistema recién cargado todo es bastante ligerito. Abrimos el navegador Firefox 52.9.0 ESR (el último que se publicó para Windows XP 32bits, en 2017). He probado con otros navegadores y todos dan problemas de uno u otro tipo.
Vemos que la carga de CPU está también contenida y hay memoria de sobra. Vamos a abrir el gmail, que es una de las herramientas mas usadas. Vemos que la cosa se desmadra:
Ćomo se ve, lo que sufre es la CPU. La memoria se mantiene bastante libre. Si abrimos Google Docs de nuevo se ven los picos de CPU:
Resumiendo: cualquier operación sobre aplicaciones Google (Correo, Docs, Classroom,... vamos, lo mas usado a día de hoy en los centros) con el navegador lleva la CPU por encima del 90% (con Meet no he probado porque ni siquiera es compatible con navegadores tan antiguos). El sistema no parece necesitar mas memoria para esto y no creo que el disco duro tampoco haga de cuello de botella. Es el procesador de hace 10 años el que no puede con Firefox en una web actual. Es curioso comprobar que teniendo la CPU al 90%, si ejecutamos Paint este se abre a toda velocidad mientras el navegador se asfixia. Evidentemente, no hay posibilidad de aumentar la potencia de esa CPU ni añadir núcleos.

Todo esto está probado con el navegador Firefox 52. Por ver si con un navegador más antiguo pudiera funcionar, he probado con el Firefox 30 (año 2014), pero Gmail directamente me dice que no es compatible. Con el Firefox 40 (año 2015) se abre Gmail pero en modo Vista Básica HTML, avisando de que actualice el navegador. Con este Firefox 40 podemos entrar en Google Drive, pero el uso de CPU está siempre entre 50% y 100%.

Conclusión: no hay manera humana de corregir eso. Cualquier móvil de gama baja tiene mas núcleos y velocidad de CPU que nuestro Atom. No tiene sentido que nos pidan una y otra vez cada año acelerar estas máquinas. Y aún asi las muy puñeteras siguen funcionando sin fallo, dando la impresión de que siguen operativas para un uso normal, desde luego han salido buenas.


Ayer un usuario de Reddit publicó una linda foto de la ISS en tránsito con la Luna en cuarto creciente:
Me acordé de esta otra, de un tránsito con Marte al fondo:
Y esta otra del 2009, con el transbordador Discovery acoplado a ella:
Podemos decir que están borrosas, pero es que están tomadas desde la Tierra, con ópticas modestas y por aficionados con un pulso de cirujano en un breve tiempo, ya que la IIS cruza el cielo de Este a Oeste en unos 5 minutos. Vamos, que no es un objeto precisamente estático. De ahi la proeza y la belleza de las imágenes.

jueves, 15 de octubre de 2020

Subir el volumen de archivos de vídeo

De vez en cuando me vienen con que una película tiene un volumen muy bajo y aunque se pongan todos los controles y mandos de volumen al máximo siguen sin oirse bien. El VLC tiene una funcionalidad escondida para aumentar el volumen más de lo normal, pero no confío mucho en que los usuarios lo apliquen.

La solución ideal es procesar la pelicula con ffmpeg para aumentar el volumen. El comando sería el siguiente:
#  ffmpeg -i Pelicula.mkv -af volume=4.000000 -vcodec copy Pelicula-Volumen-Alto.mkv
Lo que hacemos es aplicar un filtro que multiplique por 4 el volumen de archivo de vídeo. Luego borramos el archivo original y renombramos el recien creado. x4 es un buen valor, pero podemos subir más si no es suficiente, aunque nunca debemos perder de vista la posibilidad de que el audio se distorsione con tanta subida.

miércoles, 14 de octubre de 2020

Apagado de las redes wifi en puntos DLink con DD-WRT

Con la nueva red "educarex" de escuelas conectadas ya no necesitamos los antiguos puntos wifi DLink DIR-860L. Si los dejamos encendidos saturan el espacio radioeléctrico y ralentizan previsiblemente nuestra red.

Para evitar esto es conveniente apagar sus dos tarjetas de red, la de la red normal de 2.4Ghz y la de la red 5Ghz (no confundir con el 5G del coronavirus y el chís que nos quieren meter con la vacuna). Desde el interface web podemos apagarlas, pero no sé por que motivo a veces se encienden de nuevo y me encuentro que están emitiendo. Así que lo mejor es apagarlas por comandos, entrando por ssh al punto wifi y tecleando:
# nvram set rc_startup="ifconfig ra0 down; ifconfig ba0 down"
# nvram set cron_enable=1
# nvram set cron_jobs="00 * * * *    root   ifconfig ba0 down
00 * * * *    root   ifconfig ra0 down"
# nvram commit
Lo que hacemos es:
  • Apagar ra0 y ba0 (las 2 tarjetas de red) en cada reinicio del sistema.
  • Apagar ra0 y ba0 a cada hora en punto usando un crontab.
Creo que de esta manera lo tenemos todo apagado y si se levanta...caerá en una hora. Habrá que hacer algo útil con todos estos puntos Dlink sin uso cuando los retiremos definitivamente. Lo primero meter un OpenWRT.
El pasado septiembre la Starship SN6 hizo su segundo salto, esta vez de 150 metros de altura:



Que tiempos aquellos en que los inconscientes se reian de ese deposito de agua cilíndrico que explotaba en las pruebas de estrés de presión. Esa maravilla ha ascendido y bajado con un único motor Raptor desviado del eje de simetría de la nave (vamos, "torcido"). El software que controla ese motor para mantener el cohete en equilibrio debe ser bestial.

Configuración de red wifi educarex en sistemas Windows

Bueno, bueno, que paradón. Esta pandemia nos tiene paralizados con tanto trabajo..

Con el programa Escuelas Conectadas nos han instalado una red wifi decente en los centros educativos. Existe un SSID común llamado "educarex" al que se conectan los dispositivos. Los equipos propiedad de los centros que funcionan con Linux se configuran de forma automática mediante una tarea puppet que crea la conexión en el NetworkManager.

Para los equipos con Windows hay que crear la conexión a mano según el manual que nos han distribuido, lo que incluye instalar además un el plugin para PEAP-GTC, que es el sistema de autenticación que usa la red wifi. En Linux, Android y OSX viene de serie, pero en sistemas operativos primitivos como Windows hay que instalarlo.

Aprovecharemos también para instalar un cliente OCS-NG-Windows-Agent-Setup.exe, ya que llevamos un tiempo poniendo OCS Inventory en todas las máquinas del centro para tener un inventario actualizado.

Bueno, pues al hacer la conexión a educarex según el manual facilitado vemos que son un montón de tediosos pasos y decimos...¿todo esto voy a tener que repetirlo para cada Windows? Pues no. De eso va esta entrada del blog. Una vez hemos creado y comprobado que la conexión funciona en una máquina con Windows podemos exportarla a un fichero XML que luego restauraremos en los demás Windows desde un script. Rápido y a prueba de fallos.

El fichero XML se crea desde la consola de Windows con siguiente comando que lo coloca en la carpeta "mia":
netsh WLAN export profile name="educarex" key=clear folder="mia"
Luego ponemos en un pendrive el fichero anterior (renombrado a educarex.xml) junto con EAP-GTC-x64.msi y OCS-NG-Windows-Agent-Setup.exe, descargados de Internet. Creamos el script configura-educarex-windows.bat (mirar al final del artículo varios comentarios que hago sobre el script):
@echo off
echo Instalando software....
echo "Cambiando dominio a vguadalupe"
powershell Add-Computer -WorkGroupName "vguadalupe"
echo "OCS Inventory"
OCS-NG-Windows-Agent-Setup.exe /server="http://puppet3.educarex.es/ocsinventory" /nosoftware /tag="Windows" /now /ssl=0 /S /NOW
rem "C:\Program Files\OCS Inventory Agent>OCSInventory.exe" /force
echo "Driver Wifi"
EAP-GTC-x64.msi /quiet /norestart
echo Creando conexion "educarex"...
Netsh WLAN add profile filename="educarex.xml"
echo Terminado. Ya puede conectarse a "educarex" con las credenciales que desee.
pause
Todo junto en el pendrive queda:
configura-educarex-windows.bat
EAP-GTC-x64.msi
educarex.xml
OCS-NG-Windows-Agent-Setup.exe
Y ya está: al ejecutarlo se siguen todos los pasos y al final tenemos OCS Inventory instalado y sincronizado y, por otro lado, la conexión "educarex" lista para solo meter las credenciales (usuario/contraseña) de configuración.

Comentarios:
  • El comando powershell Add-Computer -WorkGroupName "dominio" es para poner el dominio de nuestro centro de forma adecuada en el Windows, ya que si no OCS Inventory no clasificará correctamente los datos de nuestro centro. Que cada cual ponga el suyo para no interferir con otros centros.
  • El /server="http://puppet3.educarex.es/ocsinventory" es el servidor de OCS Inventory de la red educativa. Lo especificamos como parámetro para que la instalación sea sin preguntar nada.
  • El comando EAP-GTC-x64.msi /quiet /norestart instala el plugin EAP-GTC de forma silenciosa y sin reiniciar.
  • El comando Netsh WLAN add profile filename="educarex.xml" importa la configuración sin que tengamos que hacer nosotros los pasos uno a uno. En las pruebas que he realizado los ficheros XML no parecen compatibles entre versiones de Windows (es decir, el XML de un Windows 7 n se puede importar en un 10).

Una vez acabado ya solo falta pinchar para conectarse a la red wifi educarex. Nos pedirá las credenciales y estas quedarán guardadas de forma permanente en el perfil del usuario de Windows que haya realizado la conexión.
Pedazo selfie:
La sonda china Tianwen 1 rumbo a Marte y en el camino se ha hecho un retrato con su gran angular. Afortunadamente, sigue habiendo países que apuestan por la ciencia.

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.