快速產生亂數隨機密碼

最近因為個人需求的緣故,需要能夠產生亂數隨機的密碼。

個人認為最簡單且實用的
就是利用openssl,
主要也是因為我用的Kali跟Windows,
Kali裡面已經預設安裝了openssl,
我的windows也都有安裝openssl。

產生的方法如下
不需要特殊字元的話

openssl rand -base64 12

需要特殊字元的話,可以把12改成14,最後面會有等於=的符號
(為什麼最後會有等於,想知道的話可以去看看base64原理,
如果是資安工程師,強烈建議你應該去看看為什麼)

openssl rand -base64 14

其他方法

介紹一些其他的方法,不過都是基於Linux中的。
利用sha256對時間做hash,
再把結果進行base64,
利用head取前面32個字元。

當然32可以改成任意自己想要的長度,
然後用base64的好處是有大小寫英文跟數字。

date +%s | sha256sum | base64 | head -c 32 ; echo

利用 /dev/urandom,也就是linux產生偽隨機數的dev,
產生之後利用 tr 去過濾出會需要用到的字元,
一樣再用head取前面32個字元,
其實這邊用 head -c 32 也是可以。

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;

直接對時間做md5的hash:

date | md5sum

以下還有一些其他的思路用法,
或是跟以上差不多只是有點小變化的方法:

tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1
strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
</dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c8; echo ""

如果很常用的話,也可以寫成function
輸入完以下指令之後
之後只要輸入randpw就會產生隨機密碼
其實後面{}內容都可以改成上面任意自己想要的

randpw(){ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;

不過如果是上面這種方法
bash重開之後就會沒用 留言

如果你想要一直使用的話
必須要寫到.bashrc檔案裡面
因為是隱藏檔案 要用ls -al才可以看到
然後位置會在使用者的目錄底下 也就是~/.bashrc
如果你不懂的話
簡單的方法就是
你先 cd ~ 回到當前使用者目錄
然後ls -al找到./bashrc這個檔案
用文字編輯器打開 把上面的腳本內容貼到最下面
接著存檔 再把terminal重新開啟
之後輸入randpw應該就會有用

自動產生檔案並且複製到剪貼簿

這個才是我這次研究產生亂數密碼的主要用途。
我的目的其實是這樣,
因為我常常會需要加密壓縮檔案,
可是我不太希望都用一樣的密碼,
每次自己想密碼又很麻煩,
所以打算用隨機產生密碼 。

但是產生密碼之後,因為記不起來,
所以勢必還是需要開一個文字檔在壓縮檔旁邊來保存密碼。
這次就是要寫一個腳本,
可以在當前工作目錄下隨機產生一組密碼,
然後會自動生成一個文字檔,
裡面會保存好剛剛生成好的密碼,
還有剪貼簿裡面也會有那組密碼,
這樣我接下來壓縮的過程時,
就不用再去做複製這個動作了。

關於複製到剪貼簿這個動作的指令,
研究了一下Linux的bash,
查了一些關鍵字像是bash copy stdout to clipboard,
發現沒有辦法用內建指令,只能靠下載工具。

windows的話,簡單多了,
要將stdout輸入到剪貼簿,
Windows 可以使用 C:\Windows\system32\clip.exe
利用以下方法:

echo Hello | clip

這樣就複製Hello了!

雖然上面講了內容不少,
但實際上要達到我的目的,
所需要執行的腳本內容超短,
就兩行而已啊 XDDDD

腳本如下:

openssl rand -base64 12 > passwd.txt
clip < passwd.txt

還有必須要說一下,
我已經在windows下安裝好了openssl,
所以我都是用openssl。

參考的文章來源:
https://www.howtogeek.com/howto/30184/10-ways-to-generate-a-random-password-from-the-command-line/

發佈留言