简单直接的回答是:不能。
strings 工具不能用来恢复文件。它只是一个提取工具,而不是修复或恢复工具。
以下是详细的解释,以及如果你真的想恢复文件,应该怎么做:
strings 不能恢复文件?strings 命令的作用是扫描二进制文件(或内存转储),从中提取出可打印的字符序列(通常是 ASCII 或 Unicode 字符串)。strings 处理一个损坏的文件(比如一个损坏的 JPEG 图片或 PDF 文档)时,它会把文件里的文字(比如 “Hello World”)提取出来,但会丢弃所有的文件头、格式信息、元数据、校验码和二进制代码。举个例子:
如果你有一个损坏的 report.pdf 文件,里面有文字“季度总结”。
strings report.pdf > output.txt,你得到的 output.txt 里可能只有“季度总结”这几个字,以及 PDF 内部的代码变量名。output.txt 还原出那个可以打开的 report.pdf。strings 在“数据恢复”场景中的真正用途虽然它不能恢复文件本身,但在取证分析或极端情况下的数据抢救中很有用:
strings 可以用来从磁盘镜像(如 dd 备份的文件)中“捞”出一些有用的文本信息(如密码、日志片段、重要人名等)。strings 查看它内部包含哪些网址、IP 地址或命令行参数。根据你的具体情况,请选择以下工具:
你需要的是文件恢复工具,它们能扫描磁盘寻找未被覆盖的 inode 或文件签名。
你需要的是文件修复工具。
LibreOffice 有时能强行打开损坏的 docx/xlsx;或者尝试解压 docx 文件(它本质是 zip),修复里面的 xml。jpeginfo 检查,或用 ImageMagick (convert broken.jpg fixed.jpg) 尝试修复。VLC 播放器的“修复”功能,或 ffmpeg (ffmpeg -i broken.mp4 -c copy fixed.mp4)。iconv 转换编码。立刻断电! 不要尝试任何软件修复。
| 你的需求 | 应该使用的工具 |
|---|---|
| 从二进制文件中提取文字 | strings |
| 恢复误删除的文件 | testdisk, photorec, extundelete |
| 修复打不开的文档/图片 | LibreOffice, ffmpeg, jpeginfo |
| 分析病毒或取证 | strings, hexdump, binwalk |
结论: 不要指望用 strings 来恢复文件结构,它只能帮你“看”到文件里藏着的文字。