2

我使用 losttup 在 Linux 中安装了两个 .dd 图像,并为这些图像上的每个文件创建了一个哈希值列表:

md5deep -r  -e * > winXPimage1.txt
md5deep -r  -e * > winXPimage2.txt

这就是两个哈希列表的样子:

d41d8cd98f00b204e9800998ecf8427e  /media/74444E0F444DD510/AUTOEXEC.BAT
17d7055859d99a0d606cfaf17ae38638  /media/74444E0F444DD510/boot.ini
d41d8cd98f00b204e9800998ecf8427e  /media/74444E0F444DD510/CONFIG.SYS
88cf0ff92a4a9fa7bd9b7513b2e9e22b  /media/74444E0F444DD510/Documents and Settings/…
 Etc…

这两个图像包含 Windows XP 安装文件和标准程序。然而,第二张图片也包含很多图片(jpg、png 等)。

我想使用 grep 比较我创建的两个哈希列表,并从第二张图像中过滤掉与 .jpg 文件相关的所有哈希。

我使用以下命令从第一张图片中删除了所有不必要的信息:

cut -f 1 -d ' ' winXPimage1.txt > winXPimage1New.txt

所以现在 image1 哈希列表看起来像这样:

d41d8cd98f00b204e9800998ecf8427e
17d7055859d99a0d606cfaf17ae38638
d41d8cd98f00b204e9800998ecf8427e
etc…

我正在尝试使用 grep invert 命令winXPimage1New.txtwinXPimage2.txt(包含 jpeg 哈希值)进行比较并显示所有不匹配的 jpg 哈希行:

grep -v -f winXPimage1New.txt winXPimage2.txt/*.jpg
grep -v -f .*[.jpg] winXPimage1New.txt winXPimage2.txt

这些命令都不会从第二个图像哈希列表中返回 jpg 哈希值。我只是不确定我必须将 .jpg 文件扩展名放在哪里,因为我对 Linux 非常陌生。

4

1 回答 1

2

所以你想过滤 .jpg 文件?

您能否首先仅过滤.jpg哈希列表中的文件,例如

grep -E '\.[jJ][pP][eE]?[gG]$' winXPimage1.txt >only-jpeg1.txt
grep -E '\.[jJ][pP][eE]?[gG]$' winXPimage2.txt >only-jpeg2.txt

然后在第一个系统上获取您的 md5 列表:

cut -f 1 -d ' ' only-jpeg1.txt > only-jpeg1-md5only.txt

最后尝试你的反向搜索?

grep -v -f only-jpeg1-md5only.txt only-jpeg2.txt

更新:必须编辑,因为我的前两个示例行有-v我绝对不想要的标志。被@Alex 发现了。

于 2013-10-27T19:37:36.900 回答