Cambiar contraseña de usuario de WordPress por línea de comandos

A veces, o tal vez regularmente, me ocurre que olvido la contraseña del usuario de WordPress de un sitio web, ya sea porque no la añado al gestor de contraseñas o en el momento invento una tan complicada que solo la recuerdo los días siguientes y luego la olvido para siempre. Ante esta situación siempre termino conectándome al servidor, luego a MariaDB/MySQL y luego cambio la contraseña insertando un hash al campo de contraseña del usuario al que quiero acceder.

Lo primero será conectarnos como usuario a MariaDB/MySQL, ya sea usando el todopoderoso usuario root o el mismo usuario de la base de datos que queremos editar.

# mysql -u root -p

Ahora seleccionamos la base de datos que queremos emplear y listamos las tablas, ya que en la instalación se puede emplear un prefijo diferente. De no haber hecho esto, la tabla en cuestión será wp_users

mysql> SHOW DATABASES;
mysql> USE basededatoswp;
mysql> SHOW TABLES;

Ahora buscamos el ID del usuario que deseamos cambiar:

mysql> SELECT ID, user_login, user_pass FROM wp_users;
+----+----------------------------+------------------------------------+
| ID | user_login                 | user_pass                          |
+----+----------------------------+------------------------------------+
|  1 | administrador              | $P$BdrP021yzdWQCN4Bm0u0jIESEq4Owr/ |
|  2 | usuario1                   | $P$B05MBOShAJwRrK4kSmbaEhk1WPWQ4O0 |
+----+----------------------------+------------------------------------+

Ahora actualizaremos la contraseña nueva

mysql> UPDATE wp_users SET user_pass = MD5('contraseña') WHERE ID = 1;

Existe una sintaxis alternativa, donde solo necesitamos conocer el nombre de usuario; sin embargo, no he logrado que esta actualice la contraseña a pesar que su sintaxis es correcta

mysql> UPDATE wp_users SET user_pass = MD5('contraseña') WHERE 'user_login' = 'administrador';

Podremos verificar así

mysql> SELECT ID, user_login, user_pass FROM wp_users;
+----+----------------------------+------------------------------------+
| ID | user_login                 | user_pass                          |
+----+----------------------------+------------------------------------+
|  1 | administrador              | 890bec3121ae0e73d2a22e3dd333ae5f   |
|  2 | usuario1                   | $P$B05MBOShAJwRrK4kSmbaEhk1WPWQ4O0 |
+----+----------------------------+------------------------------------+

Como se ve, el nuevo hash de la contraseña del usuario esta en formato MD5. Ahora podremos ingresar vía wp-login.php al tablero de WordPress. Una vez ingresemos, WordPress actualizará el hash una vez más en su mezcla propia de MD5 y PHPass.

Eternamente juntos

Hoy escribo algo fuera de los tópicos usuales sobre los que me verso. Hoy dije algo que nunca debí haber dicho y que no pensé. Así que a esa persona, que ojalá algún día me lea, dejaré una copia de un poema que nos gusta a ambos. Solo recuerda que cada palabra, situación, sentimiento y todo lo que pasamos juntos fue absolutamente sincero.

“Hemos recorrido el universo durante eones,
algunas veces juntos y otras por separado.
Hemos llorado la ausencia pasajera del otro,
ocultos tras el sol de alguna lejana galaxia.

Hemos reído juntos colgados de la cola de algún cometa
y nos hemos amado ocultos tras alguna nebulosa.
Mil veces nos despedimos y otras mil nos reencontramos
y tantas otras veces pasamos uno junto al otro sin reconocernos.

Los tiempos se acortan y la evolución esta llegando a su fin,
quizás este sea nuestro ultimo viaje.
Estoy aquí, parado en este pequeño planeta
esperando que el universo disponga.

Te reconoceré, recuerdo aun tu luz, tu fragancia,
y recuerdo tu esencia que también es la mía.
Tal vez nos reencontremos en este plano,
o tal vez sea en el viaje de regreso como esferas,
viajando presurosas a través de la galaxia,
y allí juntos, jugaremos como siempre
a ver quien llega primero a nuestro hogar.”

Carlos Sigg

Actualizando el BIOS de la Lenovo ThinkCentre M92p Tiny

