再起動後に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 '、4096、16 ) プリント(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