Al igual que cualquier administrador de sistemas que estaba convencido de la perfección de su propia memoria y la capacidad de recordar el código de instalación de Windows XP de 25 dígitos en medio de la noche, recientemente captó tal excepción.
Un buen día, cuando decidí pasar a ver qué pasa con mi controlador UniFi, recibí un mensaje sorprendente: Error de inicio de sesión.

Después de rascarse la cabeza y recordar cómo, en un momento, había olvidado el código PIN de la tarjeta, que tecleó de forma puramente mecánica, comenzó a clasificar las posibles opciones. Después de media hora de intentarlo, buscar notas en un cuaderno, revisar los escleróticos pegados al monitor, me di cuenta de que tenía que buscar soluciones.
Inmediatamente haga una reserva para que los fanáticos critiquen: se utiliza el administrador de cuentas / contraseñas, ala LastPass. De hecho, se utiliza LastPass. Y los datos de allí no contribuyeron a una autenticación exitosa.
Después de buscar en los foros burgueses, la información necesaria para restablecer la contraseña de cualquier cuenta en el controlador fue recibida, comprendida, digerida y recopilada en una breve nota.
Entonces, dado:
1. Controlador UniFi (no desempeña el papel del sistema operativo - Linux o Windows) con acceso al sistema operativo en sí.
2. Acceso a internet.
3. Brazos rectos.
El controlador UniFi almacena la configuración completa en la base de datos Mongo.
Compruebe si hay información que necesitamos para la cuenta que está buscando:
mongo --port 27117 ace --eval 'db.admin.find().forEach(printjson);'
En este caso particular, solicitamos información para la cuenta de
administrador .
Si buscamos
contabilidad VasyaPupkin
, la consulta se verá así:
mongo --port 27117 ace --eval 'db.VasyaPupkin.find().forEach(printjson);'
El escape es aproximadamente el siguiente:
MongoDB shell version: 2.6.12 connecting to: 127.0.0.1:27117/ace { "_id" : ObjectId("567bfd4fe4b0c81300ff3158"), "email" : "admin@company.com", "email_alert_enabled" : true, "email_alert_grouping_enabled" : true, "html_email_enabled" : true, "is_professional_installer" : false, "last_site_name" : "default", "name" : "admin", "requires_new_password" : false, "time_created" : NumberLong(1450966351), "ui_settings" : { "dashboardConfig" : { "dashboards" : { "5b4c57aadc236c7de53e3c3c" : { "order" : 1 } }, "lastActiveDashboardId" : "5b4c57aadc236c7de53e3c3c" }, "statisticsPreferBps" : true }, "x_shadow" : "$6$0YiSt9dQ$YrNKedOCjOP2xl3y9FhRasafdhbdfadamBKIjZ4l9Mm4cy/m49dt0bN.sYaFvgVb5vce45KypFe07iNYc1" }
Campo de interés para nosotros:
x_shadow" : "$6$0YiSt9dQ$YrNKedOCjOP2xl3y9FhRasafdhbdfadamBKIjZ4l9Mm4cy/m49dt0bN.sYaFvgVb5vce45KypFe07iNYc1"
Después del
análisis de Google
, descubrimos que el algoritmo de cifrado es compatible con la cripta (3)
SHA-512 .
Ups Dejamos de lado la idea de descifrar en el estante lejano y vamos por el otro lado.
Tenemos acceso a la base de datos, por lo que solo necesitamos un hash de la contraseña que conocemos. Y actualizar el registro en la base de datos es algo simple.
Vamos a:
Seleccionamos el algoritmo deseado, ingresamos la contraseña que usaremos:

Presione el pequeño botón azul mágico:

El hash resultante se copia cuidadosamente, luego lo necesitamos.
Y ahora es el momento del paso final:
admin.mongo --port 27117 ace --eval 'db.admin.update({name:"admin"},{$set:{x_shadow:"$6$ee74396ce4c563de$oLm93BwJywYo1sUFgX8U0FC.p75t1Jv838.0defRCe36jgX6PU3h.m3NL6tjCs8Q/1Ymtge0DXz9shb//dyEN."}})'
Redoble de tambor ... Presione Entrar.
MongoDB shell version: 2.6.12 connecting to: 127.0.0.1:27117/ace WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Vamos a la página de autenticación del controlador UniFi, ingrese el nombre de usuario:
admin (le cambiamos la contraseña), ingrese la contraseña para la que se generó el hash.
Y voila, todo funciona, hay accesos, todos están felices y bailando.