用chkdsk命令检测磁盘后会将受损的文件修复后,放在一个文件夹里。然而修复后的文件文件名和扩展名统统丢失,只剩下一堆对用户毫无意义的序号。
如何区别这些文件呢?他们其中有视频有图片或者软件。
之前见过一款软件能“修复”特定扩展名的此种文件。
非常好奇,后来又从拖拉一些没有后缀或者后缀错误的文件到影音文件中,发现依然能识别,那么问题来了,识别信息可能就在目标文件里。
进一步的参照资料找到了答案。一般约定文件的前几个字节是扩展名。(文本文件显然不是)
最近在学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文件不单单使用前几个字节来描述自己,所以就成这样了。当然如果你看到这个结果还可能是别的什么文件。