Harbourアカウントのパスワードを変更する

    再起動後にHarbourサービスがログインに失敗した場合、パスワードは正しい必要がありますが、ログインできません。これはイントラネットに展開されており、メールボックスを使用して取得できないため、Harbourデータベースで直接測定値が変更されます。メモの内容は次のとおりです。 

     ハーバーのバックグラウンドmysqlのみを入力して変更できることは間違いありませんが、ハーバーのmysqlのパスワードはpbkdf2アルゴリズムであり、呼び出されたハッシュ関数はSha1であり、4096回繰り返され、キーの長さは16ビットintであることがわかりました取得したため、プレーンテキストのパスワードでは更新できません。アルゴリズムを使用してキーを計算する必要があります。そうすると、更新が成功します。

以下はキー計算アルゴリズムです。プレーンテキストの計算は123QWEqwe、salt値はgktqer4zml32472wmht9xeuixvg5pvjd、反復数は4096、キーの長さはintタイプ16ビットです

実行環境はpython2バージョン注:python 3のモジュール名が変更され、実行時にエラーが報告されます。

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(data、salt、iterations、keylen、hashfunc).encode(' hex ' 
def pbkdf2_bin(data、salt、iterations = 4096、keylen = 16、hashfunc = None):
    hashfunc = hashfuncまたは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ブロックはxrange(1、 - ( - KEYLEN // mac.digest_size)+ 1): 
        RV = U = _pseudorandom(塩+ _pack_int(ブロック))
         のための I はxrange(反復- 1 ):
            U = _pseudorandom('' 参加する(map(chr、u)))
            rv= starmap(xor、izip(rv、u))
        buf.extend(rv)
    return ''参加(マップ(CHR、BUF)):KEYLEN] 
RV = pbkdf2_hex(' 123QWEqwe '' gktqer4zml32472wmht9xeuixvg5pvjd '409616 
プリント(RV)

クリアテキストのパスワードとソルト値を変更した直後にPythonファイルを実行する

#python 
xx.py 500026b9f02e84d1f41e7546b9b2d524

 

今すぐ港のパスワードの変更を開始します

docker exec -it b07b3206fea5 / bin / bash

psql(9.6.14)
ヘルプを表示するには、「help」と入力してください。

postgres =#help
PostgreSQLのコマンドラインインターフェイスであるpsqlを使用しています。
タイプ:\ copyright for distribution terms
\ h for help for SQL commands
\?psqlコマンドのヘルプ
\ gまたはセミコロンで終了してクエリ
\ qを実行して終了

postgres =#psql -U postgres -d postgres -h 127.0.0.1 -p 5432#psttsqlクライアントを入力

postgres =#\ c registry#進入registryデータセット库
ユーザー "postgres"としてデータベース "registry"に接続されました。

postgresの=#harbor_userから選択*; #の検索ユーザーの

ユーザーパスワードは、パスワードを使用して暗号化された#更新は、ソルトソルト値は、クエリの結果は、どちらかの選択に表示されている

のpostgres =#更新harbor_userセットのパスワード= 「500026b9f02e84d1f41e7546b9b2d524」、塩= 'oafrcwi1rh83bem3cnfldltaw4cf9pqm'ここで、username = 'admin';

postgres =#\ q #exit postsql database

 

おすすめ

転載: www.cnblogs.com/xiaoshancun/p/12743733.html