私は現在、プロトコルを実際に理解するためだけにライブラリを使用せずにクライアントを構築しています。計算された Auth パケットを MySQL サーバーに送信するときに、アクセス拒否の応答に混乱しています。Mysql サーバーは、テスト目的でコンピューター上で実行されている単なるローカル サーバーです。お送りする情報は以下のとおりです。
テストパスワードは「peanut」です。
ステージ 1 ハッシュ= b14ab480028768cb748fd97de56144a304eb8a1a
ステージ 2 ハッシュ= fd62797ed464c2843942a9167cc0521779d68862 - これは正しいですが、データベースに * がありません。
ソルト & ステージ 2 ハッシュ= rC8/$a?Vr\W|.jN)~cVcfd62797ed464c2843942a9167cc0521779d68862
SHA1(ソルト + ステージ 2 ハッシュ) XOR ステージ 1 ハッシュ= 4B19199ECEB929469EA89C0E942D8D5B9ACBE237
認証のためにサーバーに送信される文字列 (16 進数):
\x3A\x00\x00\x01 - 標準ヘッダー (ペイロード長 / シーケンス番号)
\x02\x04\x80\x00 - 互換性フラグ
\x00\x00\x00\x01 - 最大パケット サイズ
\x08 - 文字セット
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 - 23 バイトのフィラー
\x72\x6F\x6F\x74\x00 - ユーザー名ゼロで終了
\x14 - トークンの長さ (20 バイト)
\x4B\x19\x19\x9E\xCE\xB9\x29\x46\x9E\xA8\x9C\x0E\x94\x2D\x8D\x5B\x9A\xCB\xE2\x37 - トークン
この文字列を送信すると、サーバーはアクセスが拒否された #28000 エラーを送信するだけです。
これはアクセス権の問題でしょうか? リモートユーザーが root アクセスを取得しようとしていますが、有効にする必要があるものはありますか?
接続タイムアウト設定の wait_timeout / connect_timeout などを変更しましたが、まだ満足できません。これらは 60 秒に設定されています。
データベースではパスワードの前に * が表示されているため、アスタリスクを使用して SHA1(Salt + Stage 2 Hash) を計算する必要があるかどうかはわかりません。両方の方法を試しましたが、まだ認証されません。
私は今アイデアを使い果たしています.Mysqlサーバーが行うようにクライアントトークンを処理する別のプログラムを書くことしか考えられませんが、最初にここで再確認する.
私はしばらくの間これに取り組んできましたが、困惑しています。
どんな助けでも大歓迎です。私は通常フォーラムに投稿しないので、新しい経験です。エチケットに従わなかったら申し訳ありません。
よろしく
ジェームズ