tr '[az]' '[n-za-m]'はどのように機能しますか?

tr '[az]' '[n-za-m]'はどのように機能しますか?

以下を使用して復号化できる不明瞭なメールアドレスを見つけました。

echo "[email protected]" | tr '[a-z]' '[n-za-m]'

有効なメールアドレスを出力する方法は?このコマンドは何をしていますか?

答え1

tr. のマニュアルページでは、文字をあるセットから別のセットに変換するフィルタについて詳しく説明します。指定された最初のグループはです。[a-z]これを入力する簡単な方法です[abcdefghijklmnopqrstuvwxyz]。二つ目は[n-za-m]、になることです[nopqrstuvwxyzabcdefghijklm]tr標準入力から各文字を読み、最初のグループに表示されたら、2番目のグループの同じ位置にある文字に置き換えます(これはそれ自体が置き換えられるため、含める意味はありませんが、多くの[場合]、正規表現が文字クラスを表すために文字クラスを使用してtr文字クラスが必要だと思うので、誤ってこれを行います。

より簡単な例:

$ echo abc | tr ab xy
xyc

ax、、、、最初のグループに属していないため、同じままですb。この場合、ユーザーが実行するすべての作業は、同じフィルタを介して電子メールアドレスを実行することです(対称的であるため、マップされて再マップされます)。再実行すると、すべての文字が再び自分の文字に置き換えられます。元の状態ycanna


注:各文字がアルファベットから13文字以内の文字に置き換えられるこの特殊スワップロット13(スピン13)人々が見たくないコンテンツを隠す方法として、ニュースグループで人気があります。

答え2

tr音域文字:入力の一部の文字xに対して文字yを出力します。

tr2つのコマンドラインパラメータ、「from」文字と「to」文字を使用します。

上記の例では、「from文字」がで指定されています'[a-z]'。 「文字で」はで指定されます'[n-za-m]'。一重引用符は、コマンドラインを解釈するシェルが2つの引数で何もしないようにします。tr角かっこ内の引数を範囲として扱います。したがって、'[a-z]' means "all lower case characters from 'a' to 'z', inclusive". The second argument is a bit more complicated,「[n-za-m]」とは、「n」から「z」(含む)まで、および「a」から「m」(含む)までの小文字」を意味します。

tr入力された「a」文字をすべて「n」、「b」を「m」、「c」を「o」に変換し、最大「n」文字を「z」として出力します。入力の「o」文字は、「a」、「p」から「b」、「q」から「c」などで出力されます。入力の「z」文字は「l」として出力されます。

デフォルトでは、コマンドは次のことを行います。カイザールパスワード入力時に一度に1つの小文字を入力します。誰かが暗号化する必要があります」[Eメール保護]出力した文字echo列を取得します。

関連情報