用C读取指定文件的扩展名
2014-11-10 20:37
92 查看
用chkdsk命令检测磁盘后会将受损的文件修复后,放在一个文件夹里。然而修复后的文件文件名和扩展名统统丢失,只剩下一堆对用户毫无意义的序号。
如何区别这些文件呢?他们其中有视频有图片或者软件。
之前见过一款软件能“修复”特定扩展名的此种文件。
非常好奇,后来又从拖拉一些没有后缀或者后缀错误的文件到影音文件中,发现依然能识别,那么问题来了,识别信息可能就在目标文件里。
进一步的参照资料找到了答案。一般约定文件的前几个字节是扩展名。(文本文件显然不是)
最近在学PE结构,搞得头昏脑胀。转念想:为何不用已掌握的知识去熟悉一些东西呢?比如玩一下灵活的指针......
代码最终还是没有用到任何复杂的知识。
代码如下:
使用方法是将待检测文件拖到我们的程序上。
列举一个例子:
![](http://img.blog.csdn.net/20141110212705390?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFsZXJrZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
PDF
![](http://img.blog.csdn.net/20141110212639912?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFsZXJrZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
RAR
![](http://img.blog.csdn.net/20141110212804843?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFsZXJrZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
二进制可执行文件(exe,dll,等等)
![](http://img.blog.csdn.net/20141110212759706?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFsZXJrZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这个是什么?Lnk快捷方式。就是桌面上的链接。
![](http://img.blog.csdn.net/20141110213021593?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFsZXJrZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
被鉴定文件是jpeg文件。由于jpeg文件不单单使用前几个字节来描述自己,所以就成这样了。当然如果你看到这个结果还可能是别的什么文件。
如何区别这些文件呢?他们其中有视频有图片或者软件。
之前见过一款软件能“修复”特定扩展名的此种文件。
非常好奇,后来又从拖拉一些没有后缀或者后缀错误的文件到影音文件中,发现依然能识别,那么问题来了,识别信息可能就在目标文件里。
进一步的参照资料找到了答案。一般约定文件的前几个字节是扩展名。(文本文件显然不是)
最近在学PE结构,搞得头昏脑胀。转念想:为何不用已掌握的知识去熟悉一些东西呢?比如玩一下灵活的指针......
代码最终还是没有用到任何复杂的知识。
代码如下:
#include "stdio.h" int main(int argc, char** argv) { char** lujin = { 0 };//二级指针 FILE *fp=NULL; char kzm[10] = { 0 }; lujin = argv[1]; //路径错误 if (lujin==0) { printf("ERROR argv"); getchar(); return 1; } fp = fopen(lujin, "r"); //读取错误 if (fp == NULL) { printf("ERROR file"); printf("%s", lujin); getchar(); return 2; } fgets(kzm, 5, fp);//识别文件前(5—1)个字符当作扩展名 printf("%s",kzm); getchar(); fclose(fp); fp = NULL; return 0; }二级指针搞得有点昏。欠缺的东西最后还是得补回来呀。
使用方法是将待检测文件拖到我们的程序上。
列举一个例子:
RAR
二进制可执行文件(exe,dll,等等)
这个是什么?Lnk快捷方式。就是桌面上的链接。
被鉴定文件是jpeg文件。由于jpeg文件不单单使用前几个字节来描述自己,所以就成这样了。当然如果你看到这个结果还可能是别的什么文件。
相关文章推荐
- C#中读取“已注册的文件类型”的图标及读取指定文件图标的方法
- asp中用msxml的xmlhttp读取网页源文件提示系统未找到指定的资源与防火墙
- Java 小例子:按指定的编码读取文本文件内容
- 一种强行指定dll assembly读取其相应*.dll.config配置文件的方法(又名:如何创建.net 的DCOM)
- 分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里
- 从配置文件中读取自定义扩展类的模式
- [VB.NET]如何定位读取二进制文件,每次只读取指定长度?
- 读取网页上的Html源码中指定的数据写入文件
- C#中读取“已注册的文件类型”的图标及读取指定文件图标的方法
- 如何读取某个指定文件夹下所有文件,并筛选出其中的图片文件(jpeg,bmp)展示出来。
- 读取指定路径的文件及子文件夹列表
- 一个emacs扩展,从指定目录或文件中搜索指定关键字
- Java中实现读取文件指定行
- 关于ASP中按指定编码写入读取文件
- 用C#读取Excel文件:从指定单元格开始向右向下读取数据
- 全局变量的单例模式 从指定的配置文件中读取配置信息
- Java按指定行数读取文件
- web下读取EXCEL文件,用OLEDB出现未指定的错误,用ODBC出现磁盘或网络错误
- C#中读取“已注册的文件类型”的图标及读取指定文件图标的方法
- [ASP] 使用asp读取指定文件夹的文件列表(返回xml)