腳本作用:產(chǎn)生隨機(jī)密碼。每密碼字符個(gè)數(shù),密碼數(shù)量,存盤位置等可以自定義。
腳本用法:
腳本采用了硬編碼,所以你需要打開腳本,修改如下變量:
$生成密碼總個(gè)數(shù) = 1000
$每個(gè)密碼位數(shù) = 12
$存盤目錄 = 'e:/腳本ps/log_ps/'
$大文件所在盤符 = 'f:/'
并保存,然后運(yùn)行腳本,腳本運(yùn)行的較慢,可以縮小powershell窗口,n分鐘后去【$存盤目錄】收取生成的密碼
文件【小寫加數(shù)字加特殊符號(hào)密碼.txt】,【大小寫加數(shù)字密碼.txt】,【小寫加數(shù)字密碼.txt】。
提示:打入盤符+路徑+s+<tab>鍵,腳本名自動(dòng)補(bǔ)全。
全部代碼:
#本腳本會(huì)在 $存盤目錄 下生成3個(gè)文件(小寫加數(shù)字密碼.txt,大小寫加數(shù)字密碼.txt,小寫加數(shù)字加特殊符號(hào)密碼.txt)#每個(gè)文件中含有 $生成密碼總個(gè)數(shù) 個(gè)密碼。#這個(gè)腳本根據(jù)大文件作為隨機(jī)數(shù)種子,加隨機(jī)數(shù)產(chǎn)生密碼。找不到大文件將無(wú)法產(chǎn)生密碼。$生成密碼總個(gè)數(shù) = 1000$每個(gè)密碼位數(shù) = 12 $存盤目錄 = 'e:/腳本ps/log_ps/'$大文件所在盤符 = 'f:/'[array]$大文件類型 = "*.rmvb","*.mkv","*.mp4","*.avi"$小寫加數(shù)字密碼 = $存盤目錄 + '小寫加數(shù)字密碼.txt'$含大寫密碼 = $存盤目錄 + '大小寫加數(shù)字密碼.txt'$含特殊符號(hào)密碼 = $存盤目錄 + '小寫加數(shù)字加特殊符號(hào)密碼.txt'#$ErrorActionPreference = "SilentlyContinue"$最大的10個(gè)文件 = Get-ChildItem -path $大文件所在盤符 -recurse -force -Include $大文件類型 | Sort-Object length -Descending | select-object -first 10if ($最大的10個(gè)文件.Length -lt 10){ Write-Error "這個(gè)腳本根據(jù)大文件作為隨機(jī)數(shù)種子,加隨機(jī)數(shù)產(chǎn)生密碼。找不到大文件將無(wú)法產(chǎn)生密碼。" Write-Error "在 $大文件所在盤符 找不到 $大文件類型 文件,或文件總數(shù)不夠10個(gè)" exit}$密碼種子文件 = $最大的10個(gè)文件 | Get-RandomWrite-Host "這個(gè)腳本根據(jù)大文件作為隨機(jī)數(shù)種子,加隨機(jī)數(shù)產(chǎn)生密碼。找不到大文件將無(wú)法產(chǎn)生密碼。"Write-Host $密碼種子文件.FullName,$密碼種子文件.lengthmkdir $存盤目錄Write-Host "---生成的密碼個(gè)數(shù):$生成密碼總個(gè)數(shù) 生成位置:$存盤目錄 "$文件流 = new-object system.io.filestream($密碼種子文件,"open")$null = $文件流.seek(0,0)$reader = new-object System.IO.BinaryReader($文件流)$小寫字母 = "a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","v","w","x","y","z" #小寫字母沒有字母 l$數(shù)字 = "2","3","4","5","6","7","8","9" #沒有0,1$大寫字母 = "A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z" $特殊符號(hào) = "~","!","@","#","$","%","^","&","*","(",")"#大寫字母沒有字母 I,O$小寫加數(shù)字 = $小寫字母 + $數(shù)字$大小寫加數(shù)字 = $大寫字母 + $小寫字母 + $數(shù)字$含特殊符號(hào) = $小寫字母 + $數(shù)字 + $特殊符號(hào)$小寫加數(shù)字密碼個(gè)數(shù) = 0while ($小寫加數(shù)字密碼個(gè)數(shù) -lt $生成密碼總個(gè)數(shù)){ $一個(gè)密碼 = $null while ($一個(gè)密碼.length -lt $每個(gè)密碼位數(shù)) { $源自文件的隨機(jī)數(shù) = $reader.Readbyte() $ps隨機(jī)數(shù) = 1..50 | Get-Random $隨機(jī)數(shù) = $源自文件的隨機(jī)數(shù) - $ps隨機(jī)數(shù) if (($隨機(jī)數(shù) -lt 123) -and ($隨機(jī)數(shù) -ge 32) ) { $密碼字母 = [char][int]$隨機(jī)數(shù) if ($小寫加數(shù)字 -ccontains $密碼字母) { $一個(gè)密碼 = $一個(gè)密碼 + $密碼字母 } } } $結(jié)果 = $一個(gè)密碼 if ($結(jié)果 -match "[0-9]+") { #洗牌 $結(jié)果 = $結(jié)果 | Get-Random -Count $每個(gè)密碼位數(shù) $結(jié)果 >> $小寫加數(shù)字密碼 Write-Host "." -NoNewline -ForegroundColor Yellow $小寫加數(shù)字密碼個(gè)數(shù)++ }}Write-Host "`n---完成 $生成密碼總個(gè)數(shù) 個(gè)【小寫加數(shù)字】密碼創(chuàng)建---"$含大寫密碼個(gè)數(shù) = 0while ($含大寫密碼個(gè)數(shù) -lt $生成密碼總個(gè)數(shù)){ $一個(gè)密碼 = $null while ($一個(gè)密碼.length -lt $每個(gè)密碼位數(shù)) { $源自文件的隨機(jī)數(shù) = $reader.Readbyte() $ps隨機(jī)數(shù) = 110..150 | Get-Random $隨機(jī)數(shù) = $源自文件的隨機(jī)數(shù) - $ps隨機(jī)數(shù) if (($隨機(jī)數(shù) -lt 123) -and ($隨機(jī)數(shù) -ge 32) ) { $密碼字母 = [char][int]$隨機(jī)數(shù) if ($大小寫加數(shù)字 -ccontains $密碼字母) { $一個(gè)密碼 = $一個(gè)密碼 + $密碼字母 } } } $結(jié)果 = $一個(gè)密碼 if ($結(jié)果 -match "[0-9]+") { #洗牌 $結(jié)果 = $結(jié)果 | Get-Random -Count $每個(gè)密碼位數(shù) $結(jié)果 >> $含大寫密碼 Write-Host "." -NoNewline -ForegroundColor Yellow $含大寫密碼個(gè)數(shù)++ }}Write-Host "`n---完成 $生成密碼總個(gè)數(shù) 個(gè)【大寫小寫加數(shù)字】密碼創(chuàng)建---"$含特殊符號(hào)密碼個(gè)數(shù) = 0while ($含特殊符號(hào)密碼個(gè)數(shù) -lt $生成密碼總個(gè)數(shù)){ $一個(gè)密碼 = $null while ($一個(gè)密碼.length -lt $每個(gè)密碼位數(shù)) { $源自文件的隨機(jī)數(shù) = $reader.Readbyte() $ps隨機(jī)數(shù) = 1..50 | Get-Random $隨機(jī)數(shù) = $源自文件的隨機(jī)數(shù) - $ps隨機(jī)數(shù) if (($隨機(jī)數(shù) -lt 123) -and ($隨機(jī)數(shù) -ge 32) ) { $密碼字母 = [char][int]$隨機(jī)數(shù) if ($含特殊符號(hào) -ccontains $密碼字母) { $一個(gè)密碼 = $一個(gè)密碼 + $密碼字母 } } } $結(jié)果 = $一個(gè)密碼 if ($結(jié)果 -match "[0-9]+") { #洗牌 $結(jié)果 = $結(jié)果 | Get-Random -Count $每個(gè)密碼位數(shù) $結(jié)果 >> $含特殊符號(hào)密碼 Write-Host "." -NoNewline -ForegroundColor Yellow $含特殊符號(hào)密碼個(gè)數(shù)++ }}Write-Host "`n---完成 $生成密碼總個(gè)數(shù) 個(gè)【小寫加數(shù)字加特殊符號(hào)】密碼創(chuàng)建---"#Write-Host `n,$文件流.Position$文件流.Dispose()Write-Host "`n---完成3種密碼,每種: $生成密碼總個(gè)數(shù) 個(gè)密碼創(chuàng)建---`n別告訴我你缺密碼!`n勤修改密碼!"
打包下載:getpwd_jb51.rar
------【腳本特色】------
不求最快,但求真隨機(jī)。
偽隨機(jī)數(shù):
隨機(jī)密碼其實(shí)就是隨機(jī)數(shù)的組合而已,.net的隨機(jī)數(shù)生成很快很好,但也是偽隨機(jī)數(shù)。python的隨機(jī)數(shù)功能
也很快很好,但也只是偽隨機(jī)數(shù)而已。生成的都是偽隨機(jī)數(shù)。
真隨機(jī)數(shù):
沒法生成真隨機(jī)數(shù),只能【取】真隨機(jī)數(shù)。
本腳本之妙:
我寫了好幾個(gè)版本的隨機(jī)密碼生成,開始都是用【調(diào)用庫(kù),生成偽隨機(jī)數(shù)】法。后來我找到了【取真隨機(jī)數(shù)】的方法,我簡(jiǎn)直忍不住要贊美我啊,呵呵。
可以自定義隨機(jī)字符:
比如:本腳本生成器生成的隨機(jī)數(shù)中,默認(rèn)沒有0,1 , i, l,o這些容易混淆的字母。
開放源碼,無(wú)后門。
腳本缺點(diǎn):比較慢。
------【腳本原理,流程】------
腳本首先會(huì)用dir你的【$大文件所在盤符】。這一步比較慢,無(wú)權(quán)限會(huì)報(bào)錯(cuò)的信息我也沒關(guān)閉,目的是直觀。
找出【$大文件類型】定義的10個(gè)最大的文件,這些文件默認(rèn)是 "*.rmvb","*.mkv","*.mp4","*.avi"
沒錯(cuò),就是【從大電影文件中取真隨機(jī)數(shù)】!
隨機(jī)選其中一個(gè)文件,按照一定規(guī)則取數(shù),然后組合成固定長(zhǎng)度的密碼,然后再隨機(jī)打亂順序,
然后根據(jù)是否有數(shù)字,特殊符號(hào),拋棄不符合的隨機(jī)數(shù)。
本腳本另一個(gè)妙的地方是:(為了隨機(jī)故意而為的算法)
即便你鎖定(固定)輸入源,即大電影文件,
只要文檔內(nèi),字節(jié)內(nèi)容隨機(jī),產(chǎn)生的密碼就隨機(jī)。即2次運(yùn)行腳本,將產(chǎn)生2個(gè)同名文檔(當(dāng)然你要把前面的改名),對(duì)比之,發(fā)現(xiàn)生成的每個(gè)隨機(jī)數(shù)都不同。
如果文檔內(nèi),字節(jié)內(nèi)容固定,如都是00,255之類,則不會(huì)產(chǎn)生密碼。
------【最終建議】------
建議5年內(nèi)更換一次有可能泄密的帳號(hào)。如果實(shí)在不能換帳號(hào),必須5年內(nèi)登錄(使用)過1次。
超5年不換賬號(hào),不登陸的銀行卡的錢,都有可能沒了。連國(guó)家過個(gè)10年8年都更改錢的樣式。
powershell 傳教士 原創(chuàng)文章 2016-02-06 允許轉(zhuǎn)載,但必須保留名字和出處,否則追究法律責(zé)任
建議每年更換密碼,或者更短的時(shí)間更換密碼。密碼必須復(fù)雜,不同帳號(hào)的密碼絕不相同。
復(fù)雜的密碼記在電腦上,然后加密。復(fù)制3份,放在不同地方,每半年更新。
本人腳本新作【灰主牛 隱私記事本】 正在創(chuàng)作中,敬請(qǐng)期待。。。
新聞熱點(diǎn)
疑難解答
圖片精選