ユーザーアカウントとパスワードをテストするためのツール(テストログイン)


46

ええ、私はVMまたはリモートを起動してパスワードを試すことができます...私は知っています...しかし、パスワードが正しいことを確認または拒否するのに十分なログインをシミュレートするツールまたはスクリプトがありますか?

シナリオ:

サーバーサービスアカウントのパスワードは「忘れられた」...しかし、それが何であるかはわかっていると思います。資格情報を何かに渡し、「正しいパスワード」または「誤ったパスワード」でキックバックさせたい。

私は、ユーザーアカウントとパスワードが渡されるドライブマッピングスクリプトを考えて、ドライブを正常にマッピングしたかどうかを確認しましたが、正常に動作させるロジックで失われました...

-スクリプトはmsgboxを介してユーザー名を要求します-スクリプトはmsgboxを介してパスワードを要求します-スクリプトは、すべてのユーザーがアクセスできる共通の共有にドライブをマップしようとします-スクリプトが「正しいパスワード」または「間違ったパスワード"

どんな助けも感謝しています...あなたはこれをサポートするツールを必要としないまれな出来事だと思いますが...まあ....


OS どんなサービス?
クリスティアンCiupitu

@Cristian - Windowsドメインアカウントは-パスワードが正しいかどう単に検証
TheCleaner

回答:


77
runas /u:yourdomain\a_test_user notepad.exe

ユーティリティはパスワードの入力を求めます。正しいパスワードが入力されている場合はメモ帳が起動し、そうでない場合はエラー1326が生成されます。ユーザー名またはパスワードが正しくありません


1
賢いロベルト。+1
TheCleaner 14年

3
シンプル。エレガント。私はそれが好きです。
片寄った

5
驚くばかり!このソリューションには、受け入れられている答えに比べて2つの重要な利点があります。1)Windows XP +ですぐに使用でき、何もダウンロードする必要がありません。2)これに関連します。MSから提供されているため、出所不明のサードパーティツールへのパスワード。
akavel

2
Serverfault IT管理者はこれを知っていますが、ホームユーザーがWeb検索からこの回答を見つけている場合(これが最良の回答です-Windowsに付属のもののみを使用します):ホームコンピューターでは、yourdomain上記の部分がコンピューターの名前。[コントロールパネル]> [システム]で見つけます。値の1つは、文字通り「コンピューター名:」です。たとえば、コンピューターの名前が「smith-laptop」であり、ユーザー名が「joe」である場合は、実行する必要がありますrunas /u:smith-laptop\joe notepad.exe
-Daryn

1
認証に成功すると、次のようなエラーが表示される場合があります1385: Logon failure: the user has not been granted the requested logon type at this computer.
mwfearnley

11

Powershellスクリプト:

#usage: Test-UserCredential -username UserNameToTest -password (Read-Host)

Function Test-UserCredential { 
    Param($username, $password) 
    Add-Type -AssemblyName System.DirectoryServices.AccountManagement 
    $ct = [System.DirectoryServices.AccountManagement.ContextType]::Machine, $env:computername 
    $opt = [System.DirectoryServices.AccountManagement.ContextOptions]::SimpleBind 
    $pc = New-Object System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ct 
    $Result = $pc.ValidateCredentials($username, $password).ToString() 
    $Result 
} 

http://powershellcommunity.org/Forums/tabid/54/aft/8034/Default.aspx


new-object directoryservices.directoryentry "",$username,$password-戻り値、資格情報が機能する、例外、機能しない きちんとした関数にラップされているこの回答から
取得

5

以下も使用できます。

net use \\ computername \ sharename [password] / USER:] username]

リモートコンピューターにその名前の共有がある場合。または、C$アカウントが管理者である場合に使用します。


1

これを検証できる簡単なvbscript関数を作成できます。次のようなものです。

Function GoodPassword(strAdminUsername, strAdminPassword, strNTDomain)
    Const ADS_SECURE_AUTHENTICATION = 1

    On Error Resume Next
    Set objIADS = GetObject("WinNT:").OpenDSObject("WinNT://" & _
                        strNTDomain, strAdminUserame, _
                        strAdminPassword, _
                        ADS_SECURE_AUTHENTICATION)
    if err.number = 0 then
       GoodPassword = True
    Else
       GoodPassword = False
    End If
    On Error GoTO 0
End Function

ソース:

http://www.4guysfromrolla.com/webtech/061202-1.shtml

http://hsdn.net/category_3.html


これにより、「n」回ログインに失敗するとアカウントがロックアウトされます。「n」は設定したポリシーです。これは、使用するソリューションに常に当てはまります。
-mrTomahawk

また、このチェックは、ユーザー名をこのように2回指定して調整しない限り、ローカルユーザーの資格情報を無視する場合がありますOpenDSObject("WinNT://domain/userName,user","userName", "password", 1)ソース
アゴスティーノ

1

Windowsデスクトップでは、SysInternals / MS自体によってActive Directory Explorerを使用できます。

https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer


パスワードのテストケースとして、最初の「Active Directoryへの接続」プロンプトを提案していると思います-これは、私のテストから仕事をしているようです。パスワードが間違っていると、「ユーザー名またはパスワードが正しくありません」というプロンプトがすぐに表示されるため、これは、考えられるパスワードのメンタルリストを操作するGUIベースのテストです。
ジムニム

0

パスワードをテストするには、多くの有名なツールのいずれかを使用できます。私が見たのはL0phtcrackです。認証データベースのダンプを使用してオフラインでこれを行う方法もあるかもしれません。「他の世界」では、このようなものに「リッパーのジョン」を使用します。


1
パスワードを解読したり、パスワードの強度をテストしたりするのではありません。特定のアカウントに入力するパスワードがそのアカウントのパスワードかどうかを教えてくれるツールについて話している。
TheCleaner

@TheCleaner:確かに、特定のアカウントに使用可能なすべてのパスワードを含む単語リストを作成し、このリストを一連のアカウントに使用できます。または1つ... SMBまたは何かでテストするのはかなり悪い考えです。ログがいっぱいになり、ファイルサーバーへのセッションが台無しになり、DCやファイルサーバーに負荷がかかります。
ペラ

0

上記のコードを使用して、すべてのドメインアカウントが特定のパスワードを使用しているかどうかを確認します。

$usernames = Get-ADUser -Filter * | select -ExpandProperty SamAccountName

foreach ($username in $usernames) {
$password = "Password"
Add-Type -AssemblyName System.DirectoryServices.AccountManagement 
$ct = [System.DirectoryServices.AccountManagement.ContextType]::Machine, $env:computername 
$opt = [System.DirectoryServices.AccountManagement.ContextOptions]::SimpleBind 
$pc = New-Object System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ct 
$Result = $pc.ValidateCredentials("domain\$username", $password).ToString() 
If ($Result -eq "True") {echo "$username" >> C:\result.txt}
}

-1

ネットワークサービスを認証(telnet、POP、IMAP、SMTP、必要なもの)で使用しないのはなぜですか?一方、マシン上にいる場合はsu - userToTest、非プライベートアカウントから試すことができます。パスワードがOKの場合、シェルが接続を許可すると、userToTest homedirで許可されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.