Changer le mot de passe du compte Harbor

    Si le service Harbour ne parvient pas à se connecter après le redémarrage, le mot de passe doit être correct, mais il ne peut pas être connecté. Comme il est déployé sur l'intranet et ne peut pas être récupéré à l'aide de boîtes aux lettres, les mesures sont modifiées directement dans la base de données Harbour. Voici le contenu des notes. 

     Il ne fait aucun doute que nous ne pouvons entrer que le mysql d'arrière-plan du port pour le modifier, mais les données ont révélé que le mot de passe du mysql dans le port est l'algorithme pbkdf2, la fonction de hachage appelée est Sha1, itérée 4096 fois et la longueur de la clé est de 16 bits de type int. Obtenu, vous ne pouvez donc pas mettre à jour avec un mot de passe en texte brut, vous devez calculer la clé via un algorithme, puis la mise à jour peut réussir.

Voici l'algorithme de calcul de clé, le calcul du texte brut est 123QWEqwe, la valeur de sel est gktqer4zml32472wmht9xeuixvg5pvjd, le nombre d'itérations est 4096, la longueur de clé est 16 bits

L'environnement en cours d'exécution est la version python 2. Remarque: Le nom du module de python 3 a été modifié et une erreur sera signalée lors de l'exécution.

import hmac 
import hashlib 
from struct import Struct 
from operator import xor 
from itertools import izip, starmap 
 
 
_pack_int = Struct ( ' > I ' ) .pack 
def pbkdf2_hex (data, salt, iterations = 4096 , keylen = 16 , hashfunc = None): 
    return pbkdf2_bin (données, sel, itérations, keylen, hashfunc) .encode ( ' hex ' ) 
def pbkdf2_bin (données, sel, itérations = 4096 , keylen = 16 , hashfunc = None): 
    hashfunc = hashfunc ou hashlib.sha1 
    mac= hmac.new (data, None, hashfunc) 
    def _pseudorandom (x, mac = mac): 
        h = mac.copy () 
        h.update (x) 
        return map (ord, h.digest ()) 
    buf = []
     for bloc dans xrange ( 1 , - (- keylen // mac.digest_size) + 1): 
        rv = u = _pseudorandom (salt + _pack_int (block))
         pour i dans xrange (itérations - 1 ): 
            u = _pseudorandom ( '' . rejoindre (map (chr, u))) 
            rv= starmap (xor, izip (rv, u)) 
        buf.extend (rv) 
    return '' . join (map (chr, buf)) [: keylen] 
rv = pbkdf2_hex ( ' 123QWEqwe ' , ' gktqer4zml32472wmht9xeuixvg5pvjd ' , 4096 , 16 ) 
print (rv)

Exécutez le fichier python directement après avoir modifié le mot de passe en texte clair et la valeur salt

# python xx.py 
500026b9f02e84d1f41e7546b9b2d524

 

Commencez à modifier le mot de passe du port maintenant

docker exec -it b07b3206fea5 / bin / bash

psql (9.6.14)
Tapez "help" pour obtenir de l'aide.

postgres = # help
Vous utilisez psql, l'interface de ligne de commande de PostgreSQL.
Tapez: \ copyright pour les conditions de distribution
\ h pour obtenir de l'aide sur les commandes SQL
\? pour obtenir de l'aide sur les commandes psql
\ g ou terminer par un point-virgule pour exécuter la requête
\ q pour quitter

postgres = # psql -U postgres -d postgres -h 127.0.0.1 -p 5432 # Entrez le client psttsql

postgres = # \ c registre # 进入 registre 数据库
Vous êtes maintenant connecté à la base de données "registre" en tant qu'utilisateur "postgres".

postgres = # select * from harbour_user; #Query all users 

# Update the user password password will be the encrypted password, salt is the salt value, which is displayed

upon the select query result postgres = # update Harbor_user set password = '500026b9f02e84d1f41e7546b9b2d524', salt = 'oafrcwi1rh83bem3cnfldltaw4cf9pqm' où username = 'admin';

postgres = # \ q #exit base de données postsql

 

Je suppose que tu aimes

Origine www.cnblogs.com/xiaoshancun/p/12743733.html
conseillé
Classement