我在 Ubuntu 16.04 上使用 hashdeep 计算了文件“/etc/mtab”的 sha1 哈希值。然后我使用 sha1sum 计算了同一文件的 sha1 哈希值。结果我得到了不同的哈希值!
在计算其他文件的哈希值时,这两个程序似乎都创建了相同的哈希值。最后,我将文件复制到另一台计算机并在那里运行这两个程序。在第二台计算机上,它们都计算出了与第一台计算机上 sha1sum 计算出的相同的哈希值。最后,我在第二台计算机上(而不是复制的计算机上)使用 hashdeep 和 sha1sum 检查了文件“/etc/mtab”,结果再次不同。
使用 hashdeep 和 sha256sum 时 sha256 也是如此。
我正在hashdeep -c sha256 /etc/mtab
打电话sha256sum /etc/mtab
有人知道这是怎么发生的吗? 是否有 hashdeep 的缓存实现,因此会存储较旧的哈希值?
答案1
我刚刚在我的系统上运行了它,并且运行良好,这些是我的结果:
冉:hashdeep -c sha256 Xwrapper.config
%%%% HASHDEEP-1.0
%%%% size,sha256,filename
## Invoked from: /home/george/Documents/askubuntu
## $ hashdeep -c sha256 Xwrapper.config
##
630,c53eb030a8f9a2f7c08dd04e3611c9470f840d90d1261ef3e6643b1d1aff8608,/home/george/Documents/askubuntu/Xwrapper.config
冉:sha256sum Xwrapper.config
c53eb030a8f9a2f7c08dd04e3611c9470f840d90d1261ef3e6643b1d1aff8608 Xwrapper.config
好的,让我尽可能解释一下,在检查了几件事之后,我看到了一些关于如何hashdeep
和sha256sum
看到的东西symbolic links
。当我这样做时,stat /etc/mtab
我看到大小是19
,但是当我运行(使用l
,链接选项)时:
hashdeep -o l /etc/mtab
它什么也不返回,但如果我这样做:
hashdeep -o f /atc/mtab
它返回下面的哈希值,但请注意,其大小0
与stat /ec/mtab
之前给出的大小不同:
%%%% HASHDEEP-1.0
%%%% size,md5,sha256,filename
## Invoked from: /etc
## $ hashdeep -o lf /etc/mtab
## 0,d41d8cd98f00b204e9800998ecf8427e,e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,/etc/mtab
它将文件视为常规文件因为我使用了f
选项,因此会sha256
从一个空文件中报告或计算,而将sha256sum
其视为symbolic link
大小为的和19
。因此,简单地说,当文件是常规文件时,它会给出类似的结果,但当文件是时则不会link
。
请注意,该文件是一个链接,proc/self/mounts
其大小hashdeep
仍为0
,但被 视为stat
大小19
,因此hashdeep
可以跟踪该链接,但似乎无法读取内容或查看该文件的内容。但是,它确实将 视为/etc/vtrgb
非空文件,因此我猜/etc/mtab
链接/proc/self/mounts
很重要。
当我在另一个链接上运行它时,它变得更加有趣并证实了我对/etc/mtab
链接的怀疑:/proc/self/mounts
hashdeep /etc/vtrgb
%%%% HASHDEEP-1.0
%%%% size,md5,sha256,filename
## Invoked from: /etc
## $ hashdeep /etc/vtrgb
## 158,1fb3c13c4fcfa8cc4131aba905df559e,684cd905549f78e025870dd5c8a3835e49f79f2bb08952eb7424537f6df5fa13,/etc/vtrgb
正如你所注意到的尺寸不是零就像 和 的情况一样/etc/mtab
,并且正在运行:
sha256sum /etc/vtrgb
返回相同checksum
:
684cd905549f78e025870dd5c8a3835e49f79f2bb08952eb7424537f6df5fa13 /etc/vtrgb
进一步调查显示hashdeep
返回结果相同hash
0,d41d8cd98f00b204e9800998ecf8427e,e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
对于其中的所有文件和目录,/proc/
实际上是,pseudo filesystem
因此它们的信息存储在内存中而不是磁盘上。而对于这些相同的文件sha256sum
,则不会返回不同的值checksum
。