ユーザーパスワードが指定のものかそうでないか

解決


りっぴー  2022-10-26 02:47:44  No: 150622  IP: 192.*.*.*

複数施設に端末を設置しており、ユーザー名、パスワードのルールが決まっております
ユーザー名:PC2022-USER〇〇〇
パスワード:USER〇〇〇
ユーザー名の-以降がパスワードのルールなのですが、このルールを守られているかどうかを判定したいと思っております

ユーザー名はGetUserNameで取得するとして、パスワードがUSER〇〇〇かどうやって判断するか悩んでおります、
※現在のパスワードがUSER〇〇〇になっているかの判断なので違っている場合が違うだけわかればOK

思いついたのは、NAS側にルールの通りaccountを作成して、そこのファイルにアクセスできるかどうかで
判断しようと思っているのですが、他にスマートなやり方があれば教えていただけますでしょうか。




編集 削除
take  2022-10-26 03:35:32  No: 150623  IP: 192.*.*.*

これは掲示板の管理者に依頼して削除してもらったほうがいい質問かな?

ユーザーIDを取得は出来ますが、パスワードは取得出来ません。

Windowsサインインを自分で作れば、そのパスワードが正しいか判断出来るかもしれません。
https://www.petitmonte.com/bbs/answers?question_id=29978

【問題点】
セキュリティ意識に欠けています。
簡単に推測できるユーザー名とパスワードを使用しており
さらにその法則を公のインターネット掲示板に書き込む行為を行っております。

セキュリティポリシーはないのでしょうか?

PCを紛失して誰かが拾ったときに、この法則ですぐに開けます。
WiFiやUSB、ZIPもこの法則でしょうか?

USBを紛失した会社が、パスワードの命名法則を記者会見で発表して大騒ぎになったの覚えていませんか?

書き込んだ命名規則が仮想のものと思いたいですが
この質問内容に命名規則は不要ですよね・・・

編集 削除
りっぴー  2022-10-26 04:30:28  No: 150625  IP: 192.*.*.*

take様

ユーザー名、パスワードはダミーで記載しておりますのでご安心ください
説明する際にわかりやすくするために簡易にしました。
パスワードが管理しているものと相違がないか判断できる方法はないかを考えております。

編集 削除
HFUKUSHI  2022-10-26 06:35:56  No: 150626  IP: 192.*.*.*

ローカルコンピュータの特定のユーザとそのパスワードの組み合わせが正しいかどうかを知りたい、ということでしょうかね。
Win32APIのLogonUserでできそうです。こんな感じ。

procedure TForm1.Button1Click(Sender: TObject);
var
  hToken: THandle;
begin
  if LogonUser(PChar(Edit1.Text),nil,PChar(Edit2.Text),LOGON32_LOGON_BATCH,LOGON32_PROVIDER_DEFAULT,hToken) = False then
  begin
    Label1.Caption := 'User or password is incorrect.';
    Exit;
  end;
  Label1.Caption := 'User or password is correct.';
  CloseHandle(hToken);
end;

編集 削除
take  2022-10-26 07:38:32  No: 150627  IP: 192.*.*.*

りっぴーさんへ
パスワードはダミーでしたか、それなら安心なのかな?

HFUKUSHIさんのLogonUser
本当にそんなこと出来るのかなと思いましたが
advapi32.dll 内に本当にあるんですね。

ログインに失敗してもイベントログに記録が残らないみたいですし
なんのために用意されてるんだろ

編集 削除
HFUKUSHI  2022-10-26 08:35:12  No: 150628  IP: 192.*.*.*

> なんのために用意されてるんだろ
CreateProcessAsUserとかで使うみたいです。

編集 削除
りっぴー  2022-10-27 02:23:34  No: 150640  IP: 192.*.*.*

HFUKUSHI 様

LogonUserで行けそうな気がします、ありがとうございます。

編集 削除