Utilizo varias computadoras compactas Lenovo Tiny M92p como servidores en mi casa; una como NVR, una como servidor multimedia, una como servidor de archivos y otra como servidor de pruebas. Su tamaño compacto y bajo consumo eléctrico sumado a su hardware aún decente para la época considerando que existen desde 2012 (core i5, 8 GB RAM, SSD) la hace ideal para estos menesteres.

Trasteando, como es costumbre, en estos cacharros caí en cuenta que no tenían actualizado el BIOS algunas desde 2012. Así que me puse manos a la obra con esto. Investigando en el sitio de Lenovo, encuentro que la última versión disponible es 9SKT9CA y está disponible desde el 23 de diciembre de 2018.

Al ver el listado de archivos, veo que existen varias maneras de actualizarlas. La preferida, con imágenes de CD sería la más fácil. Existe manera de actualizar también desde una instalación de Windows en la misma computadora, opción que para mí no es viable, puesto que todas tienen instalada alguna distro Linux. Por último existe un modo de actualizar desde una memoria USB.

El primer paso sería formatear la memoria USB, pero primero averiguamos donde esta el dispositivo con fdisk -l.

Disco /dev/sdb: 22.37 GiB, 24015495168 bytes, 46905264 sectores
Modelo de disco: SanDisk SSD U100
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: gpt
Identificador del disco: 1E1FA4E7-62FD-4004-850F-A96DBA93BB73

Por lo general prefiero trabajar con una memoria USB completamente vacía, por lo que primero la formateo. De hecho no estoy completamente seguro si este paso es necesario.

# mkfs.vfat -F 32 /dev/sdc1

Luego bajar la versión de CD, el archivo ISO. Podemos verificar su contenido si lo montamos. Creamos el directorio primero

# mkdir biosupdate

Luego montamos el ISO

# mount -o loop -t iso9660 9sj99cusa.iso biosupdate

Y ver su contenido con el comando ls de toda la vida.

total 21317
-r-xr-xr-x 1 root root 16450560 dic 10  2018 9sjt9ca.img
-r-xr-xr-x 1 root root   216720 jun  8  2017 afudos.exe
-r-xr-xr-x 1 root root   137968 may 17  2012 amidedos.exe
-r-xr-xr-x 1 root root       39 nov 14  2012 autoexec.bat
-r-xr-xr-x 1 root root    10289 dic 10  2018 changes.txt
-r-xr-xr-x 1 root root    63810 jul 18  2012 chglogo.exe
-r-xr-xr-x 1 root root    69014 mar 24  2012 compdos.exe
-r-xr-xr-x 1 root root   138842 jul 23  2012 flash2.exe
-r-xr-xr-x 1 root root  4722688 dic 10  2018 image9s.cap
-r-xr-xr-x 1 root root      329 abr 15  2011 logo.bat
-r-xr-xr-x 1 root root    15750 ene 27  2016 readme.txt

Ya podemos desmontar

# umount biosupdate

y eliminar el directorio que acabamos de crear.

# rmdir biosupdate

Volcamos la imagen al dispositivo /dev/sdc. Notese que no es la partición sino el dispositivo mismo.

# dd if=9sj99cusa.iso of=/dev/sdc bs=4M status=progress; sync

Una vez hecho esto, ya podemos extraer el dispositivo y conectarlo a la Lenovo M92p Tiny. Al encender debe cargar automáticamente el contenido de la memoria USB que acabamos de ingresar. En caso tal de no iniciar automáticamente, podemos presionar F12 para cargar el menú de arranque del BIOS actual o con F1 editar las opciones de arranque. Una vez inicie, se mostrará una pantalla preguntando si deseas o no actualizar el BIOS. Presionamos Y y el proceso continuará de manera automática. En este lapso la computadora reiniciará al menos 2 veces, y hay que dejarla en paz hasta que terminé el proceso.

Una vez termine, volverá a iniciar la memoria USB, pero esta vez preguntara si deseas volver a instalar el BIOS ya que detecta que es la misma versión. En este punto ya habremos terminado. Presionamos N y te llevará a un prompt de DOS. Ya podemos extraer el dispositivo y verificar entrando a la BIOS presionando F1.