Tr

tr ’ 怎麼做a-z一種−和a-z’ ’n-z一-米n−和一種−米n-za-m’ 工作?

  • August 30, 2011

我發現了一個可以使用以下命令解密的混淆電子郵件地址:

echo "cbyrzba@cbyrzba.bet" | tr '[a-z]' '[n-za-m]'

那如何輸出一個有效的電子郵件地址?該命令在做什麼?

tr的手冊頁解釋得很好;它是一種將字元從一組轉換為另一組的過濾器。指定的第一組是[a-z],它是一種簡寫方式[abcdefghijklmnopqrstuvwxyz]。第二個是[n-za-m],變成了[nopqrstuvwxyzabcdefghijklm]tr從標準輸入讀取每個字元,如果它出現在第一組中,則將其替換為第二組中相同位置的字元(這意味著[and]正在被自己替換,因此包括它們是沒有意義的,但是很多人這樣做是錯誤的,因為正則表達式使用它們來表示字元類,所以他們認為tr需要它們)。

所以一個更簡單的例子:

$ echo abc | tr ab xy
xyc

a變成xb變成y,並c保持不變,因為它不在第一組中。在這種情況下,使用者所做的只是通過相同的過濾器執行他們的電子郵件地址(因為它是對稱的——a映射到nn返回到a等)以獲得旋轉版本;你再次執行它會將所有字元交換回它們的原始狀態


旁注:這種特殊的交換,其中每個字母被替換為字母表中距離它 13 個字元的一個,稱為ROT13(旋轉 13);它在新聞組中很流行,作為一種隱藏人們可能不想看到的東西的方式

引用自:https://unix.stackexchange.com/questions/19772