Expect

如何避免此錯誤“無法執行“des”:沒有這樣的文件或目錄”?

  • November 15, 2018

我正在嘗試在 Ubuntu 16.04 上的本 wiki 中概述的Expect 中進行加密。我已經安裝了tcllib

root@alarmux:/home/abdmin# apt-get install tcllib
Reading package lists... Done
Building dependency tree       
Reading state information... Done
tcllib is already the newest version (1.17-dfsg-1).
0 upgraded, 0 newly installed, 0 to remove and 77 not upgraded.

但是,當我執行我的腳本時,我得到:

couldn't execute "des": no such file or directory
   while executing
"exec echo "$pd" | des -e -k $key -b > /home/abdmin/$filename"
   (procedure "utility_encrypt" line 3)
   invoked from within
"utility_encrypt pswd encrypted_Pass"
   (file "./tclTest" line 22)

為什麼des命令不能執行?

正如評論中提到的,如果您只想避免對明文密碼進行翻牆,您可以使用簡單的編碼。例如,這是 Perl 中的一個

# Generate encoding
echo secret123 | perl -e 'chomp($passwd=<>); chomp($encoded=pack("u",$passwd));print "$encoded\n"'
)<V5C<F5T,3(S

這裡的編碼密碼secret123)<V5C<F5T,3(S.

# Restore cleartext
echo ')<V5C<F5T,3(S' | perl -e 'chomp($encoded=<>); chomp($passwd=unpack("u",$encoded)); print "$passwd\n"'
secret123

該頁面列出了多個解決方案,因此您只需要使用其中一個或其他東西,具體取決於您要執行的操作。

  1. 命令程式碼依賴於des一些名為des. 此命令不是 TCL 提供的,也不是tcllib. 它可能是曾經用於(舊的、壞的、不安全的)DES 或 3DES 加密的東西。您將需要找到該des命令或使用兼容的東西。
  2. tcllib確實提供了一個des(n)界面,但是您連結的頁面上似乎沒有記錄。再次,DES 非常弱且非常陳舊。
  3. tcllib確實提供了md5crypt(n)您連結的頁面上提到的界面。

像 PGP 之類的東西,或者bcryptscrypt可能是 DES 或 MD5 加密算法的更好選擇,儘管尚不清楚您要解決什麼問題……您是否需要 DES 才能與古老的東西兼容?這些秘密究竟是如何被使用的?

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