如何判断文件类型
利用cmd躲过肉鸡病毒防火墙的方法 因为我在学校上的是教育网。要扫国外的主机需要靠跳板。 但很多软件都已经被列为病毒! 比如:opentelnet,ca等,放到肉鸡上很可能就被杀掉....不爽 连sksockserver都被列为病毒...郁闷啊!! 经过几次尝试,我想到了一种简单的躲过杀毒软件的方法。那就是更改可执行程序的扩展名。 比如我们可以把sksockserver.exe更改为sk.jpg 这样的话,杀毒软件就查不出来了。 在直接双击执行更改过扩展名的程序时候,系统便会询问用什么方式打开,也就是说windows也认不出来。 但是我们在cmd命令行中却可以执行。是不是很神奇???而且和没改扩展名的时候效果是一样的。 不同的是,当我们要执行更改了扩展名的程序时候需要打全名(把扩展名也打上)。 下面是我在本机上安装sksockserver(sk.jpg): 首先: 我们利用没改扩展名的程序: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ e:>sksockserver -install 拒绝访问。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 这时就弹出瑞星的病毒提示,说发现病毒! 下面我们看看改过扩展名的。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ e:>sk.jpg -install snake sockproxy service installed. e:>sk.jpg -config port 1800 the port value have set to 1800 e:>sk.jpg -config starttype 2 the new starttype have set to 2 -- auto e:>net start skserver snake sockproxy service 服务正在启动 . snake sockproxy service 服务已经启动成功。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ok!成功! 现在我们不怕杀毒软件了!而其他的在命令行执行的程序也可以用这种方法。 我就不一一叙述了。 原理: 其实原理很简单,我们利用了cmd判断文件类型的方法: 在cmd中,系统首先判断文件的类型是否是执行文件, 判断方法不是文件扩展名,而是文件头的pe段。 如是执行文件,则执行它。 如不是,再根据相应的关联启动相应程序。 如没有输入扩展名,则系统将默认扩展名为bat,exe,com 依次判断。 也就是说,程序更改了扩展名后,只有cmd.exe能“认”出它来, 因为cmd不是根据扩展名来判断文件类型的。 而windows是靠扩展名来判断文件类型的. 这样,我们就可以骗过windows和杀毒软件 c语言文件类型指针是通过file*fp;这种形式进行定义的。关于file结构在vc6中有如下定义:#ifndef _file_definedstruct _iobuf { char *_ptr; //文件输入的下一个位置 int _cnt; //当前缓冲区的相对位置 char *_base; //指基础位置(即是文件的起始位置) int _flag; //文件标志 int _file; //文件描述符id int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取 int _bufsiz; //文件缓冲区大小 char *_tmpfname; //临时文件名 };typedef struct _iobuf file;#define _file_defined#endifc程序用不同的file结构管理每个文件。程序员可以使用文件,但是不需要知道file结构的细节。实际上,file结构是间接地操作系统的文件控制块(fcb)来实现对文件的操作的,如下图: 上面图中的_file实际上是一个描述符,作为进入打开文件表索引的整数。文件是存放在物理磁盘上的,包括文件控制块(fcb)和数据块。文件控制块通常包括文件权限、日期(创建、读取、修改)、拥有者、文件大小、数据块信息。数据块用来存储实际的内容。当打开一个文件时,程序会将物理磁盘上的文件数据块读入到内存,然后通过文件指针的移动读取内存中的文件数据。相关函数:file*fopen(char*file,char*open_mode);//打开文件,读文件到内存,返回文件信息结构指针intfread(chars,intsize,intnum,file*fp);//按字节读取文件内容到s中intfwrite(chars,intsize,intnum,file*fp);//按字节将s地址中的数据写到文件中char*fgets(char*s,intmax_size,file*fp);//读一行数据到缓冲区s中int fseek(file*fp,longoffset,intwhence);//移动文件指针到指定位置voidrewind(file*fp);//回到文件头longftell(file*fp);//得到当前文件偏移位置fclose(fp);//关闭文件,刷新缓存到物理磁盘上 单个未知类型文件1、下面这个压缩文件是从网上下载的,右键,解压到当前文件夹。2、解压后,只有一个文件名,没扩展名(隐藏扩展名的勾已去掉了),没图标,根本不知道是什么文件类型。3、这时该怎么办呢,不急,当然有办法,从网上下载“FileAnalysis”,这是个文件类型分析软件,无须安装,直接启动“FileAnalysis.exe”。4、打开程序窗口后,点击“打开文件”按钮。5、文件选择窗口,选择不知类型的文件“file”,点“打开”。6、加载文件后,点“分析”按钮,其实不点也行,只要加载文件后,马上会自动进行分析。分析有三项,可能性,文件类型,扩展名。经过分析,可能是7-zip类型,扩展名是7z,可能性为100%。7、看来是7z压缩文件,于是将file后缀名添加zip(添加为7z也一样),这类压缩文件zip,7z,rar,7-zip都是可以关联打开的,修改后,图标马上就变为压缩图标了。8、在file.zip上双击,这个文件就打开了,也看到里面的文件了。我用的是WinRAR压缩软件打开的。多个未知类型文件1、不止出现上面的情况,还出现了多个未知类型的文件,如下图,几个文件名字都一样,而且不知扩展名,这该怎么办呢?先不管它是什么文件类型,先把它们解压出来,全部选择后,右键,解压到指定文件夹。2、解压时,出现确认文件替换窗口,因为它们都同名,而一个文件夹中,不能有同名的文件,所以,第一个解压后,第二个就会提示确认文件替换窗口,当然不能替换,点“重命名”。3、在原来名字后,加个2即可,为了更直观,加一下划线, 再加2,其它的依此类推_3,_4,_5,_6......。解压后如下第3图。4、然后再用FileAnalysis.exe来分析,从第一个起,进行分析,这回不是100%了,而是83.3%,文件类型为RAR,扩展名也为RAR。其它类型为RBT,16.7%,这个类型,我也没见过。5、从第1个到第9个,都分析一下,都是这样的结果,看来只能以RAR类型来定,83.3%的可能性,应该不会错。提示:下面还有个DownloadRequiredReading.txt文件,这个是说明文件,而且已显示了扩展名“.txt”,所以排除。6、是不是分析出了结果,就可以打开它们了,直接添加“.rar”扩展名就可以了,根据我的经验,肯定不行,我在下载时,提示提分卷压缩文件。要如何辨别是分卷压缩文件呢,告诉大家方法,先把扩展名改为.rar,然后一个一个打开,看看 里面文件是否有箭头,如果有箭头,则表示为分卷压缩,向右的箭头表示为“未完待续”,向左的箭头表示“续接”。看来是被分割的压缩文件,分割的压缩文件要如何解压呢?肯定不能一个一个去解压,必须先给它们添加一个分卷压缩后缀“.partX”,再加“.rar”。即"文件名.partX.rar"。注释:“文件名”要一样,part表示分卷,part后面的“X”表示序号,从1开始,9个文件,也就是.part1 - .part9,rar表示为压缩文件。7、全部改好名后,选择第一个,右键,用WinRAR解压到当前文件夹,WinRAR软件会自动把这9个文件依次解压,集成一个文件或文件夹。解压成功后,我检查了一下它们的大小,9个压缩文件大小为90MB左右,解压出的文件夹为110MB左右,大小很正常,检查里面的文件,打开也正常,没有出现错误。