将目录中的所有文件单独压缩并用密码保护。

将目录中的所有文件单独压缩并用密码保护。

我正在使用 Ubuntu 系统下载可疑/疑似恶意软件文件进行分析。我需要压缩每个文件并对其进行密码保护,以防止在传输文件时意外感染其他系统。

答案1

这可能不是您想要的;我不太清楚您的意思?我的代码假设了 3 件事:您只有 1 个文件(或一组文件)希望放入单个存档中,您将病毒文件保存在用户的“下载”文件夹中,并且您在用户主文件夹中创建了一个名为“病毒”的文件夹,其中包含一个名为“已保存”的子文件夹;这就是完成的文件所在的位置。

运行该命令后,病毒文件将被放入受密码保护的 .zip 存档中(系统将提示您选择密码),移动到“Viruses”文件夹并重命名为virus.zip,然后移动到“Viruses/Saved”文件夹。原始病毒文件将从“下载”中删除(以及该文件夹中的任何其他内容!!!)。

当您下载另一个病毒并再次运行该命令时。当前的“virus.zip”将被命名为“virus.zip~1~”,新文件将被命名为virus.zip。如果您再次运行该命令,当前的“virus.zip”将被命名为“virus.zip~1~”,当前的“virus.zip~1~”将被命名为“virus.zip~2~”,新的病毒存档将被命名为virus.zip。每次运行该命令时都会发生这种情况。

要查看这些文件,您需要允许显示隐藏文件。要打开它们,只需将扩展名重命名为 .zip。

您可以根据需要多次运行该命令。如前所述,这仅适用于您一次下载 1 个文件的情况,否则它们将全部放在一个存档中。

脚步:

  1. 下载病毒

  2. 运行此命令:

    cd ~/Downloads && zip -e -0 Downloads * && mv *.zip ~/Viruses/virus.zip && rm * && mv --backup=t ~/Viruses/virus.zip ~/Viruses/Saved/virus.zip

  3. 重复

答案2

您有两个选择zip

  -e
  --encrypt
          Encrypt  the  contents of the zip archive using a password which
          is entered on the terminal in response to a  prompt  (this  will
          not  be  echoed;  if  standard error is not a tty, zip will exit
          with an error).  The password prompt is  repeated  to  save  the
          user from typing errors.
  -P password
  --password password
          Use password to encrypt  zipfile  entries  (if  any).   THIS  IS
          INSECURE!   Many  multi-user  operating systems provide ways for
          any user to see the current command line of any other user; even
          on  stand-alone  systems there is always the threat of over-the-
          shoulder peeking.  Storing the plaintext password as part  of  a
          command  line  in  an  automated script is even worse.  Whenever
          possible, use  the  non-echoing,  interactive  prompt  to  enter
          passwords.   (And  where security is truly important, use strong
          encryption such as Pretty Good Privacy instead of the relatively
          weak standard encryption provided by zipfile utilities.)

因此,如果您确实希望编写此脚本,则需要使用-P,因为-e强制手动输入密码。仅当您是环境中的唯一用户,或者/proc使用适当的权限安装时才这样做(即使这样,root 也可以看到密码)。此命令应该可以解决问题:

cd <path_to_directory>
find . -type f -printf "../%f.zip\0%f\0" | xargs -0n 2 zip -P pass

这将为每个文件创建 zip 文件,其名称与该文件在父目录中相同(即,blah.doc将创建blah.doc.zip),每个文件均受密码保护pass

相关内容