当前位置: 首页 > 科技观察

用手术刀紧急找回丢失的文件

时间:2023-03-20 22:32:59 科技观察

【.com快译】系统管理员的工作之一就是帮助用户管理他们的数据。这样做的一个重要方面是确保您的公司有一个良好的备份计划并且用户定期备份,或者定期备份是自动的。但是坏事时有发生。意外删除的文件、损坏的文件系统或丢失的分区,无论出于何种原因,备份都不包含您需要的内容。在尝试恢复丢失的数据之前,您需要找出数据丢失的原因。用户可能只是放错了文件,或者用户可能没有意识到备份。但是如果用户确实删除了没有备份的文件,就需要恢复被删除的文件。但是,如果分区表乱了,文件一点也没有丢失,你可能要考虑使用TestDisk(https://www.redhat.com/sysadmin/recover-partition-files-testdisk)来恢复分区表或分区本身。文件或分区恢复不成功,或者只恢复了一部分怎么办?这时候,Scalpel(https://github.com/sleuthkit/scalpel)就派上用场了。Scalpel根据描述独特文件类型的模式执行文件雕刻。它根据二进制字符串和正则表达式查找这些模式,并相应地提取文件。该工具目前没有维护,但一直可靠,并且可以完全按预期编译和运行。如果您运行RedHatEnterpriseLinux(RHEL)7、RHEL8或Fedora,您可以从klaatu.fedorapeople.org下载Scalpel及其依赖库的RPM安装程序。Scalpel入门Scalpel捆绑了全面的文件类型和独特的识别功能。有时文件可以通过标题和尾部的可预测文本来识别:htmn50000,有时是神秘的十六进制代码:jpgy200000000\xff\xd8\xff\xe0\x00\x10\xff\xd9Scalpel要求您复制/etc/scalpel。在conf中,编辑副本以添加要恢复的文件类型并排除不需要的文件类型。例如,如果您知道自己没有或不关心.fws文件,请在文件中注释掉该行。这样做可以加快恢复过程并减少误报。在配置文件中,文件定义的格式从左到右如下:文件扩展名。头部和尾部是否区分大小写(y或n)。希望手术刀找到最小和最安全的文件。标识文件开头的标准标头。标识文件结尾的标准尾部。页脚字段是可选的。如果未提供页脚,Scalpel将提取您设置为文件类型值的字节数。你可能会发现恢复只打捞了一部分文件,比如这个主要恢复的JPG:图1.一个不完整的JPG文件最后还可以恢复:图2.修复后的JPG文件定义一个新的文件类型首先复制手术刀配置文件。如果您的所有用户都生成相似的数据,那么您可能只需要一个资料就可以代表整个公司。或者,最好为每个部门创建一个配置文件。要将您自己的文件类型添加到Scalpel配置中,首先要进行一些调查取证分析。如果它是文本文件,则它必须具有某种可预测的结构。例如,XML文件可能以$head--bytes8example.xcf|hexdump--canonical0000000067696d7020786366|gimpxcf|00000008开头此输出来自RedHatEnterpriseLinux8系统。在较旧的系统上,可能需要较旧的语法:$head--bytes8example.xcf|hexdump-C0000000067696d7020786366|gimpxcf|00000008hexdump的标准输出在最左边的列中显示地址,在最右边的列中显示解码值。中间一列显示XCF文件***行的前8个字节的十六进制字节。/etc/scalpel.conf中的大多数二进制文件看起来与此输出类似,只是值以\x转义序列开头,表明这些数字实际上是十六进制数字。例如,配置文件中的JPG文件如下所示:jpgy200000000\xff\xd8\xff\xe0\x00\x10\xff\xd9对照系统十六进制值中任何JPG文件的前6个字节测试此值(因为这是scalpel.conf在其JPG定义中包含的字节数):$head--bytes6example.jpg||hexdump--canonical00000000ffd8ffe00010|...|00000006将尾部与***2个字节进行比较以匹配什么配置文件显示:$tail--bytes-2example.jpg|hexdump--canonical00000000ffd9|..|00000002这些值匹配,因此您可以确信有效的JPG文件可能都以可预测的顺序开始和结束。注意:scalpel.conf文件中的Ogg条目具有误导性,因为它没有\x转义序列。如果您需要恢复Ogg文件,请修复此问题或替换其定义。现在,对需要恢复的所有文件(如上例中的XCF)获得相同的置信度。重申一下,这是定义问题驱动器常见的二进制文件类型的工作流程:1.使用命令head-bytesn,获取文件类型前几个字节的十六进制值。2.使用tail--bytes-n命令获取最后几个字节。3.对多个相同类型的不同文件重复此过程以确认此模式的一致性,并根据需要调整标题和结尾模式的长度。4.在自定义Scalpel配置中输入header和trailer值,使用\x表示法将每个字节标识为十六进制字符。为每个需要恢复的重要二进制文件类型执行此操作。如果文件是纯文本,提供常用的头尾,比如shell脚本用#!/bin/sh,h1级标题的标记文件用#(#后面的空格很重要),XML文件运行时准备Scalpel,创建一个可以放置获救文件的目录:$mkdir/run/media/seth/rescuer/scalped注意:不要在包含丢失数据的同一卷上创建此目录。如果问题驱动器尚未安装,请安装它,然后运行??Scalpel:$scalpel-cmy-scalpel.conf\-o/run/media/seth/rescuer/scalped\/run/media/seth/victim在以下位置运行Scalpel:$scalpel-cmy-scalpel.conf\-o~/scalped~/victim.imgScalpel运行完毕后,查看指定rescue目录下的文件。总之,最好做好备份,这样就可以避免文件恢复。但万一发生最坏的情况,请尝试使用手术刀并仔细雕刻。原标题:用手术刀寻找丢失的文件,作者:SethKenlon