检测文件扩展名c#

检测文件扩展名c#,c#,file,file-extension,C#,File,File Extension,我哥哥的电脑里有一种病毒,病毒的作用是重命名他电脑里几乎所有的文件。它还更改了文件扩展名。例如,一个名为picture.jpg的文件被重命名为kjfks.doc 所以我为解决这个问题所做的是: 从文件中删除所有文件扩展名。(我使用递归方法搜索目录中的所有文件,并在遍历这些文件时删除扩展名) 现在这些文件没有扩展名。这些文件现在看起来像: 我认为这个文件名存储在由病毒创建的本地数据库中,如果我购买了反病毒软件,它们将重新命名为原始名称 因为我哥哥创建了备份,所以我选择了创建日期晚于我哥哥执行备份

我哥哥的电脑里有一种病毒,病毒的作用是重命名他电脑里几乎所有的文件。它还更改了文件扩展名。例如,一个名为picture.jpg的文件被重命名为kjfks.doc

所以我为解决这个问题所做的是:

从文件中删除所有文件扩展名。(我使用递归方法搜索目录中的所有文件,并在遍历这些文件时删除扩展名)

现在这些文件没有扩展名。这些文件现在看起来像:

我认为这个文件名存储在由病毒创建的本地数据库中,如果我购买了反病毒软件,它们将重新命名为原始名称

因为我哥哥创建了备份,所以我选择了创建日期晚于我哥哥执行备份时的文件。所以我把这些文件放在了一个目录中

只要我能看到文件的内容,我就不想得到正确的扩展名。例如,我将扫描每个文件,如果其中有文本,我知道它将有一个.txt扩展名。也许它是一个.html或.css扩展,我不知道我知道

我相信所有的pdf文件都应该有一些共同点。或者文档文件也应该有一些共同点。如何计算最常见的文件类型(pdf、doc、docx、png、jpg等)的共同点

编辑:

我知道它可能会花更少的时间去检查所有这200个文件并测试每个文件,而不是创建这个程序。我只是好奇地想看看是否有可能获得文件扩展名

在unix中,可以使用来确定文件的类型。还有一种方法,您可以编写脚本(批处理、powershell等)或C#程序来实现自动化。

最常见的类型都有自己的格式,大多数类型在文件开头附近的固定位置都有一些神奇的字节。您可以很容易地检测大多数格式。甚至HTML、XML、.CSS和类似的文本文件也可以通过分析它们的开头来检测。但是编写一个能够猜测格式的应用程序需要一些时间。对于某些类型(如ODF格式或JAR格式,它们构建在常规ZIP之上),您还可以检测到这种格式


但是。。。市场上是否存在这样的应用?我想你可以通过搜索找到一些东西,因为这项任务并不像最初看起来那么棘手

首先,祝贺你哥哥做了备份。许多人没有,并且完全被这些问题所消灭

恐怕你得做很多研究,但你走对了方向

用TextReader或BinaryReader打开每个文件并检查标题。其中大多数是可检测的

例如:每个PDF都以“%PDF-”开头,然后是其版本号。看看前5个字符。如果是“%PDF-”,则在文件名上放置一个PDF,然后继续

类似地,“ÿØÿa..JFIF”表示JPEG,“[InternetShortcut]”表示URL快捷方式,“L……….À……Fƒ”表示常规快捷方式(顺便说一句,“.”表示零/空)

ZIP/压缩目录以{0x50}{0x4B]{0x03}{0x04}{0x14}开头,您应该知道Office 2007/2010文档实际上是包含XML文件的ZIP

在找到每种类型时,您必须进行一些挖掘,但是您应该能够编写一些东西来建立大多数文件类型

您必须编写一些递归来遍历目录,但是您可以删除任何没有扩展名的文件

顺便说一句,HxD是一个很好的工具来帮助我们解决这个问题:这就是我用来总结这个答案的工具


祝你好运!

这很有趣。我将分析几个常见文件的前100个字节,并尝试看看是否存在模式。如果该程序不存在,我将尝试创建它!我不知道为什么我要长期运行,可能是因为它很有趣。但为什么要重新发明轮子。我从你提供的第二个链接下载了可执行文件同上。我很难传递我需要的参数。我也找不到如何使用file.exe的示例。一个简短的示例将很有帮助