Я в безопасности и хочу использовать большой файл дампа паролей (3 ГБ) в рамках моих обычных проверок паролей
Файл разделен на две колонки, SHA1 и действительный пароль
Для моих целей, поскольку Windows хранит пароль в виде хешей NTLM в состоянии покоя (Kerberos используется только во время транспортировки), мне нужны пароли в NTLM, а не SHA1. (Вы можете легко доказать это, выполнив дамп пароля, я использую DSInternals)
В настоящее время я конвертирую пароли в виде открытого текста в NTLM с помощью этого сценария
#Install-Module DSInternals
Import-Module DSInternals
$reader = [System.IO.File]::OpenText("C:\...\68_linkedin_found_hash_plain.txt")
try {
for() {
$line = $reader.ReadLine()
if ($line -eq $null) { break }
$pwd = ConvertTo-SecureString $line.Split(':')[1] -AsPlainText -Force
$hash = ConvertTo-NTHash $pwd;
Add-Content C:\...\68_linkedin_ntlm.txt $hash
}
}
finally {
$reader.Close()
}
Любой очевидный способобрабатывать это быстрее? Я полагаю, что могу войти в БД и обработать ее с помощью небольшого приложения на C #, но может быть что-то быстрое и грязное?
Формат файла (нет, это не мои пароли, это пароли от общего пароляфайл дампа, который является общедоступным)
8c9fcfbf9ead0d63d04b5d3120c42cb885af899e:16piret
8c9fd045ee531744a4fdc1f52e59c3878e742ee0:louie310
8c9fd070274a0eebecf58f8f50e283bf53cec215:kery62
8c9fd08d1c17266f7c1e42a3f16a1161613c7572:sa81nt
8c9fd1093bd8592bbaea195785f8d1c81589073f:cuchilleros
8c9fd1a963bbf44ea9b531e91e5cb1b591c454cc:198962914685590
8c9fd1d8cc6d4fa8164a2fcb3adc7a45f3409547:sculp1011
8c9fd20540d66831f6f65a39ce1bca0e654fd5e6:ume1431965
8c9fd2b4a9571db21c4226bf9ecaea282ecadd5e:534015629819772
8c9fd2f3e63c20314cc962b624178ba82c6674a7:siegenthaler
8c9fd3713fe9600d2bea05b4e8cd33efe12bddb1:mkenrick
8c9fd3a39cca8fb8cdeeb52999aed7e6e9435fd3:billscot
8c9fd3b96ee1485e0fd7d6c71ffe3efd2e8a4614:ndiyehova
8c9fd43aef9804dab6e0aebc58415543175fea00:662566123
8c9fd481cf8f35edb6ebd683fffb0efce0478f21:371874conv
8c9fd4f37632294093fb057eb0168a05d9396e74:h3aww7w
8c9fd53dce9b046f73c5f298e2f694213f8f90f1:squishy23
8c9fd55206e0525d119f4946d3ae75e347cccb4b:NEH3112
8c9fd555303ac08f9103ff8451f8c05cf48cf120:marco22580
8c9fd5c6a94b1171518d0ba264033d779a075e8c:Nowornever2010
8c9fd613fb632b5bc6ae20a671aa40decdb8609a:MKSmks1976##
8c9fd627a48f9971df5bee874501156e9d3c011d:Steripro5
TIA
РЕДАКТИРОВАТЬ: чтение в память и запись в отдельные файлы немного ускоряют процесс. Также использовал предложение от TessellatingHeckler
Import-Module DSInternals
$lines = [System.IO.File]::ReadAllLines('C:\...\68_linkedin_found_hash_plain.txt')
foreach($line in $lines) {
try {
$password = $line.Substring($line.IndexOf(':')+1);
if ($password.Length -lt 128)
{
$pwd = ConvertTo-SecureString $line.Substring($line.IndexOf(':')+1) -AsPlainText -Force
$hash = ConvertTo-NTHash $pwd;
Set-Content C:\Temp\Hashes\$hash.txt $hash
}
}
finally {
}
}
После этого я могу объединить файлы с
copy *.txt combined.log