tar 归档文件的 cat 显示什么?

tar 归档文件的 cat 显示什么?

我正在进行渗透测试捕获标志训练练习,发现一个名为“备份”的文件。我检查了“备份”的文件类型,发现它是 gzip 压缩的。我将其解压缩到一个名为“test”的文件。然后我做了“cat test”,发现我正在查看一个 .bashrc 文件。但我在那里没有看到任何有用的东西,所以被困住了。

最终我通过观看剧透发现文件测试的文件类型是tar存档,提取它给了我我需要的东西。

我感到困惑的是,为什么对 tar 存档执行 cat 时会显示存档中的一个随机文件(或者可能不是随机的,但可能是第一个文件),并且实际上没有任何迹象表明该文件中的内容比我所看到的更多(多得多)。这是怎么回事?cat 如何知道在一个文件之后停止?这与 tar 的编码方式有关吗?

我想了解发生了什么事。

答案1

我不会直接回答您的答案,但会为您提供工具来帮助您弄清楚发生了什么。

在进一步操作之前,我建议您制作当前.bashrc文件的备份副本,或者(最好)在您所在位置以外的另一个目录中执行以下操作$HOME

比较与实验

您可以创建文本文件的 tar 文件(未压缩)并cat对其执行操作。您将在第一行看到一些有趣的信息:将其与您的backup文件进行比较。

如果您提取非 tar 文件(例如.bashrc),您将得到以下内容:

$ tar xvf .bashrc
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

正如您所说,提取backup已工作的文件,没有警告消息或错误,看来该文件是一个 tar 存档。

file将成为你的朋友

在进行任何提取之前,您可以使用 file 命令。它将指示您文件的类型:

$ file backup.tar
backup.tar: POSIX tar archive (GNU)
$ file .bashrc
.bashrc: ASCII text

TAR:磁带存档

这听起来很明显,但 tar 是一种文件格式,过去(并且仍然)用于从其他几个完整目录创建一个文件。这允许使用磁性磁带作为保存它们的记录介质。

你有RTFM吗?

tar与往常一样,阅读和 的手册页file会有所帮助。

apropos命令也可能有帮助,因为它是本地搜索引擎。作为另一个例子,这里是如何使用它的(请注意"此处将搜索关键字分组为单个参数):

apropos "file type"

答案

最后(因为我是个好人),这里是包含 .bashrc 文件的 tar 文件内容的示例:

$ cat backup.tar | head
.bashrc0000644000175000017500000000711012770726533011656 0ustar  myusermyuser# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

相关内容