我的兄弟在他的计算机中有一种病毒,病毒的作用是重命名他计算机中的几乎所有文件。它也改变了文件扩展名。所以一个可能被命名为picture.jpg的文件被重命名为kjfks.doc。
所以我为解决这个问题所做的是:
从文件中删除所有文件扩展名。 (我使用递归方法搜索目录中的所有文件,当我浏览文件时删除扩展名)
现在文件没有扩展名。文件现在看起来像:
我认为这个文件名存储在由病毒创建的本地数据库中,如果我购买反病毒,它们将被重命名为原始名称。
因为我的兄弟创建了一个备份,所以我选择的文件的创建日期晚于我兄弟执行备份的时间。所以我把这些文件放在一个目录中。
只要我能看到文件的内容,我就无法获得正确的扩展名。例如,我将扫描每个文件,如果它有文本,我知道它将具有.txt扩展名。也许它是.html或.css扩展我不知道我知道。
我相信所有的pdf文件都应该有一些共同之处。或doc文件也应该有一些共同点。我如何计算最常见的类型(pdf,doc,docx,png,jpg等)文件的共同点?
编辑:
我知道可能需要更少的时间来浏览所有这200个文件并测试每个文件而不是创建此程序。只是我很好奇,看看是否有可能获得文件扩展名。
答案 0 :(得分:5)
在unix中,您可以使用file
来确定文件类型。还有一个port for windows,您可以显然编写一个脚本(批处理,powershell等)或C#程序来自动执行此操作。
答案 1 :(得分:4)
首先,祝贺你的兄弟做了备份。许多人没有,并且完全被这些问题所摧毁。
我担心你需要进行大量的研究,但是你走的正确。
使用TextReader或BinaryReader打开每个文件并检查标题。其中大多数都是可以检测到的。
例如:每个PDF都以“%PDF-”开头,然后是版本号。只需看看前5个字符。如果它是“%PDF-”,则在文件名上放置PDF并继续。
类似地:JPEG的“ÿØÿà..JFIF”,URL快捷键的“[InternetShortcut]”,常规快捷键的“L ............ ......Fƒ”( “。”是零/ null,BTW)
ZIPs /压缩目录以{0x50} {0x4B] {0x03} {0x04} {0x14}开头,您应该知道Office 2007/2010文档实际上是包含XML文件的ZIP文件。
当您找到每种类型时,您将不得不进行一些挖掘,但您应该能够编写一些内容来建立大多数文件类型。
您必须编写一些递归来处理目录,但是您可以删除任何没有扩展名的文件。
BTW - 帮助实现这一目标的一个很棒的工具是HxD:http://www.mh-nexus.de/这就是我过去常常把这个答案拉出来的。
祝你好运!答案 2 :(得分:3)
“最常见的类型”每个都有自己的格式,大多数都在文件开头附近的固定位置有一些魔术字节。您可以非常轻松地检测大多数格式。甚至HTML,XML,.CSS和类似的文本文件也可以通过分析它们的开头来检测。但是编写一个猜测格式的应用程序需要一些时间。对于某些类型(例如ODF格式或JAR格式,它们构建在常规ZIP之上),您还可以检测此格式。
但是......可以在市场上存在这样的应用吗?我猜你可以找到一些东西,如果你搜索,导致任务不像最初看起来那么棘手。