Linuxは全ユーザーに閲覧権限のある/etc/passwdにログイン情報が書かれています。
(スラッシュはセキュリティの都合上、全角で表記しています)
大昔は同ファイルにパスワードハッシュも書いてある時代がありましたが、セキュリティを高めるためにシャドウパスワードと呼ばれる/etc/passwdとは別に/etc/shadowにパスワードハッシュを保存するという形を取るようになりました。
ちなみにシャドウパスワードを有効化・無効化するコマンドがあります。
(おそらく使わないでしょうけど)
シャドウパスワードの有効化: pwconv
シャドウパスワードの無効化: pwunconv
john the ripperをインストール
aptコマンドでインストールします。
sudo apt update && sudo apt install john
パスワード解読のアカウントを作成
パスワード解読のデモンストレーションなので、あえてガバガバなパスワードでユーザーアカウントを作成します。
sudo useradd testuser
sudo passwd testuser
(パスワードを入力:test)
ID: testuser PW: testのアカウントができました。
/etc/shadowを解読
/etc/shadowから解読したいアカウントの行を出力させます。先ほど新規追加したアカウントを解読するため「tail -1」で一番下の行を出力しています。
sudo tail -1 /etc/shadow >
passwd
次のような文字列がカレントディレクトリのpasswdファイルに出力されます。
testuser:$6$JwHz7UVh$3hAf/Gs7/KT7C49PfTQwPdlLBCLBOv2uUoGAYpA2SzJYX2zzlgQ2SaERwOKHsCU/.NK33HfiZwkCo6fQ9LmTl0:18308:0:99999:7:::
johnで解読します。
john ./passwd

一瞬でパスワードが「test」と出ました。
パスワードの解読はデフォルトではsingle、wordlist(デフォルト:/usr/share/john/password.lst)、inclimentalの順で実行されるようです。
辞書ファイルに載っているような単語であれば、この通り一瞬で解読されてしまいます。
ちなみに環境によっては「No password hashes loaded (see FAQ)」と表示される場合があるので、その際は次のように「–format=crypt」を指定して実行します。
john passwd –format=crypt